I2C總線協議詳解系列1

I2C總線協議詳解系列1

I2C總線協議詳解系列2

I2C總線協議詳解系列3

1.1 I2C總線知識

1.1.1  I2C總線物理拓撲結構
 
    I2C 總線在物理連接上非常簡單,分別由SDA(串行數據線)和SCL(串行時鐘線)及上拉電阻組成。通信原理是通過對SCL和SDA線高低電平時序的控制,來 產生I2C總線協議所需要的信號進行數據的傳遞。在總線空閒狀態時,這兩根線一般被上面所接的上拉電阻拉高,保持着高電平。

1.1.2  I2C總線特徵
    I2C總線上的每一個設備都可以作爲主設備或者從設備,而且每一個設備都會對應一個唯一的地址(可以從I2C器件的數據手冊得知),主從設備之間就通過這 個地址來確定與哪個器件進行通信,在通常的應用中,我們把CPU帶I2C總線接口的模塊作爲主設備,把掛接在總線上的其他設備都作爲從設備。
    I2C總線上可掛接的設備數量受總線的最大電容400pF 限制,如果所掛接的是相同型號的器件,則還受器件地址位的限制。
    I2C總線數據傳輸速率在標準模式下可達100kbit/s,快速模式下可達400kbit/s,高速模式下可達3.4Mbit/s。一般通過I2C總線接口可編程時鐘來實現傳輸速率的調整,同時也跟所接的上拉電阻的阻值有關。
    I2C總線上的主設備與從設備之間以字節(8位)爲單位進行雙向的數據傳輸。

1.1.3  I2C總線協議
    I2C協議規定,總線上數據的傳輸必須以一個起始信號作爲開始條件,以一個結束信號作爲傳輸的停止條件。起始和結束信號總是由主設備產生。總線在空閒狀態 時,SCL和SDA都保持着高電平,當SCL爲高電平而SDA由高到低的跳變,表示產生一個起始條件;當SCL爲高而SDA由低到高的跳變,表示產生一個 停止條件。在起始條件產生後,總線處於忙狀態,由本次數據傳輸的主從設備獨佔,其他I2C器件無法訪問總線;而在停止條件產生後,本次數據傳輸的主從設備 將釋放總線,總線再次處於空閒狀態。如圖所示:

    在瞭解起始條件和停止條件後,我們再來看看在這個過程中數據的傳輸是如何進行的。前面我們已經提到過,數據傳輸以字節爲單位。主設備在SCL線上產生每個 時鐘脈衝的過程中將在SDA線上傳輸一個數據位,當一個字節按數據位從高位到低位的順序傳輸完後,緊接着從設備將拉低SDA線,回傳給主設備一個應答位, 此時才認爲一個字節真正的被傳輸完成。當然,並不是所有的字節傳輸都必須有一個應答位,比如:當從設備不能再接收主設備發送的數據時,從設備將回傳一個否 定應答位。數據傳輸的過程如圖所示:
 
    在前面我們還提到過,I2C總線上的每一個設備都對應一個唯一的地址,主從設備之間的數據傳輸是建立在地址的基礎上,也就是說,主設備在傳輸有效數據之前 要先指定從設備的地址,地址指定的過程和上面數據傳輸的過程一樣,只不過大多數從設備的地址是7位的,然後協議規定再給地址添加一個最低位用來表示接下來 數據傳輸的方向,0表示主設備向從設備寫數據,1表示主設備向從設備讀數據。如圖所示:
 
1.1.4  I2C總線操作
    對I2C總線的操作實際就是主從設備之間的讀寫操作。大致可分爲以下三種操作情況:
    第一,主設備往從設備中寫數據。數據傳輸格式如下:
    


    第二,主設備從從設備中讀數據。數據傳輸格式如下:
    

    第三,主設備往從設備中寫數據,然後重啓起始條件,緊接着從從設備中讀取數據;或者是主設備從從設備中讀數據,然後重啓起始條件,緊接着主設備往從設備中寫數據。數據傳輸格式如下:

    第三種操作在單個主設備系統中,重複的開啓起始條件機制要比用STOP終止傳輸後又再次開啓總線更有效率。

發佈了26 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章