IIC通信協(xié)議詳解
IIC詳解
IIC:Inter-Integrated Circuit (內(nèi)部集成電路總線)
IIC數(shù)據(jù)線是雙向的
· 主機(jī)發(fā)送數(shù)據(jù)到7位地址從機(jī)的時(shí)序圖:
起始信號(hào):在無(wú)數(shù)據(jù)通信時(shí),IIC總線的SCL和SDA都是高電平;當(dāng)主機(jī)要發(fā)送數(shù)據(jù)時(shí),SDA在SCL為高電平時(shí)拉低發(fā)送起始信號(hào)
從機(jī)地址:而后,主機(jī)在SDA上發(fā)出從機(jī)的7位地址(高位在前、低位在后)。這里只是以7位地址從設(shè)備為例,目前IIC總線支持7位地址和10位地址兩種設(shè)備
寫標(biāo)志:起始信號(hào)后的首字節(jié)的最低位(第8位)是讀/寫信號(hào),其中0表示寫數(shù)據(jù)到從機(jī)、1表示由從機(jī)讀數(shù)據(jù)
應(yīng)答信號(hào):當(dāng)從機(jī)接收到主機(jī)發(fā)出的從機(jī)地址后,與自己的地址做比較,若發(fā)現(xiàn)呼叫的是自己,則在SCL的第9個(gè)時(shí)鐘信號(hào)時(shí)拉低SDA,以表示應(yīng)答(ACK)
數(shù)據(jù)傳輸:主機(jī)收到應(yīng)答信號(hào)后,接下來(lái)發(fā)送要傳輸?shù)臄?shù)據(jù)給從機(jī),每次從機(jī)收到數(shù)據(jù)后,發(fā)送一個(gè)應(yīng)答信號(hào)確認(rèn)收到數(shù)據(jù)。
停止信號(hào):數(shù)據(jù)發(fā)送完成之后,主機(jī)發(fā)出停止信號(hào),告訴從機(jī)數(shù)據(jù)通信結(jié)束。
· 主機(jī)從7位地址從機(jī)讀取數(shù)據(jù)的時(shí)序圖:
起始信號(hào) → 從機(jī)地址 → 讀標(biāo)志"1" → 從機(jī)應(yīng)答 → 從機(jī)發(fā)送數(shù)據(jù) →主機(jī)應(yīng)答 → … →從機(jī)發(fā)送數(shù)據(jù) → 主機(jī)無(wú)應(yīng)答 → 主機(jī)發(fā)送停止信號(hào)
· 完整的時(shí)序圖:
電氣特性:
· 起始位:當(dāng)SCL=1 時(shí),SDA上有下降沿
· 終止位:當(dāng)SCL=1 時(shí),SDA上有上升沿
起始位之后總線被認(rèn)為忙,即有數(shù)據(jù)在傳輸。
· SCL =1 時(shí),SDA的數(shù)據(jù)必須保持穩(wěn)定,否則由于起始位和終止位的特性,SDA上數(shù)據(jù)發(fā)生改變將被識(shí)別成起始位或終止位。
· SCL=0 時(shí),SDA上的數(shù)據(jù)才允許改變
停止位之后總線被認(rèn)為閑,空閑狀態(tài)時(shí)SDA和SCL都為高電平。
當(dāng)一個(gè)字節(jié)發(fā)送或接收完畢需要CPU干預(yù)的時(shí)候,SCL一直保持低電平
起始位和終止位都是主設(shè)備產(chǎn)生的,主設(shè)備為數(shù)據(jù)傳輸產(chǎn)生時(shí)鐘信號(hào):
主設(shè)備在傳輸每個(gè)數(shù)據(jù)位時(shí)都會(huì)產(chǎn)生一個(gè)時(shí)鐘脈沖