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的起始和停止信號都是在SCL爲高電平時SDA進行變化而實現的,所以IIC在傳輸數據即SDA的電平變化只能在SCL爲低電平時才能進行,否則會被誤判爲起始或停止信號。

二、協議時序圖

寫時序:

1.起始信號:SCL置高,SDA產生一個下降沿。進入數據傳輸狀態。

2.數據傳輸:將SCL置低,從最高位開始傳輸字節的每一位,然後拉高SCL,完成該位數據的傳輸,一旦SCL處於高電平,SDA上面的數據必須保持穩定,如果有跳變就會成爲起始信號或者停止信號發生錯誤。

3.一個字節數據傳輸完畢時,主機釋放總線,讀取SDA線上的信息來獲得應答信號。成功讀取到SDA線上被拉低,則說明數據傳輸成功,否則表示無應答,即失敗。

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

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

                 收到命令字節後回饋應答信號ACK(ACK = 0) --> 主機收到應答信號後開始發送第一個字節數據 --> 從機收到數據後

                 返回一個應答信號ACK --> 主機收到應答信號後發送下一個數據 --> 當主機發送最後一個字節數據並且接受到從機的ACK應答信號後,通過向從機發送一個停止信號結束本次通信並釋放總線,從機收到停止信號後也退出與主機之間的通信。


讀時序:


主機發送啓動信號 --> 主機發送第一個命令字節(R/W=1) --> 從機接收到地址字節後,返回一個應答信號並向主機發送數據 --> 主機收到數據後向從機反饋一個應答信號 --> 從機收到應答信號後發送下一個數據 --> 主機完成所有數據接收發送一個非應答信號(ACK = 1) --> 從機接收到ACK = 1的非應答信號後停止發送數據 --> 主機發送非應答信號後,再發送一個停止信號,釋放總線結束通信。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章