2015年7月30日 星期四

i2c分解動作

http://www.robot-electronics.co.uk/images/i2c.GIF
http://chiachun-ariel.blogspot.tw/2007/08/i2c.html

原則: bus出現以下兩種狀況時表示變成busy或是不再busy
起始傳輸: SCL為高時,SDA由高被拉低
傳輸結束: SCL為高時,SDA由低被放高

平常:
SCL, SDA為high

傳輸過程中:
只有當SCL為低時,才能為了傳輸下一個位元資料而改變SDA

分解動作開始:
送出端把SDA拉低
經過一小段時間後,接著把SCL拉低

SCL為低時,送出端按照要送出的資料bit而調整SDA電位,調好後把SCL放高
>>接收端看到SCL變高了就讀取SDA狀態抄下來

每傳完八位元,
送出端釋出SDA控制權給接收端(作法就是不拉低SDA)一個時脈周期的時間,這時間內接收端可以把SDA拉低,表示ACK bit, 資料都成功收到了。

如果此時接收端想花點時間處理收到的資料,希望傳送端暫時別送資料過來的話,就把SCL持續拉低,直到已經準備好接收資料時才放高SCL

若已把所有資料傳出,就在SCL為高時,把SDA由低放高,釋放bus使用權出來

沒有留言:

張貼留言