IIC通信協議采用2條信號線,1條時鐘線(SCL)和1條數據線(SDA),屬於串行半雙工通信。標準模式的傳輸速率為100Kb/s,快速模式為400Kb/s。總線上可以接多個從設備,從設備的地址必須不同。也可也接多個主設備,但同壹時刻只能有壹個主設備控制總線。最大設備數量受總線的最大負載電容400pf限制。
每個從設備有自己的設備地址,主設備發送START信號後,緊跟著發送想要通信的從設備地址字節,7位器件地址+1位讀寫標誌位(0為寫,1為讀)。
START信號:當時鐘線為高時,數據線下跳會產生啟動信號。
STOP信號:當時鐘線為高時,數據線上跳會產生停止信號。
1.總線空閑時,就是總線上所有器件都釋放了總線,此時SCL和SDA因為有上拉電阻都為高電平。
2.主設備檢測到總線當前處於空閑時,此時可以發START信號獲得總線得控制權。
3.主設備通信完成後,發送STOP信號釋放總線,總線處於空閑狀態。
1. 主控檢測到總線處於空閑時,首先發送壹個START信號來控制總線,此時總線進入忙狀態;
2. 主控發送壹個設備地址字節,總線上所有的從設備都會收到;
3. 當被控器件檢測到主控發送的地址與自己的地址相同時發送壹個應答信號(ACK);
4. 主控收到ACK後開始發送第壹個數據字節;
5. 被控器收到數據字節後發送壹個ACK表示繼續傳送數據,發送NACK表示傳送數據結束;
6. 主控發送完全部數據後,發送壹個停止位STOP,結束整個通訊並且釋放總線;
1.主控在檢測到總線空閑的狀況下,首先發送壹個START信號掌管總線;
2.發送壹個地址字節(包括7位地址碼和壹位R/W,最後1bit為0,表示寫),將地址寫入地址計數器;
3.當被控器件檢測到主控發送的地址與自己的地址相同時發送壹個應答信號(ACK);
4.主控收到ACK後緊接著發送壹個start狀態,然後重復第壹個地址字節(device code)最後1bit為'1',代表讀。
5.釋放數據總線,開始接收第壹個數據字節;
6.主控收到數據後發送ACK表示繼續傳送數據,發送NACK表示傳送數據結束;