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