1. 配置示波器
- 將兩個表筆接觸 SCL、SDA 觸點,確認表筆都接觸上的標誌是兩個表筆都是高電平。
- 將trigger MENU中的 【觸發方式】 設置成邊沿觸發,【信源】 選擇SDA表筆,【邊沿類型】 設置成下降沿,【觸發MODE】 先變成auto,
- 將觸發點設置到偏向屏幕的左側,以便能看到更多的波形。
- SCL比SDA稍微靠上一點,容易分析。
- 發出信號,先整體觀察下整體波形。
- 【觸發MODE】變成Single,即可單次採集到波形,想再一次觸發新的波形,按SINGLE鍵。
在linux下發送i2c的波形可以使用i2cdetect工具
實例採集的是7位地址的i2c地址的波形
2. 數據規律
開始標誌 + 8位數據(7位器件地址+1個讀寫位) + 1個ACK/1個NACK + 8位有效數據 + ACK + ...
- 開始表示:SCL高電平期間SDA的下降沿
- 讀寫位:1讀,0寫
- 有效位:SCL的高電平器件,SDA的電平一定是穩定的,每個SCL高電平期間的SDA的電平表示的是各個位。依次讀即可。
3. 實例分析
如下是一個典型的波形
圖中直接讀取結果
0b 1011 1010 0 1000 0001 0
其中前八個位 0b 1011 1010,則
器件地址 0b 1011 1010 >> 1 = 0b 0101 1101 = 0x5d,
讀寫位是移出的位,0表示寫。
後邊緊跟着的0 表示的是ACK
然後緊跟着傳輸的數據 0b 1000 0001 + 一個 0作爲ACK。