[概述]
I2C總線是由Philips公司開發的兩線式串行總線,這兩根線為時鐘線(SCL)和雙向數據線(SDA)。由於I2C總線僅需要兩根線,因此在電路板上占用的空間更少,帶來的問題是帶寬較窄。I2C在標准模式下傳輸速率最高100Kb/s,在快速模式下最高可達400kb/s。屬於半雙工。
在嵌入式系統中,I2C應用非常廣泛,大多數微控制器中集成了I2C總線,一般用於和RTC,EEPROM,智能電池電路,傳感器,LCD以及其他類似設備之間的通信。
[I2C總線傳輸時序]
[I2C總線的信號狀態]
1、 空閒狀態:SDA和SCL都是高電平;
2、 開始條件(S):SCL為高電平時,SDA由高電平向低電平跳變,開始傳輸數據;
3、 結束條件(P):SCL為高電平時,SDA由低電平向高電平跳變,結束傳輸數據;
4、 數據有效:在SCL的高電平期間,SDA保持穩定,數據有效。SDA的改變只能發生在SCL的低電平期間;
5、 ACK信號:數據傳輸的過程中,接收器件每接收一個字節數據要產生一個ACK信號,向發送器件發出特定的低電平脈沖,表示已經收到數據。
[從設備地址]
I2C總線從設備使用7位地址,最後一個為讀寫控制位。下圖是eeprom的原理圖,我們可以計算出它的地址為0x50。
[I2C讀寫方式]
多字節寫的時序
多字節讀的時序
具體可參考datasheet