IIC 通信協議
I2C(IIC,Inter-Integrated Circuit),數據線SDA(data)和時鐘SCL(clock)構成的串行總線,雙向傳送。
高速IIC總線一般可達400kbps以上。
IIC是半雙工通信方式。
時序圖
主機:起始信號—–>第一位——>第二位———> …….. ——–>第八位———> 等待應答信號——->停止信號
大致的一個數據傳輸流程是:主機向SDA線上發送一個起始信號,表示有信號進行傳輸,此時所有連接到IIC總線上的芯片都處於接收狀態,接下來,主機發送想要與其進行數據傳輸的從機地址信號,所有的從機都會接收到該地址信號並和自己固有的地址信號進行匹配,當配對成功時,接下來就在時鐘信號的帶動下進行數據傳輸,數據的傳輸是按照每8位一個單元進行數據的傳輸。每一位的傳輸過程中,在SCL高電平期間,一定要保證SDA數值的穩定,否則會出現出錯的情況,SDA數值的改變發生在SCL的低電平期間。最終8位全部傳輸完畢,從機產生一個應答信號給主機,主機在接收到該應答信號後決定接下來是發送一組新的數據還是終止發送。
時序分析
空閒狀態
SDA和SCL同時爲高電平時,總線處於空閒狀態
起始信號與停止信號
起始信號:SCL爲高電平時,SDA電平發生高到低的跳變
停止信號:SCL爲高電平時,SDA電平發生低到高的跳變
應答信號
發送器每發送完一個字節(8個脈衝),在第9個脈衝間釋放總線,接收器返回一個ACK信號,協議規定,低電平爲有效應答,高電平爲無效應答。
數據有效性
時鐘信號爲高電平期間,數據必須保持穩定,時鐘信號低電平期間,數據線上的電平才允許變化。
也就是說,數據在時鐘信號到來前必須準備好,並保持到時鐘信號的下降沿之後。
數據傳輸
I2C爲同步傳輸,時鐘控制數據位的傳輸,邊沿觸發。