2017-08-24 207 views
0

我有一个项目,我正在从事的工作涉及鼠标光学传感器。我有两个通信引脚(数据和时钟)是孤立的,但是我没有数据表,我一直在试图弄清楚这个问题。我终于得到了使用我的微控制器的协议的一个体面的捕获 - 虽然它不完全同步,分辨率应该足够高,以确定发生了什么 - 每个采样,然后延迟~4us反向工程协议

由于我看着这些数据,我发现数据线有时会在时钟不动的时候移动 - 而且数据线看起来比时钟更加一致,这让我相信我对数据和时钟的假设可能已经落后了。然而,当数据不存在时,我也会看到时钟线在移动 - 这对我的猜想没有任何意义。

我期待在这里看到的东西 - 虽然我对这个协议的设置方式越来越不自信 - 是一些关于特定注册信息的请求,然后是该信息的返回。也许在通信开始时也有配对或初始化(这是捕获开始的地方)。

我真的很感谢一些帮助,弄清楚这里发生了什么,因为我对此很新,而且完全失败了。

数据以CSV格式在这里找到:https://pastebin.com/h9Hx1dyw

第50行只是原始粘贴在这里,因为网站不会让我问我的问题没有一些代码:

Time Index,Data,Clock 
0,0,1 
1,1,1 
2,1,1 
3,1,1 
4,1,1 
5,1,1 
6,1,1 
7,1,1 
8,1,1 
9,1,1 
10,1,1 
11,1,1 
12,1,1 
13,1,1 
14,1,1 
15,1,1 
16,1,1 
17,1,1 
18,1,1 
19,1,1 
20,1,1 
21,1,1 
22,1,1 
23,1,1 
24,1,1 
25,1,1 
26,1,1 
27,1,1 
28,1,1 
29,1,1 
30,1,1 
31,1,1 
32,1,1 
33,1,1 
34,1,1 
35,1,1 
36,1,1 
37,1,1 
38,1,1 
39,1,1 
40,1,1 
41,1,1 
42,1,1 
43,1,1 
44,1,1 
45,1,1 
46,1,1 
47,1,1 
48,1,1 
49,1,1 
50,1,1 
+0

https://reverseengineering.stackexchange.com/ –

回答

1

我会使用gtkwave来分析你的样本,事实上我做过,它支持.vcd文件作为输入,这似乎很容易生成。

有到.csv文件转换为.vcdcsv2vcd的工具,但你的CSV首先需要一些格式化,我用命令awk,到第一列移动到最后的,它的值转换为微秒“我们”(时刻0虽然需要在秒,后缀的',或csv2vcd会失败)

cat input.csv | awk -F',' 'FNR==1{print $2","$3","$1; next}{print $2 "," $3 "," ($1*4)".0 us"}' >output.vcd 

output.csv需要手动编辑然后,像

"d0","d1","Time" 
0,1,0.0 s 
1,1,4.0 us 
... 

删除最后一行在文件中或csv2vcd将失败(D0D1是,例如,我认为,只要你喜欢,你可以为它们命名)

此时您可以将VCD文件加载到gtkwave,信号拖到时间(这是至少在linux中的工作原理)并分析你的样本。

您可以使用组合向上/向下(多次)将位组合成两位,一个半字节,一个字节等。我试着用你的数据,但没有解码协议(ack/nack/stop/sync /无论什么位)似乎都没用。

但事情是vcd文件可能更复杂,包含更多的数据,请参阅屏幕截图there为解码数据和协议的例子。

这可能是对你有用,如果你要去尝试解码协议,以验证解码器,请参阅本模块decode_i2c.cc从从I2C 2位输入创建VCD文件ArduLogic项目。

+0

真的很感激SOMEBODY努力帮助我的事实。享受你的赏金,我的朋友。 – Helpful

+0

@非常感谢,抱歉帮不上忙,我偷看了一下比特流,但对我来说看起来并不像i2c或任何我知道的东西(虽然我可能是错的),[there](https:// pastebin .com/Yp9LXSDg)你的csv文件转换为vcd和编码的base64,你需要解码它,如果你想加载它在gtkwave – Alex