I2C 通訊協議:瞭解I2C Primer、 PMBus和SMBus

ADI 韌體工程師Mary Grace Legaspi及韌體工程經理

摘要

I2C, 是一種常用的串列通訊協定,用於在元件之間——特別是兩個或兩個以上不同電路之間建立通訊。I2C Primer是最常用的I2C。本文將介紹I2C 的基本特性和標準,並重點說明在通訊實現過程中如何正確使用該協議。從I2C 的基本原理出發,我們將介紹其變體子集——系統管理匯流排(SMBus)和電源管理匯流排(PMBus)——的可用性及二者的區別。這三種協定各有專門的功能,目的在滿足不同的客戶需求。

為何重要?

I2C 有利於設計人員在系統的眾多節點之間建立簡單、雙向、彈性的通訊。I2C僅使用兩條雙向線來發送和接收資訊,從而降低了複雜性。它還允許設計人員配置多個主節點系統IC之間的通訊。 I2C 對管理系統和電源的開發人員也很有利,讓他們能夠在盡可能短的時間內創建高品質的產品。

“對於那些致力於溝通的人,溝通(通訊)才有意義。”

—John Powell

通訊協定在組織裝置之間通訊時扮演著重要角色。它基於系統要求而以不同方式進行設計。此類協議具有明確的、為實現成功通訊而協商一致的規則。

如果您曾經使用LED顯示器、感測器甚至加速度計模組之類的東西建構過系統,那麼您很可能已經使用過I2C。I2C 支援多個節點連接單一主元件和多個主元件連接多個節點的特性。如果您希望物盡其用,讓一個微控制器將數據記錄到單一儲存卡,或向單一LCD顯示文本,則此特性非常有用。

除了最常用的I2C Primer, I2C 還有兩個變體,分別專注於系統和電源應用,稱為系統管理匯流排(SMBus)和電源管理匯流排(PMBus)。

根據定義,Inter-Integrated Circuit (I2C)—也稱為Inter IC—是一種硬體通訊協定,其透過一條多主元件、多節點、串列通訊匯流排進行同步通訊。同步通訊表示兩個(或兩個以上)交換數據的元件共用一條公共時脈線。 I2C 廣泛用於將低速週邊IC連接到處理器和微控制器。I2C 匯流排由飛利浦公司設計,它讓位於同一電路板上的元件之間可以輕鬆通訊。

I2C Primer

界面

使用一條串列數據(SDA)線、一條串列時脈(SCL)線和一個公共接地來承載所有通訊,大幅減少連接。

Figure 1. Integrated circuits directly communicate with each other.
圖 1. 積體電路彼此直接通訊

每個I2C件有兩條線路:

  • SDA是供主元件和節點發送和接收數據的線路。
  • SCL是承載時脈訊號的線路。SCL總是由 I2C 主元件產生。規範對時脈訊號的低相位和高相位有最短週期要求。

I2C 匯流排僅使用兩條雙向線路:每個元件的SDA和SCL用於簡單的IC間通訊。

Figure 2. An I<sup>2</sup>C pull-up resistor connection.
圖 2.I2C 上拉電阻連接

硬體最重要的注意是在SDA和SCL上加入上拉電阻。I2C 元件透過開集或開漏接腳連接到匯流排,將線路拉低。當沒有數據傳輸時, I2C 匯流排處於高位準空閒狀態;線路被動拉高。要傳輸數據,須切換線路,即先拉低再釋放(又變為高位準)。數據位元在時脈下降邊緣傳輸。

開漏輸出需要一個上拉電阻(圖2中的Rp)才能正確輸出高位準。上拉電阻連接在輸出接腳和高位準所需的輸出電壓(圖2中的(VDD )之間。

對於 VCC和 VDD (5 V)的典型值,4700 Ω是最常用的上拉電阻值。

作為參考,遮罩2 AWG雙絞線電纜的電容範圍為100 pF⁄m至240pF⁄m。因此,I2C 鏈路的最大匯流排長度約為1公尺(100 kBaud時)或10公尺(10 kBaud時)。非遮罩電纜的電容通常要小得多,但只能用在以其他方式加以遮罩的外殼內。

表1總結了I2C的關鍵特性。

表1. I2C 匯總
特性 規格
導線 2
最大速度 標準模式 = 100 kbps
同步或非同步? 同步
串列或並行? 串列
最大主元件數 無限制
最大節點數 1008

理論上,定址模式的最大節點數為27或210,但有16個地址保留用於特殊用途。

I2C 是同步的,因此位元的輸出透過主元件和節點之間共用的時脈訊號與位元的採樣同步。時脈訊號始終由主元件控制。

保留I2C 節點地址

有16個保留I2C 地址。這些位址對應於以下兩種模式之一:0000 XXX或1111 XXX。表2顯示了為特殊目的而保留的I2C 位址。

表2. I2C 保留地址
I2C 節點地址 R/W 位元功能描述
0000 000 0 廣播地址
0000 000 1 起始位元組
0000 001 X CBUS 地址
0000 010 X 保留用於不同匯流排格式
0000 011 X 保留供未來使用
0000 1XX X 高速模式主代碼
1111 1XX X 保留供未來使用
1111 0XX X 10位節點地址

I2C工作原理

I2C 數據在訊息中傳輸,訊息被分解為數據幀。讀寫協定包含位址幀(即節點的二進位位址)和另一個數據幀,後者包含所傳輸的數據、開始和停止條件、重複起始位、讀⁄寫位元以及每個數據幀之間的應答⁄不應答位元。

時序規格表

I2C時序表也很重要,因為工程師利用它可以設計出與匯流排要求相容的IC。每個數據速率都有自己的時序規格,主元件和節點必須遵守該規格才能正確傳輸數據。

表3顯示了時序規格表上給出的符號和參數。

表3.I2C 時序規格表示例
符號 參數 單位
fSCL SCL 時脈頻率 kHz
tHD(STA) (重複)起始條件的保持時間 µs
tLOW 接腳的低位準週期 µs
tHIGH 接腳的高位準週期 µs
tSU(STA) 重複起始條件的建立時間 µs
tHD(DAT) 數據保持時間 µs
tSU(DAT) 數據建立時間 ns
tr SDA 訊號的上升時間 ns
tf SDA 訊號的下降時間 ns
tSU(STO) 停止條件的建立時間 µs
Figure 3. An I<sup>2</sup>C message.
圖 3. I2C消息

I2C 傳輸子協議

匯流排上的傳輸除了讀操作,還有寫操作。讀取和寫入協定建立在一系列子協定之上,例如起始和停止條件、重複起始位元、位址位元組、數據傳輸位元和應答⁄不應答位。

起始條件

顧名思義,起始條件總是在傳輸開始時出現,並由主元件發起。這樣做是為了喚醒匯流排上的空閒節點元件。SDA線從高位準切換到低位準,然後SCL線從高位準切換到低位準。參見圖4。

重複起始條件

在不發出停止條件的情況下,起始條件可以在傳輸期間重複。這是一種特殊情況,稱為重複起始,用於改變數據傳輸方向、重複嘗試傳輸、同步多個IC,甚至控制串列記憶體。參見圖5。

地址幀

位址幀包含7位元或10位元序列,具體取決於可用性(參見產品手冊)。參見圖6。

I2C 與SPI不同的是,其不具有節點選擇線路,因此需要另一種方法來讓節點知道數據正向其發送,而不是向另一個節點發送。這是透過定址來實現的。位址幀始終是新消息中起始位元之後的第一幀。

主元件將其想要與之通訊的節點位址發送到其所連接的每個節點。然後,每個節點將主元件所發送的位址與其自己的位址進行比較。如果位址匹配,它便向主元件發送一個低電壓ACK位元。如果地址不匹配,則節點什麼也不做,SDA線保持高位準。

讀⁄寫位元

位址幀的最後一位告知節點,主元件是想要將數據寫入其中還是從中接收數據。如果主元件希望將數據發送到節點,則讀⁄寫位處於低位準。如果主元件請求從節點得到數據,則該位元處於高位準。參見圖7。

ACK⁄NACK位元

消息中的每一幀後面都跟隨一個應答⁄不應答位元。如果成功接收到一個位址幀或數據幀,則接收元件會向發件者返回一個ACK位元。

圖例:在下面的圖中,白色框表示節點,藍色框表示主元件。參見圖8。

Figure 4. Start condition.
圖 4. 起始條件
Figure 5. Repeated start condition.
圖 5. 重複起始條件
Figure 6. Address frame.
圖 6. 地址幀
Figure 7. Read/write bit.
圖 7. 讀 / 寫位元
Figure 8. Acknowledge/not acknowledge bit.
圖 8. 應答 / 不應答位元

數據幀

主元件檢測到來自節點的ACK位之後,就準備發送第一數據幀。數據幀總是8位元長,並以MSB優先方式發送。每個數據幀之後緊接著一個ACK⁄NACK位,以驗證該幀是否已成功接收。主元件或節點(取決於誰發送數據)必須收到ACK位元,然後才能發送下一數據幀。參見圖9。

停止條件

發送完所有數據幀之後,主元件可以向節點發送停止條件以停止傳輸。停止條件是指SCL線上的電壓從低位準變為高位準,然後在SCL線保持高位準的情況下,SDA線上的電壓從低位準變為高位準。

在SCL線從低位準切換到高位準後,SDA線從低位準切換到高位準。參見圖10。

I2C 傳輸步驟:寫入

有關寫入單一數據的I2C 傳輸的示例,請參見圖11。

第1步

主元件將SDA線從高位準切換到低位準,然後將SCL線從高位準切換到低位準,以將起始條件發送到每個相連的節點。

第2步

主元件將其想要與之通訊的節點的7位元或10位元位址以及寫操作位發送給每個節點。

例如,7位元位址為0x2D,加上寫操作位元(相當於0),結果將是0x5A。

第3步

每個節點將主元件所發送的位址與其自己的位址進行比較。如果位址匹配,節點便將SDA線拉低一位的時間,以返回一個ACK位元。如果來自主元件的地址與節點自己的地址不匹配,則節點讓SDA線保持高位準不變。

在SCL的第九個脈衝期間拉低SDA線路可以發送ACK位元,保持浮空高位準則為NACK。

第4步

主元件發送或接收數據幀。

第5步

傳輸完每個數據幀之後,接收元件再向發送者返回一個ACK位元,以確認成功接收該幀。

第6步

若要停止數據傳輸,主元件應將SCL切換為高位準,然後將SDA切換為高位準,從而發送停止條件。

Figure 9. Data frame.
圖 9. 數據幀
Figure 10. Stop condition.
圖 10. 停止條件
Figure 11. Data sheet example for I<sup>2</sup>C transmission of write single location.
圖 11.寫入單一位置的 I2C 傳輸的數據手冊示例
Figure 12. Data sheet example for I<sup>2<sup>C transmission of read single location.
圖 12. 讀取單一位置的 I2C 傳輸的數據手冊示例

I2C 數據傳輸步驟:讀取

第1步

主元件將SDA線從高位準切換到低位準,然後將SCL線從高位準切換到低位準,以將起始條件發送到每個相連的節點。

第2步

主元件將其想要與之通訊的節點的7位元或10位元位址以及寫操作位元發送給每個節點。

例如,7位元位址為0x2D,加上寫操作位元(相當於0),結果將是0x5A。

第3步

每個節點將主元件所發送的位址與其自己的位址進行比較。如果位址匹配,節點便將SDA線拉低一位元的時間,以返回一個ACK位元。如果來自主元件的地址與節點自己的地址不匹配,則節點讓SDA線保持高位準不變。

第4步

經過初始啟動、定址和應答之後,主元件已經知道目標節點及指向的位址,因此某些元件具有重複起始條件來清理事務。

注意:僅用於閱讀目的!

第5步

主元件將其想要與之通訊的節點的7位元或10位元位址以及讀操作位元 發送給每個節點。

例如,7位元位址為0x2D,加上讀操作位元(相當於1),結果將是0x5B。

第6步

每個節點將主元件所發送的位址與其自己的位址進行比較。如果位址匹配,節點便將SDA線拉低一位的時間,以返回一個ACK位元。如果來自主元件的地址與節點自己的地址不匹配,則節點讓SDA線保持高位準不變。

第7步

得到ACK位元之後,主元件接收來自節點的數據幀。

第8步

傳輸完每個數據幀之後,主元件再向發送者返回一個ACK位元,以確認成功接收該幀,或者如果讀取請求已經完成,則主元件返回NACK。

第9步

若要停止數據傳輸,主元件應將SCL切換為高位準,然後將SDA切換為高位準,從而發送停止條件。

單一主元件和多個節點

I2C 使用定址,所以單一主元件可以控制多個節點。使用7位元位址可提供128 128 (27)個唯一地址。使用10位元位址很罕見,但可提供1024 (210) 個唯一地址。要將多個節點連接到單一主元件,請使用4.7 kΩ上拉電阻連接這些節點,並將SDA和SCL線連接到VCC

多個主元件和多個節點

多個主元件可以連接到單個節點或多個節點。如果同一系統中有多個主元件,那麼當兩個主元件爭著在同一時間透過SDA線發送或接收數據時,就會出現問題。

為了解決這個問題,每個主元件在傳輸消息之前,需要檢測SDA線是低位準還是高位準。

如果SDA線為低位準,則說明匯流排由另一個主元件控制,該主元件應等待。如果SDA線為高位準,則它可以安全傳輸消息。要將多個主元件連接到多個節點,請按照圖13所示,使用4.7 kΩ上拉電阻將SDA和SCL線連接到 VCC.

Figure 13. Multiple mains with multiple nodes connected.
圖 13. 連接多個節點的多個主元件

仲裁

I2C 多主元件可以連接到同一I2C 匯流排並同時運行。透過不斷監視SDA和SCL有無起始和停止條件,它們可以確定匯流排是否空閒。如果匯流排正忙,主元件將延遲掛起的I2C 傳輸,直至停止條件指示匯流排再次空閒。

但是,有兩個主元件同時開始傳輸的情況可能會發生。在傳輸過程中,主元件不斷監視SDA和SCL。如果其中一個檢測到SDA為低位準,而它應該為高位準,則該主元件將認為另一主元件處於活動狀態,因而立即停止傳輸。此過程稱為仲裁。兩個主元件都會產生起始位元並繼續各自的傳輸。

如果主元件恰好選擇相同的邏輯位準,則什麼也不會發生。

一旦主元件嘗試施加不同的邏輯位準,則將訊號拉低的主元件將被宣佈為獲勝者;失敗者將檢測到邏輯不匹配,因而放棄傳輸。

請花點時間理解一下這種安排的簡單性和有效性:

  • 獲勝者繼續傳輸而不中斷——沒有數據損壞,沒有驅動器爭用,不需要重新開機事務。
  • 理論上,失敗者可以在仲裁過程中監視節點位址,如果恰好是被定址的節點,它可以做出適當的回應。
  • 如果相互競爭的主元件均請求同一節點的數據,則仲裁過程不會不必要地中斷任一事務——不會檢測到不匹配,節點會將其數據輸出到匯流排,多個主元件可以接收到數據。

時脈延展

也稱為時脈同步。

注意:I2C 規範沒有為時脈延展規定任何超時條件——也就是說,任何元件都可以根據需要保持SCL。

在I2C 通訊協定中,時脈速度和訊號始終由主元件產生。 I2C 主元件產生的訊號提供主元件和節點連接之間的同步。

在某些情況下,節點或子節點不是以全狀態工作,在接收主元件產生的時脈之前,需要減慢速度。這是透過一種稱為「時脈延展」的機制來實現的。

在時脈延展期間,為了降低總線速度,允許節點壓低時脈。而在主元件方面,在其變為高位準狀態後,必須回讀時脈訊號。然後,它必須等待,直至線路達到高位準狀態。

頻寬

雖然時脈延展是一種常見做法,但它對頻寬有影響。使用時脈延展時,共用匯流排的總頻寬可能會明顯降低。即使使用這種技術,匯流排性能仍然必須可靠且快速。有必要考慮使用時脈延展的估計影響,尤其是在多個元件共用 I2C匯流排的情況下。

Figure 14. Microcontroller data sheet.
圖 14. 微控制器數據手冊

透過時脈延展,I2C 節點元件可以強制主元件進入等候狀態。當節點元件需要更多時間來管理數據時,例如儲存接收到的數據或準備發送另一位元組的數據時,它可能會執行時脈延展。這通常發生在節點元件接收並確認收到一個位元組的數據之後。

哪些I2C節點元件需要時脈延展?

是否需要時脈延展取決於節點元件的功能。這裡有兩個例子:

  • 處理元件(如微處理器或微控制器)可能需要額外的時間來處理中斷,接收和管理數據,以及執行適當的功能。
  • 較簡單的元件(如EEPROM)不在內部處理數據,因此不需要時脈延展來執行任何功能。

I2C 數據手冊示例概述

不同公司和製造商採用不同方法來創建數據手冊。圖13顯示了一個簡單的數據手冊示例和基本 I2C 細節,包括暫存器和電子規格。

Figure 15. Microcontroller memory map.
圖15. 微控制器記憶體映射

表4顯示了最常用的I2C 暫存器。名稱和描述可能因數據手冊而異,但功能和用法相同。

表4.I2C 暫存器描述
名稱 描述
I2C_ADDR1 主元件位址位元組 1
I2C_ADDR2 主元件位址位元組 2
I2C_BYT 起始位元組
I2C_ID 節點地址元件ID
I2C_MCTL 主元件控制
I2C_MRX 主元件接收數據
I2C_SCTL 節點控制
I2C_SRX 節點接收
I2C_STAT 主元件和節點FIFO狀態

I2C 的創建可能因使用情況而異。表5顯示了基本 I2C驅動程式API要求的示例。

表5. I2C 驅動開發
主元件 節點
初始化
發送處理常式 發送處理常式
接收處理常式 接收處理常式
事件中斷
錯誤中斷

SMBus

眾所皆知,SMBus可用於需要對參數進行關鍵監控的應用。它最常見的應用是電腦主機板和嵌入式系統。對於溫度、電源電壓、風扇監控和/或控制整合晶片,它有額外的監控規範。

SMBus是一種2線式匯流排,類似於飛利浦公司於1980年代開發的I2C 匯流排。兩個主要訊號是時脈(SMBCLK)和數據(SMBDAT)。I2CPrimer和SMBus相互相容,但存在明顯差異,例如:

  • SMBus邏輯位準閾值是固定的,與元件的電源電壓不成比例。因此,具有不同電源電壓的元件可以在同一Primer上運行。例如,一個SMBus可能具有多個由1.8 V、3.3 V和5 V電源供電的元件。
  • 它們都以最高100 kHz的相同速度運行,但I2C Primer有400 kHz和2 MHz兩個版本。
  • SMBus規定了最低時脈速度,並限制了時脈在一個事務中可以延展的量。違反超時限制會導致所有SMBus元件重定其I⁄O邏輯以允許匯流排重啟。這種設計增強了匯流排的穩固性。
  • 二者的超時也不同。I2C Primer沒有超時,而SMBus有超時——對於10 kHz最低時脈速度,可以考慮35 ms的超時。
  • 分組差錯校驗(PEC)最初是為SMBus定義的。在每個事務的尾端增加一個分組錯誤碼位元組。
  • 其餘的一些差異涉及傳輸類型、警報線、暫停線、關斷或上電。

SMBus元件每次收到其自己的地址時,無論在做什麼,它都必須應答(ACK),這是一個明確要求,目的是確保主元件可以準確地判斷匯流排上哪些元件處於活動狀態。

所有SMBus事務都透過指定的SMBus協議之一執行。

SMBus還有一個可選訊號SMBALERT#,節點元件可以使用該訊號快速通知主元件或系統主機,它有主元件需要的資訊,例如報告故障情況。

Figure 16. SMBus topology.
圖16. SMBus拓撲結構

SMBus上拉電路

Figure 17. SMBus pull-up circuitry.
圖17. SMBus上拉電路

SMBus地址

SMBus位址有7個二進位位元,通常表示為前4位元、後3位元以及最後一個字母b,例如0001 110b。這些位址佔據匯流排上一個8位元欄位的高7位元。然而,該欄位的最低位元另有含義,不屬於SMBus地址的範圍。

Figure 18. Node address.

圖18. 節點地址

7位元目標位址從主元件發送到匯流排上的一個或多個元件(例如透過廣播位址)。

請注意,起始條件和停止條件是轉換,而不是位元,在符號上方未顯示位元數目。在事務圖中顯示時,重複起始也是一個轉換,而不是一位元,在符號上方也不顯示位元數目。

Figure 19. An SMBus message.
圖19. SMBus消息

SMBus時序測量

表6. SMBus參數
符號 參數 單位
fSMB SMBus 工作頻率 kHz
tBUF 停止與起始條件之間的匯 µs
THD-STA (重複)起始條件之後的 µs
TSU-STA 重複起始條件的建立時間 µs
tSU(STO) 停止條件的建立時間 µs
tHD(DAT) 數據保持時間 ns
tSU(DAT) 數據建立時間 ns
tTIMEOUT 檢測時脈低位準超時 ms
tLOW 時脈低位準週期 µs
tHIGH 時脈高位準週期 µs

PMBus:重新定義電源管理

除了SMBus之外,還有一個變體PMBus,它是一種開放標準電源管理協定。這種彈性且高度通用的標準允許基於類比和數位技術的元件之間進行通訊,並提供真正的互通性,由此將能降低電源系統設計的複雜性並縮短產品上市時間。

PMBus用於具有電源控制和管理元件的電源的數位管理。它具有支援電源管理要求的命令和結構。這表示I2C Primer和PMBus在電氣要求和命令語義上是相容和可交互操作的。

電源管理的基本參數之一是過壓位準監控,PMBus提供了設定和讀取該值的命令。PMBus可以附加在I2C Primer和SMBus的已有特性上,充當現有標準(尤其是SMBus)之上的協定層。

I2C 規範僅描述了2線匯流排的實體層、時序和流控制。I2C 規範沒有(像SMBus協定那樣)描述消息的格式,也沒有描述消息的內容。

PMBus規範是一個完整的電源管理協議。它說明了如何將bits和bytes從一個元件傳送到另一個元件(即傳輸)。它還描述了一種命令語言,賦予這些bits和bytes以意義。

定址

對於冗餘系統,一旦電源安裝到系統中,最多有三個訊號來設定電源的位址位置:地址2、地址1和地址0。對於非冗餘系統,電源元件位址位置應為B0h。

硬體

針對基於I2C VDD的電源和驅動(對於 VDD = 3.3 V),電源中的元件應 與SMBus 2.0高功率規範相容。該匯流排應以3.3 V運行。

電源

電源內部的電路應從備用輸出獲得電源。對於冗餘電源,元件應從「邏輯或」元件的系統側供電。只要系統中的電源或並聯冗餘電源接通交流電源,PMBus元件就應處於開啟狀態。

上拉電阻

電源內部的SCL或SDA線上只能使用弱上拉電阻。主要上拉電阻由系統提供,可以連接到3.3 V或5 V。對於系統設計,主要上拉電阻應位於電源外部,並從備用電源軌獲取電源。

數據速度

電源中的PMBus元件應以100 kbps SMBus全速運行,並盡可能避免使用時脈延展,因為它會減慢總線速度。

總結

表8概述並總結了I2C Primer、SMBus(高功率和低功率)、PMBus的訊號、時序和電氣規格。

I2C Primer、SMBus和PMBus有何關係?

SMBus最初開發用於協助電池管理系統,使用I2C 硬體,但增加了第二級軟體,最終允許元件熱插拔,而無需重新開機系統。PMBus擴展了SMBus,定義了一組專門用於管理功率轉換器的元件命令,暴露了元件的測量電壓、電流、溫度等屬性。一般而言,I2C Primer、SMBus和PMBus元件可以共用匯流排而不會發生什麼大問題。

I2C、SMB、PMB的優勢

  • 僅使用兩條線
  • 具有ACK⁄NACK位元
  • 廣為人知的協議
  • 支援多個主元件和多個節點
  • 硬體不如UART複雜
  • 廣泛使用的方法

缺點

  • 數據傳輸速率比SPI慢
  • 數據幀的大小限制為8位元
  • 實現所需的硬體比SPI複雜
Figure 20. SMBus timing measurements.
圖20. SMBus時序測量
表7. PMBus定址
所有地址 主要定址,用於具有兩個定址接腳的大多數伺服器電源 附近定址,前提是電源上提供了三個定址接腳
系統定址 地址2/地址1/地址0 0/0/0 0/0/1 0/1/1 0/1/1 1/0/0 1/0/1 1/1/0 1/1/1
PMBus 元件讀取地址 B0h/B1h B2h/B3h B4h/B5h B6h/B7h B8h/B9h BAh/BBh BCh/BDh BEh/BFh

用例

  • 感測器讀取
  • 感測器寫入
  • EEPROM、溫度感測器、觸控螢幕、接近感測器
  • 傳輸和控制用戶指引的操作
  • 與多個微控制器通訊
  • 消費性電子裝置
  • 系統管理
  • 電源管理
  • 調試
表8.I2C Primer、SMBus和PMBus規格總結
規格 I2C Primer

SMBus

High Power | Low Power
PMBus
訊號 分組差錯校驗
(可選) SMBALERT
(可選)

模塊大小限制






32 位元組


32 位元組


255 位元組
時序 數據速率:
標椎模式 快速模式 快速模式+ 高速模式

時脈速度

時脈速度

匯流排超時
匯流排主元件請求延遲
(最小值) SCL 保持時間
(最大值)

數據保持時間(最小值)
100 kbps
400 kbps
1 Mbps
3.4 Mbps
0 Hz至3.4 MHz




100 kbps




10 kHz 至 100 kHz
25 ms 至 35 ms
50 μs

2 ms
300 ns
100 kbps




10 kHz 至 100 kHz
25 ms 至 35 ms
50 μs

2 ms
300 ns
100 kbps
400 kbps


10 kHz 至 400 kHz
25 ms 至 35 ms
50 μs

2 ms
300 ns
電氣 每個總線段的容性負載(最大值)

上升時間(最大值)

0.4V時的上拉電流(最大值)

每個元件的漏流(最大值) VIL輸入邏輯低位準閾值(最大值) VIH輸入邏輯高位準閾值(最小值)

VOL輸出邏輯低位準閾值(最大值)
400 pF
1 μs (100 kHz時),
300 ns(400 kHz時) 3 mA (標準和快速模式)
±10 μA
0.3 VDD 或 1.5 V
0.7 VCC 或 3 V
0.4 V
400 pF
1 μs
4 mA
±10 μA
0.8 V
2.1 V
2.4 V

1 μs
350 μA
±5 μA
0.8 V
2.1 V
0.4 V
400 pF
1 μs (100 kHz時), 300 ns(400 kHz時)
4 mA
±10 μA
0.8 V
2.1 V
0.4 V

參考電路

通訊的優勢和侷限I2C”。 Total Phase,2016年8月。

Afzal, Sal。“I2C Primer:什麼是I2C? (第一部分))”。 ADI。

Afzal, Sal。 “I2C 時序:定義和規範指南(第2部分)”。ADI。

Campbell, Scott。“I2C通訊協議基礎”。 Circuit Basics。

I2C 快速指南ADI。

I2C—是什麼?” I2C 匯流排。