IIC總線協議和時序


IIC標准速率為100Kbit/s,快速模式400Kbit/s,支持多機通信,支持多主控模塊,但是同一時刻只允許有一個主控。由數據線SDA和時鍾SCL構成串行總線;每個電路模塊都有唯一地址。I2C設備的操作可分為寫單個字節存儲,寫多個字節存儲,讀單個存儲字節和讀多個存儲字節,操作如下: 

 

a)   總線空閑狀態

I2C總線的SDA和SCL兩條信號線同時處於高電平時,規定為總線的空閑狀態。此時各個器件的輸出級的場效應管均處於截止狀態,即釋放總線,由兩條信號線各自的上拉電阻把電平拉高。

 

b)   啟動信號(start)

在時鍾線SCL保持高電平期間,數據線SDA上的電平被拉低(負跳變),定義為I2C總線的啟動信號,它標志着一次數據傳輸的開始。啟動信號是由主控器主動建立的,在建立該信號之前 I2C 總線必須處於空閑狀態。

 

c)   停止信號(stop)

在時鍾線SCL保持高電平期間,數據線SDA被釋放,使得SDA返回高電平(即正跳變),稱為I2C總線的停止信號,它標志着一次數據傳輸的終止。停止信號也是由主控器主動建立的,建立該信號之后,I2C總線將返回空閑狀態。

d)   數據位傳送

I2C總線上傳送的每一位數據都有一個時鍾脈沖相對應(或同步控制),即在SCL串行時鍾的配合下,在SDA上逐位地串行傳送每一位數據。進行數據傳送時,在SCL呈現高電平期間,SDA上的電平必須保持穩定,低電平為數據0,高電平為數據1。只有在SCL為低電平期間,才允許SDA上的電平改變狀態。

 

e)   應答信號(ACK和NACK)

I2C總線上的所有數據都是以8位傳送的,發送器每發送一個字節,就在時鍾脈沖9期間釋放數據線,由接收器反饋一個應答信號。應答信號為低電平時,規定為有效應答位(ACK簡稱應答位),表示接收器已經成功地接收了該字節;應答信號為高電平時,規定為非應答位(NACK),一般表示接收器接收該字節沒有成功。對於反饋有效應答位ACK的要求是,接收器在第9個時鍾脈沖之前的低電平期間將 SDA 線拉低,並且確保在該時鍾的高電平期間為穩定的低電平。

如果接收器是主控器,則在它收到最后一個字節后,發送一個NACK信號,以通知被控發送器結束數據發送,並釋放SDA線,以便主控接收器發送一個停止信號。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM