久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 深入理解 I2C 協議

深入理解 I2C 協議

作者: 時間:2026-03-20 來源: 收藏

互連集成電路(I2C)協議一直是短距離、板內通信的核心技術。然而,實現穩定可靠的 I2C 通信并非僅僅連接兩根線那么簡單。本文通過常見問題解析,深入探討開漏物理層寄存器級尋址的技術細節,幫助讀者更透徹地理解 I2C 通信原理。

I2C 與 SPI 等推挽式接口有何區別?

I2C 最核心的特征是開漏(或開集電極)架構

與 SPI、UART 采用推挽驅動、主動將信號線拉至高電平或低電平不同,I2C 設備只能主動將總線拉低,無法主動拉高

圖 1 展示了該拓撲結構:多個設備(控制器與目標設備)連接到共享的串行數據線(SDA)和串行時鐘線(SCL)。值得注意的是,兩條總線均通過外部上拉電阻(Rp)連接至電源電壓(VDD)。

1773990319574312.png

圖 1. 簡化 I2C 系統拓撲,展示控制器與多個目標設備連接至共享 SDA、SCL 總線(圖片來源:安世半導體 Nexperia)

I2C 的高低電平邏輯如下:

  • 邏輯 0(低電平):發送 0 時,器件內部 N 溝道 MOSFET 導通,信號線直接接地,電路主動灌電流。

  • 邏輯 1(高電平):發送 1 時,器件關斷內部 MOSFET,引腳進入高阻態,總線懸空,由外部上拉電阻將電壓拉回 VDD。

多主機系統中為何必須采用開漏架構?

該架構形成了線與(Wired?AND)邏輯

由于沒有設備主動輸出高電平,多個設備可同時掛接在總線上,不會出現一個設備輸出高電平、另一個拉低而導致 VDD 到 GND 短路的風險。

只要任意一個設備將總線拉低,整個總線就會呈現低電平。這一物理特性支撐了 I2C 兩項關鍵功能:

  1. 時鐘同步:低速目標設備可拉低 SCL,暫停控制器傳輸。

  2. 總線仲裁:多控制器系統中,若兩個控制器同時發送,發送 0 的一方會 “覆蓋” 發送 1 的一方,實現非破壞性仲裁

有效 I2C 通信的基本規則

1773990362872009.png

圖 2 展示了完整的 I2C 幀結構:8 位數據、高位先行、雙向傳輸協議。為便于理解,可將通信分為三部分。

圖 2. 完整 I2C 數據傳輸結構(圖片來源:恩智浦半導體 NXP)

傳輸事務

傳輸幀由僅在時鐘為高電平時才會出現的特定電氣狀態界定:

  • 起始條件(S):SCL 為高電平時,SDA 從高電平變為低電平。

用于喚醒總線上所有設備并開始監聽。

  • 停止條件(P):SCL 為高電平時,SDA 從低電平變為高電平。

標志事務結束,總線回到空閑狀態。

注意:數據傳輸期間,SCL 為高電平時 SDA 必須保持穩定,僅允許在 SCL 低電平時改變狀態。

地址處理

起始條件后的第一個字節為地址幀,包含:

  • 目標地址(7 位):從機設備的唯一標識。

  • 讀 / 寫位(1 位):該字節最低位。

    • 0:寫操作(控制器 → 目標設備)

    • 1:讀操作(目標設備 → 控制器)

第 9 位:應答位

每傳輸一個字節(地址或數據)后,都會跟隨第 9 個時鐘脈沖,即應答位(ACK/NACK)

  • ACK(邏輯 0):接收方拉低 SDA,表示已正確接收該字節。

  • NACK(邏輯 1):接收方保持 SDA 高電平,表示非應答。

通常代表設備不存在、設備忙或讀序列結束。

實例分析

以下是 I2C 在硬件層面寫入設備內部指定寄存器的實際應用。圖 3 展示對德州儀器 DAC80501 數模轉換器進行多字節寫入的過程。

1773990394610327.png

圖 3. I2C 寫幀解析,展示配置外設所需的地址、命令與數據字節序列(圖片來源:德州儀器 Texas Instruments)

操作可簡化為三步:

  1. 地址幀:控制器發送地址 + 寫位(如 0x49 + 0)。

  2. 命令幀:控制器發送寄存器指針(如 0x08),

告知 DAC 后續數據將寫入 DAC 數據寄存器。

  1. 數據幀:控制器發送 16 位電壓值(高位在前,低位在后)。

這是執行器類設備的標準工作流程:地址 → 命令 → 數據

總結

掌握 I2C 不能只停留在調用庫函數層面,還需要理解:

  • 高電平是被動上拉而非主動驅動;

  • 第 9 位(ACK)是有效數據傳輸的基礎握手機制

  • 復雜的寄存器訪問幾乎都遵循先寫指針,再發起重復起始條件的流程。


關鍵詞: I2C 協議

評論


相關推薦

技術專區

關閉