飛利浦在20世紀80年代開發的I2C已成為電子領域最常見的串行通信協議之一。 I2C可以實現電子組件或IC與IC之間的通信,無論組件是在同一個PCB上還是通過電纜連接。 I2C的關鍵特性是能夠在僅有兩根導線的單個通信總線上擁有大量組件,這使得I2C非常適合要求簡單且低成本超速的應用。
I2C協議概述
I2C是一種串行通信協議,只需要兩條專為PCB上芯片間通信而設計的信號線。 I2C最初設計用於100kbps通信,但多年來已開發出更快的數據傳輸模式以實現高達3.4Mbit的速度。 I2C協議已經建立為官方標準,它提供了I2C實現之間的良好兼容性和良好的向後兼容性。
I2C信號
I2C協議只使用兩條雙向信號線與I2C總線上的所有器件通信。 使用的兩個信號是:
- 串行數據線(SDL)
- 串行數據時鐘(SDC)
I2C只能使用兩個信號與許多外設進行通信的原因在於如何處理總線通信。 每個I2C通信都以一個7位(或10位)地址開始,該地址呼出外圍設備的地址,剩下的通信用於接收通信。 這允許I2C總線上的多個器件根據系統的需求來扮演主器件的角色。 為了防止通信衝突,I2C協議包含仲裁和衝突檢測功能,可以在總線上順暢通信。
優點和局限性
作為一種通信協議,I2C具有許多優點,使其成為許多嵌入式設計應用的理想選擇。 I2C具有以下優點:
- I2C只需要兩條信號線
- 靈活的數據傳輸速率
- 總線上的每個設備都是可獨立尋址的
- 設備具有簡單的主/從關係
- I2C能夠通過提供仲裁和通信衝突檢測來處理多個主通信
- 比SPI更長距離的通信
具備所有這些優勢,I2C還有一些可能需要設計的限制。 最重要的I2C限制包括:
- 由於只有7位(或10位)可用於器件尋址,因此同一總線上的器件可共享相同的地址。 有些器件能夠配置地址的最後幾位,但這仍然會限制同一總線上的器件。
- 只有少數有限的通信速度可用,許多設備不支持傳輸更高的速度。 需要部分支持總線上的每個速度,以防止較慢的設備捕捉部分傳輸,從而導致運行故障。
- 當總線上的單個設備停止運行時,I2C總線的共享特性可能導致整個總線掛起。 將總線電源循環可用於重新啟動總線並恢復正常操作。
- 由於設備可以設置它們的通信速度,所以較慢的操作設備可以延遲較快速度設備的操作。
- 由於通信線路的開漏拓撲結構,I2C比其他串行通信總線的功耗更高。
- I2C總線的局限性通常會將總線上的設備數量限制在十幾個設備上。
應用
I2C總線是需要低成本和簡單實施而非高速應用的理想選擇。 例如,讀取某些存儲器IC,訪問DAC和ADC, 讀取傳感器 ,傳輸和控制用戶指導的動作,讀取硬件傳感器以及與多個微控制器通信是I2C通信協議的常見用途。