I2C 接口 (也稱為 InterIC、IIC、I2C)是飛利浦開(kāi)發(fā)的串行總線,用于在微控制器(或處理器)和外圍組件(如各種傳感器、驅(qū)動(dòng)程序、RAM、ADC 等)之間低速(標(biāo)準(zhǔn)模式下高達(dá) 100 kbit/s,“快速”模式下高達(dá) 400 kbit/s)傳輸 8 位數(shù)據(jù)。
使用此標(biāo)準(zhǔn)進(jìn)行數(shù)據(jù)傳輸可以最大限度地減少集成電路之間的連接數(shù)量,從而減少必要的引腳和走線的數(shù)量。集成的 I2C 協(xié)議還消除了對(duì)地址解密器和其他外部協(xié)商邏輯的需求。
僅使用兩條線路傳輸信息:
SDA – 數(shù)據(jù)線
SCL 是同步行
這兩根線通過(guò)上拉電阻連接到電源(VCC),所有連接到總線的設(shè)備通過(guò)開(kāi)漏(Open-Drain)或集電極開(kāi)路(Open-Collector)驅(qū)動(dòng)器拉低信號(hào)線,實(shí)現(xiàn)邏輯“0”狀態(tài);而不主動(dòng)拉低時(shí),信號(hào)線通過(guò)上拉電阻恢復(fù)到邏輯“1”狀態(tài)。
IIC總線選用主-從架構(gòu),即一臺(tái)設(shè)備做為主機(jī)(Master),而另一臺(tái)做為從機(jī)(Slave)。主機(jī)控制總線里的時(shí)鐘信號(hào),并發(fā)起傳送數(shù)據(jù),而從機(jī)則按照主機(jī)命令開(kāi)展回應(yīng)。
1. 設(shè)備地址
每個(gè)從設(shè)備在IIC總線上也有一個(gè)唯一的7位或10位地址。當(dāng)主機(jī)發(fā)出一個(gè)特殊地址時(shí),僅有與本地址匹配的從機(jī)遇回應(yīng),從而實(shí)現(xiàn)多設(shè)備之間的通信。
2. 傳送數(shù)據(jù)過(guò)程
IIC的通信過(guò)程有如下幾個(gè)步驟:
運(yùn)行標(biāo)準(zhǔn)(Start Condition):當(dāng)SDA線在SCL線維持高電平時(shí),從高電平降低,表明通信的逐漸。
地址傳送:主機(jī)在啟動(dòng)條件時(shí),推送從機(jī)地址及其讀/寫位(RW位),從機(jī)依據(jù)地址確定是否回應(yīng)。
應(yīng)答信號(hào)(ACK/NACK):當(dāng)從機(jī)成功接受到地址或數(shù)據(jù)后,會(huì)可以將SDA線降低來(lái)發(fā)送一個(gè)應(yīng)答信號(hào)(ACK)。假如從機(jī)沒(méi)有接受到或無(wú)法處理數(shù)據(jù),它將不推送應(yīng)答信號(hào)(NACK)。
傳送數(shù)據(jù):數(shù)據(jù)以字節(jié)為基準(zhǔn)根據(jù)SDA線傳送,每次傳送后,從機(jī)必須推送ACK信號(hào)來(lái)確定數(shù)據(jù)已成功接受。
停止條件(Stop Condition):當(dāng)傳送結(jié)束時(shí),SDA線在SCL線維持高電平時(shí),從低電頻恢復(fù)到高電平,表明通訊完畢。
3. 讀寫操作
寫操作:主機(jī)在推送從機(jī)地址后,將讀/寫位設(shè)為“0”來(lái)進(jìn)行寫操作。接著,主機(jī)再次傳送數(shù)據(jù)字節(jié),目標(biāo)從機(jī)遇接受這些信息。
讀操作:主機(jī)在推送從機(jī)地址后,將讀/寫位設(shè)為“1”來(lái)進(jìn)行讀操作。從機(jī)先是在SDA網(wǎng)上傳送數(shù)據(jù),主機(jī)載入這些信息。
優(yōu)勢(shì)
簡(jiǎn)易性:僅需二根電源線即可實(shí)現(xiàn)多設(shè)備通訊,減少了硬件開(kāi)發(fā)的復(fù)雜性。
低成本:IIC的完成不用繁雜的通信接口,適用于低成本嵌入式應(yīng)用。
多主機(jī)支持:盡管常見(jiàn)的是單主機(jī)配置,但I(xiàn)IC總線也支持多主機(jī)架構(gòu),這使得其更加高效。
缺陷
速度限定:IIC的標(biāo)準(zhǔn)模式速度為100 kbps,迅速模式為400 kbps,快速模式為3.4 Mbps,但這仍然小于許多其他總線規(guī)范。
通訊距離短:IIC設(shè)計(jì)用于芯片間通信,適宜于同一電路板上的器件通訊,距離較遠(yuǎn)時(shí)很容易受到信號(hào)衰減危害。
感應(yīng)器聯(lián)接:IIC廣泛用于將感應(yīng)器(如溫度感應(yīng)器、加速度計(jì)、陀螺儀)與微處理器聯(lián)接。
存儲(chǔ)設(shè)備:EEPROM、RTC等存儲(chǔ)設(shè)備通常通過(guò)IIC插口與主控設(shè)備通訊。
液晶顯示屏(LCD):很多字符LCD和圖型LCD控制板支持IIC插口,用以表明數(shù)據(jù)的傳輸。
IIC作為一種簡(jiǎn)單而高效的串口通信總線,廣泛應(yīng)用于各種嵌入式系統(tǒng)中。根據(jù)只需二根電源線設(shè)計(jì),IIC完成了主機(jī)與多個(gè)從機(jī)之間的通信,適宜短路線、低速度的數(shù)據(jù)傳輸任務(wù)。在決定成本、硬件復(fù)雜性和通訊要求的項(xiàng)目中,IIC通常是理想的選擇。