1.1 概述
i2c匯流排是由philips公司開發的兩線式序列匯流排,這兩根線為時鐘線(scl)和雙向資料線(sda)。由於i2c匯流排僅需要兩根線,因此在電路板上占用的空間更少,帶來的問題是頻寬較窄。i2c在標準模式下傳輸速率最高100kb/s,在快速模式下最高可達400kb/s。屬於半雙工。
在嵌入式系統中,i2c應用非常廣泛,大多數微控制器中整合了i2c匯流排,一般用於和rtc,eeprom,智慧型電池電路,感測器,lcd以及其他類似裝置之間的通訊。
1.2 i2c匯流排傳輸時序
1.3 i2c匯流排的訊號狀態
1、 空閒狀態:sda和scl都是高電平;
2、 開始條件(s):scl為高電平時,sda由高電平向低電平跳變,開始傳輸資料;
3、 結束條件(p):scl為高電平時,sda由低電平向高電平跳變,結束傳輸資料;
4、 資料有效:在scl的高電平期間,sda保持穩定,資料有效。sda的改變只能發生在scl的低電平期間;
5、 ack訊號:資料傳輸的過程中,接收器件每接收乙個位元組資料要產生乙個ack訊號,向傳送器件發出特定的低電平脈衝,表示已經收到資料。
1.4 從裝置位址
i2c匯流排從裝置使用7位位址,最後乙個為讀寫控制位。下圖是eeprom的原理圖,我們可以計算出它的位址為0x50。
1.5 i2c讀寫方式
多位元組寫的時序
多位元組讀的時序
具體可參考datasheet
原文見:
Linux驅動子系統之I2C 5
5 客戶驅動 5.1 概述 i2c客戶驅動是對i2c從裝置的實現,乙個具體的i2c客戶驅動包括兩個部分 一部分是i2c driver,用於將裝置掛接於i2c匯流排 另一部分是裝置本身的驅動。i2c客戶驅動程式主要由i2c driver和i2c client來描述。5.2 例項原始碼分析 好了,我們來...
Linux驅動子系統之I2C 5
5 客戶驅動 5.1 概述 i2c客戶驅動是對i2c從裝置的實現,乙個具體的i2c客戶驅動包括兩個部分 一部分是i2c driver,用於將裝置掛接於i2c匯流排 另一部分是裝置本身的驅動。i2c客戶驅動程式主要由i2c driver和i2c client來描述。5.2 例項原始碼分析 好了,我們來...
Linux驅動子系統之I2C 5
5 客戶驅動 5.1 概述 i2c客戶驅動是對i2c從裝置的實現,乙個具體的i2c客戶驅動包括兩個部分 一部分是i2c driver,用於將裝置掛接於i2c匯流排 另一部分是裝置本身的驅動。i2c客戶驅動程式主要由i2c driver和i2c client來描述。5.2 例項原始碼分析 好了,我們來...