I2C總線是一種同步、雙向、半雙工的兩線式串行接口總線。這里,半雙工的含義是指在任意給定的時(shí)刻,只有一個(gè)方向上是可以通信的。
I2C總線最早由Philips半導(dǎo)體公司于20世紀(jì)80年代研發(fā)面市。I2C最初的設(shè)計(jì)目標(biāo)是為微處理器/微控制器系統(tǒng)與電視機(jī)外圍芯片之間的連接提供簡單的方法。 I2C總線由兩條總線組成:串行時(shí)鐘線SCL和串行數(shù)據(jù)線SDA。 SCL線——負(fù)責(zé)產(chǎn)生同步時(shí)鐘脈沖。 SDA線——負(fù)責(zé)在設(shè)備間傳輸串行數(shù)據(jù)。 I2C總線是共享的總線系統(tǒng),因此可以將多個(gè)I2C設(shè)備連接到該系統(tǒng)上。連接到I2C總線上的設(shè)備既可以用作主設(shè)備,也可以用作從設(shè)備。 主設(shè)備負(fù)責(zé)控制通信,通過對(duì)數(shù)據(jù)傳輸進(jìn)行初始化/終止化,來發(fā)送數(shù)據(jù)并產(chǎn)生所需的同步時(shí)鐘脈沖。 從設(shè)備則是等待來自主設(shè)備的命令,并響應(yīng)命令接收。主設(shè)備和從設(shè)備都可以作為發(fā)送設(shè)備或接收設(shè)備。無論主設(shè)備是作為發(fā)送設(shè)備還是接收設(shè)備,同步時(shí)鐘信號(hào)都只能由主設(shè)備產(chǎn)生。 在相同的總線上,I2C支持多個(gè)主設(shè)備的同時(shí)存在。圖1-1顯示了I2C總線上主設(shè)備和從設(shè)備的連接關(guān)系。 當(dāng)總線空閑時(shí),SDA 和SCL 都處于高電平狀態(tài),當(dāng)主機(jī)要和某個(gè)從機(jī)通訊時(shí),會(huì)先發(fā)送一個(gè)開始條件,然后發(fā)送從機(jī)地址和讀寫控制位,接下來傳輸數(shù)據(jù)(主機(jī)發(fā)送或者接收數(shù)據(jù)),數(shù)據(jù)傳輸結(jié)束時(shí)主機(jī)會(huì)發(fā)送停止條件。傳輸?shù)拿總€(gè)字節(jié)為8 位,高位在前,低位在后。
開始條件:SCL 為高電平時(shí),主機(jī)將SDA 拉低,表示數(shù)據(jù)傳輸即將開始。
從機(jī)地址:主機(jī)發(fā)送的第一個(gè)字節(jié)為從機(jī)地址,高7 位為地址,最低位為R/W 讀寫控制位,1 表示讀操作,0 表示寫操作。
一般從機(jī)地址有7 位地址模式和10 位地址模式兩種,如果是10 位地址模式,第一個(gè)字節(jié)的頭7 位是11110XX 的組合,其中最后兩位(XX)是10 位地址的兩個(gè)最高位,第二個(gè)字節(jié)為10 位從機(jī)地址的剩下8 位,如下圖所示:
應(yīng)答信號(hào):每傳輸完成一個(gè)字節(jié)的數(shù)據(jù),接收方就需要回復(fù)一個(gè)ACK(acknowledge)。寫數(shù)據(jù)時(shí)由從機(jī)發(fā)送ACK,讀數(shù)據(jù)時(shí)由主機(jī)發(fā)送ACK。當(dāng)主機(jī)讀到最后一個(gè)字節(jié)數(shù)據(jù)時(shí),可發(fā)送NACK(Notacknowledge)然后跟停止條件。
數(shù)據(jù):從機(jī)地址發(fā)送完后可能會(huì)發(fā)送一些指令,依從機(jī)而定,然后開始傳輸數(shù)據(jù),由主機(jī)或者從機(jī)發(fā)送,每個(gè)數(shù)據(jù)為8 位,數(shù)據(jù)的字節(jié)數(shù)沒有限制。
重復(fù)開始條件:在一次通信過程中,主機(jī)可能需要和不同的從機(jī)傳輸數(shù)據(jù)或者需要切換讀寫操作時(shí),主機(jī)可以再發(fā)送一個(gè)開始條件。
停止條件:在SDA 為低電平時(shí),主機(jī)將SCL 拉高并保持高電平,然后在將SDA 拉高,表示傳輸結(jié)束。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6754瀏覽量
88611 -
主機(jī)
+關(guān)注
關(guān)注
0文章
970瀏覽量
34961 -
I2C總線
+關(guān)注
關(guān)注
8文章
386瀏覽量
60737
原文標(biāo)題:I2C總線
文章出處:【微信號(hào):ARM與嵌入式,微信公眾號(hào):ARM與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論