Linux驅動子系統之I2C 1

2021-06-20 00:22:54 字數 833 閱讀 1197

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 例項原始碼分析 好了,我們來...