複製鏈接
請複製以下鏈接發送給好友

I2C總線

鎖定
I2C總線是由Philips公司開發的一種簡單、雙向二線制同步串行總線。它只需要兩根線即可在連接於總線上的器件之間傳送信息。
主器件用於啓動總線傳送數據,併產生時鐘以開放傳送的器件,此時任何被尋址的器件均被認為是從器件.在總線上主和從、發和收的關係不是恆定的,而取決於此時數據傳送方向。如果主機要發送數據給從器件,則主機首先尋址從器件,然後主動發送數據至從器件,最後由主機終止數據傳送;如果主機要接收從器件的數據,首先由主器件尋址從器件.然後主機接收從器件發送的數據,最後由主機終止接收過程。在這種情況下.主機負責產生定時時鐘和終止數據傳送 [1] 
中文名
I2C總線
外文名
Inter-Integrated Circuit
模    式
兩線式串行總線

I2C總線工作原理

SDA(串行數據線)和SCL(串行時鐘線)都是雙向I/O線,接口電路為開漏輸出。需通過上拉電阻接電源VCC。當總線空閒時,兩根線都是高電平,連接總線的外同器件都是CMOS器件,輸出級也是開漏電路。在總線上消耗的電流很小,因此,總線上擴展的器件數量主要由電容負載來決定,因為每個器件的總線接口都有一定的等效電容。而線路中電容會影響總線傳輸速度。當電容過大時,有可能造成傳輸錯誤。所以,其負載能力為400pF,因此可以估算出總線允許長度和所接器件數量。
主器件用於啓動總線傳送數據,併產生時鐘以開放傳送的器件,此時任何被尋址的器件均被認為是從器件。在總線上主和從、發和收的關係不是恆定的,而取決於此時數據傳送方向。如果主機要發送數據給從器件,則主機首先尋址從器件,然後主動發送數據至從器件,最後由主機終止數據傳送;如果主機要接收從器件的數據,首先由主器件尋址從器件。然後主機接收從器件發送的數據,最後由主機終止接收過程。在這種情況下。主機負責產生定時時鐘和終止數據傳送。 [2] 

I2C總線特徵

I2C總線特點可以概括如下:
(1)在硬件上,I2C總線只需要一根數據線和一根時鐘線兩根線,總線接口已經集成在芯片內部,不需要特殊的接口電路,而且片上接口電路的濾波器可以濾去總線數據上的毛刺。因此I2C總線簡化了硬件電路PCB佈線,降低了系統成本,提高了系統可靠性。因為I2C芯片除了這兩根線和少量中斷線,與系統再沒有連接的線,用户常用IC可以很容易形成標準化和模塊化,便於重複利用。
(2)I2C總線是一個真正的多主機總線,如果兩個或多個主機同時初始化數據傳輸,可以通過沖突檢測和仲裁防止數據破壞,每個連接到總線上的器件都有唯一的地址,任何器件既可以作為主機也可以作為從機,但同一時刻只允許有一個主機。數據傳輸和地址設定由軟件設定,非常靈活。總線上的器件增加和刪除不影響其他器件正常工作。
(3)I2C總線可以通過外部連線進行在線檢測,便於系統故障診斷和調試,故障可以立即被尋址,軟件也利於標準化和模塊化,縮短開發時間。
(4)連接到相同總線上的IC數量只受總線最大電容的限制,串行的8位雙向數據傳輸位速率在標準模式下可達100Kbit/s,快速模式下可達400Kbit/s,高速模式下可達3.4Mbit/s。
(5)總線具有極低的電流消耗,抗高噪聲干擾,增加總線驅動器可以使總線電容擴大10倍,傳輸距離達到15m;兼容不同電壓等級的器件,工作温度範圍寬。 [3] 

I2C總線數據傳輸

I2C總線字節格式

發送到SDA線上的每個字節必須為8位,每次傳輸可以發送的字節數量不受限制。每個字節後必須跟一個響應位。首先傳輸的是數據的最高位(MSB),如果從機要完成一些其他功能後(例如一個內部中斷服務程序)才能接收或發送下一個完整的數據字節,可以使時鐘線SCL保持低電平,迫使主機進入等待狀態,當從機準備好接收下一個數據字節並釋放時鐘線SCL後數據傳輸繼續。

I2C總線應答響應

數據傳輸必須帶響應,相關的響應時鐘脈衝由主機產生。在響應的時鐘脈衝期間發送器釋放SDA線(高)。
在響應的時鐘脈衝期間,接收器必須將SDA線拉低,使它在這個時鐘脈衝的高電平期間保持穩定的低電平。
I2C總線數據傳輸和應答 I2C總線數據傳輸和應答
通常被尋址的接收器在接收到的每個字節後,除了用CBUS地址開頭的數據,必須產生一個響應。當從機不能響應從機地址時(例如它正在執行一些實時函數不能接收或發送),從機必須使數據線保持高電平,主機然後產生一個停止條件終止傳輸或者產生重複起始條件開始新的傳輸。
如果從機接收器響應了從機地址,但是在傳輸了一段時間後不能接收更多數據字節,主機必須再一次終止傳輸。這個情況用從機在第一個字節後沒有產生響應來表示。從機使數據線保持高電平,主機產生一個停止或重複起始條件。
如果傳輸中有主機接收器,它必須通過在從機發出的最後一個字節時產生一個響應,向從機發送器通知數據結束。從機發送器必須釋放數據線,允許主機產生一個停止或重複起始條件。

I2C總線時鐘同步

所有主機在SCL線上產生它們自己的時鐘來傳輸I2C總線上的報文。數據只在時鐘的高電平週期有效,因此需要一個確定的時鐘進行逐位仲裁。
時鐘同步通過線與連接I2C接口到SCL線來執行。這就是説SCL線的高到低切換會使器件開始數它們的低電平週期,而且一旦器件的時鐘變低電平,它會使SCL線保持這種狀態直到到達時鐘的高電平。但是如果另一個時鐘仍處於低電平週期,這個時鐘的低到高切換不會改變SCL線的狀態。因此SCL線被有最長低電平週期的器件保持低電平。此時低電平週期短的器件會進入高電平的等待狀態。
當所有有關的器件數完了它們的低電平週期後,時鐘線被釋放並變成高電平。之後,器件時鐘和SCL線的狀態沒有差別,而且所有器件會開始數它們的高電平週期。首先完成高電平週期的器件會再次將SCL線拉低。
這樣產生的同步SCL時鐘的低電平週期由低電平時鐘週期最長的器件決定,而高電平週期由高電平時鐘週期最短的器件決定。

I2C總線模式

I2C總線快速模式

快速模式器件可以在400kbit/s下接收和發送。最小要求是:它們可以和400kbit/s傳輸同步,可以延長SCL信號的低電平週期來減慢傳輸。快速模式器件都向下兼容,可以和標準模式器件在0~100kbit/s的I2C總線系統通訊。但是,由於標準模式器件不向上兼容,所以不能在快速模式I2C總線系統中工作。快速模式I2C總線規範與標準模式相比有以下特徵:
1、最大位速率增加到400kbit/s;
2、調整了串行數據(SDA)和串行時鐘(SCL)信號的時序;
3、快速模式器件的輸入有抑制毛刺的功能,SDA和SCL輸入有施密特觸發器
4、快速模式器件的輸出緩衝器對SDA和SCL信號的下降沿有斜率控制功能;
5、如果快速模式器件的電源電壓被關斷,SDA和SCL的I/O管腳必須懸空,不能阻塞總線;
6、連接到總線的外部上拉器件必須調整以適應快速模式I2C總線更短的最大允許上升時間。對於負載最大是200pF的總線,每條總線的上拉器件可以是一個電阻,對於負載在200pF~400pF之間的總線,上拉器件可以是一個電流源(最大值3mA)或者是一個開關電阻電路。

I2C總線高速模式

高速模式(Hs模式)器件對I2C總線的傳輸速度有巨大的突破。Hs模式器件可以在高達3.4Mbit/s的位速率下傳輸信息,而且保持完全向下兼容快速模式或標準模式(F/S模式)器件,它們可以在一個速度混合的總線系統中雙向通訊。
Hs模式傳輸除了不執行仲裁和時鐘同步外,與F/S模式系統有相同的串行總線協議和數據格式。
高速模式下I2C總線規範如下:
1、Hs模式主機器件有一個SDAH信號的開漏輸出緩衝器和一個在SCLH輸出的開漏極下拉和電流源上拉電路。這個電流源電路縮短了SCLH信號的上升時間,任何時候在Hs模式,只有一個主機的電流源有效;
2、在多主機系統的Hs模式中,不執行仲裁和時鐘同步,以加速位處理能力。仲裁過程一般在前面用F/S模式傳輸主機碼後結束;
3、Hs模式主機器件以高電平和低電平是1:2的比率產生一個串行時鐘信號。解除了建立和保持時間的時序要求;
4、可以選擇Hs模式器件有內建的電橋。在Hs模式傳輸中,Hs模式器件的高速數據(SDAH)和高速串行時鐘(SCLH)線通過這個電橋與F/S模式器件的SDA和SCL線分隔開來。減輕了SDAH和SCLH線的電容負載,使上升和下降時間更快;
5、Hs模式從機器件與F/S從機器件的唯一差別是它們工作的速度。Hs模式從機在SCLH和SDAH輸出有開漏輸出的緩衝器。SCLH管腳可選的下拉晶體管可以用於拉長SCLH信號的低電平,但只允許在Hs模式傳輸的響應位後進行;
6、Hs模式器件的輸出可以抑制毛刺,而且SDAH和SCLH輸出有一個施密特觸發器;
7、Hs模式器件的輸出緩衝器對SDAH和SCLH信號的下降沿有斜率控制功能。
參考資料
  • 1.    陳小忠 黃寧 趙小俠編著.單片機接口技術實用子程序:人民郵電出版社,2005年09月
  • 2.    王衞星主編.單片機原理與接口技術:中國農業出版社,2013.08
  • 3.    陳啓軍,餘有靈,張偉等編著.嵌入式系統及其應用:基於CORTEX-M3內核和STM32F系統微控制器的系統設計與開發(第2版):同濟大學出版社,2014.02