IIC(Inter Integrated Circuit)兩根線,一條時鐘線SCL和一條數(shù)據(jù)線SDA,所以是半雙工通信,主從模式,支持一對多。
假設(shè)主機(jī)A給從機(jī)B發(fā)數(shù)據(jù)(A.SCL接B.SCL,A.SDA接B.SDA),根據(jù)應(yīng)用,A可以同時接B,C,D。空閑時,SDA和SCL上的電平都為高電平。
起始和停止
起始條件S:當(dāng)SCL高電平時,SDA由高電平向低電平轉(zhuǎn)換;停止條件P:當(dāng)SCL高電平時,SDA由低電平向高電平轉(zhuǎn)換。起始和停止條件一般由主機(jī)產(chǎn)生,總線在起始條件后處于busy的狀態(tài),在停止條件的某段時間后,總線才再次處于空閑狀態(tài)。
空閑時SDA和SCL上的電平都為高電平。A先把SDA拉低,等SDA變?yōu)榈碗娖胶笤侔裇CL拉低(以上兩個動作構(gòu)成了I2C的起始位),此時SDA就可以發(fā)送數(shù)據(jù)了,與此同時,SCL發(fā)送一定周期的脈沖,SDA發(fā)送數(shù)據(jù)和SCL發(fā)送脈沖的要符合的關(guān)系是:SDA必須在SCL是高電平時保持有效,在SCL是低電平時發(fā)送下一位(SCL會在上升沿對SDA進(jìn)行采樣)。
傳輸與響應(yīng)
一次傳8位數(shù)據(jù),8位數(shù)據(jù)傳輸結(jié)束后A釋放SDA,SCL再發(fā)一個脈沖(這是第九個脈沖),觸發(fā)B將SDA置為低電平表示確認(rèn)(該低電平稱為ACK)。最后SCL先變?yōu)楦唠娖?,SDA再變?yōu)楦唠娖剑ㄒ陨蟽蓚€動作稱為結(jié)束標(biāo)志),如果B沒有將SDA置為0,則A停止發(fā)送下一幀數(shù)據(jù)。
整體時序
I2C總線上的每個設(shè)備都有唯一地址,數(shù)據(jù)包傳輸時先發(fā)送地址位,接著才是數(shù)據(jù)。一個地址字節(jié)由7個地址位(可以掛128個設(shè)備)和1個指示位組成(7位尋址模式),0表示寫,1表示讀。一般芯片手冊I2C地址都是7位地址,有些與某個引腳的電平相關(guān),主機(jī)控制最后讀寫位。實際項目一般都是采用I2C庫,有的庫要求傳入的是8位的寫的地址,有的是7位,由接口函數(shù)再區(qū)分讀寫補(bǔ)位。當(dāng)然,最愚蠢的辦法是從0到255定時循環(huán)讀某個寄存器地址,讀到正確值時的地址就是正確的從機(jī)地址。
一般情況下使用I2C庫,除了配置從機(jī)地址,其他的起始、結(jié)束等時序等其實不太關(guān)注,只需要配置時鐘頻率,一般看從機(jī)最大支持多少,以及主機(jī)的系統(tǒng)時鐘,太高會偶爾出現(xiàn)錯誤,再沒有時間要求的情況下,時鐘越低越穩(wěn)定。
審核編輯:湯梓紅
-
IC
+關(guān)注
關(guān)注
36文章
6123瀏覽量
179346 -
通訊
+關(guān)注
關(guān)注
9文章
927瀏覽量
35658 -
IIC
+關(guān)注
關(guān)注
11文章
306瀏覽量
39496 -
SCL
+關(guān)注
關(guān)注
1文章
243瀏覽量
17555
發(fā)布評論請先 登錄
單片機(jī)IIC通訊實例
IIC總線通訊實現(xiàn)具體分為哪幾種呢
MM440變頻器與plc的通訊實現(xiàn)

RS232+RS485實現(xiàn)通訊實驗板

基于掌上電腦電動車信息終端通訊實現(xiàn)的研究
礦用通風(fēng)機(jī)監(jiān)測系統(tǒng)設(shè)計及通訊實現(xiàn)付勝
臨震電磁信息監(jiān)測儀網(wǎng)絡(luò)通訊實現(xiàn)瞿旻
一文解讀IIC總線的FPGA實現(xiàn)原理及過程

評論