I2C總線基礎知識

I2C 總線

I2C 的英文拼寫是“Inter—Integrate Circuit”,即內置集成電路。I2C 是一種由 Philips 公司開發的兩線式串行總線,用於連接微控制器及其外圍設備。I2C 總線只有兩根線分別爲:時鐘線 SCL(Serial Clock)和數據線 SDA(Serial Data)。總線空閒時,上拉電阻使 SDA 和SCL 線都保持高電平。I2C 總線上任意器件輸出低電平都會使相應總線上的信號變低。

I2C 總線簡單而實用,佔用的 PCB(印刷電路板)空間很小,芯片引腳數量少,設計成本低。I2C 總線支持多主控(Multi-Mastering)模式,任何能夠進行發送和接收的設備都可以成爲主設備。主控能夠控制數據的傳輸和時鐘頻率,在任意時刻只能有一個主控。

I2C 電平信號

I2C 設備上的串行數據線 SDA 接口是雙向的,用於向總線上發送或接收數據。串行時鐘線 SCL 也是雙向的,作爲控制總線數據傳輸的主機通過 SCL 接口發送時鐘信號提供給從設備;作爲接受主機命令的從設備按照 SCL 上的信號發送或接收 SDA 上的信號。

I2C 總線在傳輸數據的過程中,主要有三種控制信號:起始信號,結束信號,應答信號。

  • 起始信號:當 SCL 爲高電平時,SDA 由高電平轉爲低電平時,開始傳輸數據。

  • 結束信號:當 SCL 爲高電平時,SDA由低電平轉爲高電平時,結束數據傳輸。

  • 應答信號:接收數據的器件在接收到 8bit 數據後,向發送數據的器件反饋一個應答信號,表示已經收到數據。

    • 應答信號爲低電平時,規定爲有效應答位(ACK ),表示接收器已經成功地接收了該字節;
    • 應答信號爲高電平時,規定爲非應答位(NACK),一般表示接收器接收該字節沒有成功。

對於反饋有效應答位 ACK 的要求是,接收器在第 9 個時鐘脈衝之前的低電平期間將 SDA 線拉低,並且確保在該時鐘的高電平期間爲穩定的低電平。接收器如果是主控器,則在它收到最後一個字節後,發送一個 NACK 信號,以通知被控發送器結束數據發送,並釋放 SDA 線,以便主控接收器發送一個停止信號。

I2C 幀時序

開始位和停止位都由 I2C 主機產生。在選擇從設備時,如果從設備採用 7 位地址,則主設備在發起傳輸過程前,需先發送 1 字節的設備地址信息,前 7 位爲設備地址,最後 1 位爲讀寫標誌。之後,I2C 每次傳輸的數據也是 1 字節,並從 MSB 開始傳輸(最高有效位)。每個字節傳完後,在 SCL 的第 9 個上升沿到來之前,接收方應該發出一個 ACK 位。在 SCL的時鐘脈衝由 I2C 主控方發出,在第 8 個時鐘週期之後,主控方應該釋放 SDA。I2C 總線的
時序如圖如下所示:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章