I2C協議詳解

2021-08-26 03:02:36 字數 2088 閱讀 8654

1 i2c匯流排知識

1.1  i2c匯流排物理拓撲結構

i2c 匯流排在物理連線上非常簡單,分別由sda(序列資料線)和scl(序列時鐘線)及上拉電阻組成。通訊原理是通過對scl和sda線高低電平時序的控制,來產生i2c匯流排協議所需要的訊號進行資料的傳遞。

在匯流排空閒狀態時,這兩根線一般被上面所接的上拉電阻拉高,保持著高電平。

1.2  i2c匯流排特徵

i2c匯流排上的每乙個裝置都可以作為主裝置或者從裝置,而且每乙個裝置都會對應乙個唯一的位址

(可以從i2c器件的資料手冊得知),主從裝置之間就通過這個位址來確定與哪個器件進行通訊,在通常的應用中,我們把cpu帶i2c匯流排介面的模組作為主裝置,把掛接在匯流排上的其他裝置都作為從裝置。

i2c匯流排上可掛接的裝置數量受匯流排的最大電容400pf限制,如果所掛接的是相同型號的器件,則還受器件位址位的限制。

i2c匯流排資料傳輸速率在標準模式下可達100kbit/s,快速模式下可達400kbit/s,高速模式下可達3.4mbit/s。一般通過i2c匯流排介面可程式設計時鐘來實現傳輸速率的調整,同時也跟所接的上拉電阻的阻值有關。

i2c匯流排上的主裝置與從裝置之間以位元組(8位)為單位進行雙向的資料傳輸。

1.3  i2c匯流排協議

i2c協議規定,匯流排上資料的傳輸必須以乙個起始訊號作為開始條件,以乙個結束訊號作為傳輸的停止條件。起始和結束訊號總是由主裝置產生。

匯流排在空閒狀態時,scl和sda都保持著高電平,當scl為高電平

時,sda由高到低的跳變,

則會產生乙個起始條件;當scl為高

時,sda由低到高的跳變,

則會產生乙個停止條件

。在起始條件產生後,匯流排處於忙狀態,由本次資料傳輸的主從裝置獨佔,其他i2c器件無法訪問匯流排;而在停止條件產生後,本次資料傳輸的主從裝置將釋放匯流排,匯流排再次處於空閒狀態

,當然也可以不釋放匯流排,可以直接選取下乙個從裝置並且開始下一次傳輸,最後在釋放匯流排即可。

如圖所示:

在了解起始條件和停止條件後,我們再來看看在這個過程中資料的傳輸是如何進行的。前面我們已經提到過,資料傳輸以位元組為單位。主裝置在scl線上產生每個時鐘脈衝的過程中將在sda線上傳輸乙個資料位,當乙個位元組按資料位從高位到低位的順序傳輸完後,緊接著從裝置將拉低sda線,回傳給主裝置乙個應答位,此時才認為乙個位元組真正的被傳輸完成。當然,並不是所有的位元組傳輸都必須有乙個應答位,比如:當從裝置不能再接收主裝置傳送的資料時,從裝置將回傳乙個否定應答位。資料傳輸的過程如圖所示:

注意:傳輸資料過程中,當scl為高電平時,sda的點平必須保持穩定,否則可能會產生開始位或者停止位,所以資料傳輸過程中,scl為高電平時獲取sda的資料,在scl為低電平時可以進行點平的轉換(scl為低點平時不會有影響)

在前面我們還提到過,i2c匯流排上的每乙個裝置都對應乙個唯一的位址,主從裝置之間的資料傳輸是建立在位址的基礎上,也就是說,主裝置在傳輸有效資料之前 要先指定從裝置的位址,位址指定的過程和上面資料傳輸的過程一樣,只不過大多數從裝置的位址是7位的,然後協議規定再給位址新增乙個最低位用來表示接下來 資料傳輸的方向,0表示主裝置向從裝置寫資料,1表示主裝置向從裝置讀資料。如圖所示:

1.4  i2c匯流排操作

對i2c匯流排的操作實際就是主從裝置之間的讀寫操作。大致可分為以下

兩種操作情況:

第一,主裝置往從裝置中寫資料。資料傳輸格式如下:

第二,主裝置從從裝置中讀資料。資料傳輸格式如下:

I2C匯流排協議詳解

1.1 i2c匯流排知識 1.1.1 i2c匯流排物理拓撲結構 i2c 匯流排在物理連線上非常簡單,分別由sda 序列資料線 和scl 序列時鐘線 及上拉電阻組成。通訊原理是通過對scl和sda線高低電平時序的控制,來 產生i2c匯流排協議所需要的訊號進行資料的傳遞。在匯流排空閒狀態時,這兩根線一般...

I2C匯流排協議詳解

1.1 i2c匯流排知識 1.1.1 i2c匯流排物理拓撲結構 i2c 匯流排在物理連線上非常簡單,分別由sda 序列資料線 和scl 序列時鐘線 及上拉電阻組成。通訊原理是通過對scl和sda線高低電平時序的控制,來 產生i2c匯流排協議所需要的訊號進行資料的傳遞。在匯流排空閒狀態時,這兩根線一般...

I2C匯流排協議詳解

1.1 i2c匯流排知識 1.1.1 i2c匯流排物理拓撲結構 i2c 匯流排在物理連線上非常簡單,分別由sda 序列資料線 和scl 序列時鐘線 及上拉電阻組成。通訊原理是通過對scl和sda線高低電平時序的控制,來 產生i2c匯流排協議所需要的訊號進行資料的傳遞。在匯流排空閒狀態時,這兩根線一般...