天天看點

IIC通訊協定的學習與了解

IIC總線是一種串行資料總線,由兩條線組成,其中一條雙向SDA;負責資料的讀與寫,另一條是時鐘線SCL。

在硬體實體結構上面,IIC總線有如下特點:

1.SDA、SCL均為漏極開路結構(OD),隻能輸出低電平,是以必須接有外部上拉電阻,常見的阻值與電壓對應關系是

1.8V(1.8K)、3.3V(4.7K)、5V(10k),是以在總線空閑時,兩根線均為高電平。而IIC總線支援多主機多從機的結構又使

得在總線上各器件的SCL和SDA都是線“與”的關系。

主機和從機都可以傳輸資料,但從機不能主動發起傳輸,必須依靠主機的時序指令來進行硬體觸發。即從裝置是受到主裝置控制的。

一、協定

空閑狀态:空閑狀态時的I2C總線,兩根線均上拉後處于高電平,規定為總線的空閑狀态。内部的場效應管處于截止狀态、

起始信号:當SCL為高電平期間,SDA發生由高往低的跳變,啟動信号是一種電平跳變時序信号,而不是一個電平信号。

停止信号:當SCL為高電平期間,SDA發生由低到高的跳變,停止信号也是一種電平跳變時序信号。

IIC通訊協定的學習與了解

因為IIC的起始和停止信号都是在SCL為高電平時SDA進行變化而實作的,是以IIC在傳輸資料即SDA的電平變化隻能在SCL為低電平時才能進行,否則會被誤判為起始或停止信号。

二、協定時序圖

寫時序:

IIC通訊協定的學習與了解

1.起始信号:SCL置高,SDA産生一個下降沿。進入資料傳輸狀态。

2.資料傳輸:将SCL置低,從最高位開始傳輸位元組的每一位,然後拉高SCL,完成該位資料的傳輸,一旦SCL處于高電平,SDA上面的資料必須保持穩定,如果有跳變就會成為起始信号或者停止信号發生錯誤。

3.一個位元組資料傳輸完畢時,主機釋放總線,讀取SDA線上的資訊來獲得應答信号。成功讀取到SDA線上被拉低,則說明資料傳輸成功,否則表示無應答,即失敗。

4.停止信号:SCL置高,SDA産生一個上升沿,結束此次傳輸

IIC通訊協定的學習與了解

通訊過程:主機發起開始信号 --> 主機發送一個指令位元組(一般由7位器件位址和1位讀寫位R/W組成,=0是為寫) --> 從機

                 收到指令位元組後回饋應答信号ACK(ACK = 0) --> 主機收到應答信号後開始發送第一個位元組資料 --> 從機收到資料後

                 傳回一個應答信号ACK --> 主機收到應答信号後發送下一個資料 --> 當主機發送最後一個位元組資料并且接受到從機的ACK應答信号後,通過向從機發送一個停止信号結束本次通信并釋放總線,從機收到停止信号後也退出與主機之間的通信。

讀時序:

IIC通訊協定的學習與了解

主機發送啟動信号 --> 主機發送第一個指令位元組(R/W=1) --> 從機接收到位址位元組後,傳回一個應答信号并向主機發送資料 --> 主機收到資料後向從機回報一個應答信号 --> 從機收到應答信号後發送下一個資料 --> 主機完成所有資料接收發送一個非應答信号(ACK = 1) --> 從機接收到ACK = 1的非應答信号後停止發送資料 --> 主機發送非應答信号後,再發送一個停止信号,釋放總線結束通信。

IIC通訊協定的學習與了解

繼續閱讀