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

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

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

評論