求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

I2C總線檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽、 搜尋

來自 站酷網 的圖片

I2C總線(Inter-Integrated Circuit)即集成電路[1]總線,由Philips公司(2006年遷移到NXP)在1980年代初開發的一種簡單、雙線雙向的同步串行總線。用於連接微控制器及其外圍設備,是微電子通信控制領域廣泛採用的一種總線標準。

I2C總線利用一根時鐘線和一根數據線在連接總線的兩個器件之間進行信息的傳遞,為設備之間數據交換提供了一種簡單高效的方法。每個連接到總線上的器件都有唯一的地址,任何器件既可以作為主機也可以作為從機,但同一時刻只允許有一個主機。

I2C總線是一個具有衝突檢測機制和仲裁機制的真正意義上的多主機總線,它能在多個主機同時請求控制總線時利用仲裁機制避免數據衝突並保護數據。作為嵌入式開發者,使用I2C總線通信的場景有很多,例如驅動FRAM、E2PROM、傳感器[2]等。它是同步通信的一種特殊形式,具有接口線少,控制方式簡單,器件封裝形式小,通信速率較高等優點。

功能用途

工作原理

SDA(串行數據線)和SCL(串行時鐘線)都是雙向I/O線,接口電路為開漏輸出。需通過上拉電阻接電源VCC。當總線空閒時,兩根線都是高電平,連接總線的外同器件都是CMOS器件,輸出級也是開漏電路。在總線上消耗的電流很小,因此,總線上擴展的器件數量主要由電容負載來決定,因為每個器件的總線接口都有一定的等效電容。而線路中電容會影響總線傳輸速度。當電容過大時,有可能造成傳輸錯誤。所以,其負載能力為400pF,因此可以估算出總線允許長度和所接器件數量。

主器件用於啟動總線傳送數據,並產生時鐘以開放傳送的器件,此時任何被尋址的器件均被認為是從器件。在總線上主和從、發和收的關係不是恆定的,而取決於此時數據傳送方向。如果主機要發送數據給從器件,則主機首先尋址從器件,然後主動發送數據至從器件,最後由主機終止數據傳送;如果主機要接收從器件的數據,首先由主器件尋址從器件。然後主機接收從器件發送的數據,最後由主機終止接收過程。在這種情況下。主機負責產生定時時鐘和終止數據傳送。

功能特點

2C總線特點可以概括如下:

(1)在硬件上,I2C總線只需要一根數據線和一根時鐘線兩根線,總線接口已經集成在芯片內部,不需要特殊的接口電路,而且片上接口電路的濾波器可以濾去總線數據上的毛刺。因此I2C總線簡化了硬件電路PCB布線,降低了系統成本,提高了系統可靠性。因為I2C芯片除了這兩根線和少量中斷線,與系統再沒有連接的線,用戶常用IC可以很容易形成標準化和模塊化,便於重複利用。

(2)I2C總線是一個真正的多主機總線,如果兩個或多個主機同時初始化數據傳輸,可以通過衝突檢測和仲裁防止數據破壞,每個連接到總線上的器件都有唯一的地址,任何器件既可以作為主機也可以作為從機,但同一時刻只允許有一個主機。數據傳輸和地址設定由軟件設定,非常靈活。總線上的器件增加和刪除不影響其他器件正常工作。

(3)I2C總線可以通過外部連線進行在線檢測,便於系統故障診斷和調試,故障可以立即被尋址,軟件也利於標準化和模塊化,縮短開發時間。

(4)連接到相同總線上的IC數量只受總線最大電容的限制,串行的8位雙向數據傳輸位速率在標準模式下可達100Kbit/s,快速模式下可達400Kbit/s,高速模式下可達3.4Mbit/s。

(5)總線具有極低的電流消耗,抗高噪聲干擾,增加總線驅動器可以使總線電容擴大10倍,傳輸距離達到15m;兼容不同電壓等級的器件,工作溫度範圍寬。

7位

第一個字節的頭7位組成了從機地址,最低位(LSB)是第8位,它決定了傳輸的方向。第一個字節的最低位是「0」,表示主機會寫信息到被選中的從機;「1」表示主機會向從機讀信息,當發送了一個地址後,系統中的每個器件都在起始條件後將頭7位與它自己的地址比較,如果一樣,器件會判定它被主機尋址,至於是從機接收器還是從機發送器,都由R/W位決定的。

10位

10位尋址和7位尋址兼容,而且可以結合使用。

10位尋址採用了保留的1111XXX作為起始條件(S)或重複起始條件(Sr)後第一個字節的頭7位。

10位尋址不會影響已有的7位尋址,有7位和10位地址的器件可以連接到相同的I2C總線。它們都能用於標準模式(F/S)和高速模式(Hs)系統。

保留地址位1111XXX有8個組合,但是只有4個組合11110XX用於10位尋址,剩下的4個組合11111XX保留給後續增強的I2C總線。

10位從機地址是由在起始條件(S)或重複起始條件(Sr)後的頭兩個字節組成。

第一個字節的頭7位是11110XX的組合,其中最後兩位(XX)是10位地址的兩個最高位(MSB)。

第一個字節的第8位是R/W位,決定了傳輸的方向,第一個字節的最低位是「0」表示主機將寫信息到選中的從機,「1」表示主機將向從機讀信息。

如果R/W位是「0」,則第二個字節是10位從機地址剩下的8位;如果R/W位是「1」則下一個字節是從機發送給主機的數據。

參考文獻