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