I2C協議

    串行總線I 2C由數據線SDA和時鐘線SCL構成,可實現完善的雙工同步數據傳輸,能方便的構成多機系統和外圍器件擴展系統,I2C採用器件地址的硬件設置方法,通過軟件進行尋址。
    在一次通信過程中,由主控器負責向總線上發送啓動信號、同步時鐘信號、被控器件地址碼、重啓動信號和停止信號等。
    如果在系統中同時存在2個或2個以上的主器件節點企圖控制總線,則形成總線衝突狀態。由於I2C引入了同步時鐘和總線仲裁機制,即使出現總線衝突也不會造成信息丟失。

    發生總線衝突時,爲了避免信息丟失,需要進行總線仲裁以決定誰是主控器。總線仲裁是通過裁定SDA線上的控制權來解決的。時鐘同步是連接到SCL線上的所有器件進行“線與”實現的。只要有一個器件向SCL輸出低電平,SCL就爲低電平。因此SCL線的低電平時間由時鐘低電平期最長的器件決定,而高電平時間由時鐘高電平期最短的器件決定,從而低電平週期短的器件會進入高電平的等待狀態,由此形成了時鐘的同步。


在通信過程應注意以下6點:

    1. 進行數據傳送時,在SCL爲高電平期間,SDA線上電平必須保持穩定,只有SCL爲低時,才允許SDA線上電平改變狀態。並且每個字節傳送時都是高位在前。
    2. 對於應答信號,ACK=0時爲有效應答位,說明接收器已經成功接收到該字節,若爲1則說明接受不成功。
    3. 如果被控器需要延遲下一個下一個數據字節開始傳送的時間,可以通過把SCL電平拉低並保持來強制主控器進入等待狀態。
    4.主控器完成一次通信後還想繼續佔用總線在進行一次通信,而又不釋放總線,就要利用重啓動信號Sr。它既作爲前一次數據傳輸的結束,又作爲後一次傳輸的開始。
    5.總線衝突時,按“低電平優先”的仲裁原則,把總線判給在數據線上先發送低電平的主器件。
    6.在特殊情況下,若需禁止所有發生在I2C總線上的通信,可採用封鎖或關閉總線,具體操作爲掛接在總線上的任一器件將SCL鎖定在低電平即可。


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