2017-08-24 66 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