I2C總線通信——時序/示波器分析
通信概述
- I2C是一種芯片間的雙向數據傳輸協議。
- 只需要2根信號線:SCL:串行時鐘線;SDA:串行數據線。
時序分析
這裏以TM4C123GXL核心板及DY-Tiva-PB 擴展板和板上的TMP75數字溫度傳感器之間的I2C通訊爲例,如下圖:
總體預覽
- 理論:
------------------------------------ 圖1.針對讀取字格式的兩線制時序 -------------------------------------------- - 實際:
黃色爲SDA,綠色爲SCL。
局部分析
Frame 1和Frame 2
在SCL脈衝爲1時,讀取SDA信號。
通訊開始與結束標誌
必須滿足下圖信號形式:
SDA信號分析
接收設備地址 | 讀/寫 標識符 | 應答位 | TMP75內的寄存器位 | 應答位 |
---|---|---|---|---|
1001 000 | 0 | 0 | 000000 00 | 0 |
-
接收設備地址:這是I2C聯盟分配的地址。
-
讀/寫 標識位:1爲讀;0位寫。
-
應答位:進行I2C通信時要求每發送8位信號後,接受信號一方必須給出1個應答信號,0表示數據傳輸正常。
-
TMP75內的寄存器位:前6位000000是固定的,最後兩位P1 P0按照表1給出。
-------------------------------------------------- 表1.TMP75的指針地址 --------------------------------------------------
================================ 我是分界線 ==================================
Frame 3和Frame 4
SDA信號分析
接收設備地址 | 讀/寫 標識符 | 應答位 | 數據位 | 應答位 |
---|---|---|---|---|
1001 000 | 1 | 0 | 0010 1000 | 0 |
-
接收設備地址:這是I2C聯盟分配的地址。
-
讀/寫 標識位:1爲讀;0位寫。
-
應答位:進行I2C通信時要求每發送8位信號後,接受信號一方必須給出1個應答信號,0表示數據傳輸正常。
-
數據位:通信中真正需要傳輸的數據內容。
-
可以看到,在同一設備連續傳輸數據時,傳完8位數據後,數據傳輸並不結束,SCL和SDA都維持在0,等下一個數據位(Frame 5)。
================================ 我是分界線 ==================================
Frame 5
SDA信號分析
數據位 | 應答位 |
---|---|
0000 0000 | 1 |
- 應答位爲1,傳輸出現異常??後面通信結束。
================================ 我是分界線 =================================
我是Jesse-zwj,廈門大學本科生一枚,以上是我的日常學習心得
歡迎大家在評論區留言交流