1、基本概念
I2C的全稱是Inter-Integrated Circuit,譯為集成電路總線,是一種同步、雙向、半雙工的兩線式串行接口總線。連接到I2C總線上的設備既可以用作主設備,也可以用作從設備。主設備通常是一個微控制器或微處理器,用來控制通信的啟動和停止、時鐘信號(SCL)的產生,以及數據傳輸;從設備則是等待來自主設備的命令并響應命令接收。
I2C總線是共享的總線系統,因此可以將多個I2C設備連接到該系統上,不同的I2C設備有不同的器件地址,主設備通過I2C設備的器件地址訪問指定的I2C從設備,連接方式如下圖:

I2C采用的開漏輸出,SDA跟SCL兩根線都需要加上拉電阻,當總線空閑時候兩根線是高電平。I2C的優點在于其簡單性、靈活性、易于集成、通信速度快、占用引腳少、連接簡單等。然而,由于其半雙工的工作方式,以及在同一總線上連接的設備數量有限,I2C在某些應用中可能不是最佳選擇,也具有傳輸距離短、信號干擾大等缺點。
2、工作原理
I2C是一種雙線總線,分別是時鐘線SCL和數據線SDA。在正常工作中,總線協議有起始條件與停止條件。
起始條件:SCL為高電平,SDA由高電平變為低電平。
停止條件:SCL為高電平,SDA由低電平變為高電平。
起始跟停止條件由主機控制。當主機發出起始條件后,I2C總線會被認為忙碌狀態。當主機發出停止條件后,I2C總線會被認為空閑狀態。當主機發送一個重新起始條件替代停止位I2C總線也會被認為處于忙碌狀態。

主機發出起始條件后,開始讀取數據,但這里要注意的是數據的有效性。
數據有效性:SCL時鐘線在高電平期間,SDA必須是穩定的。SCL時鐘線在低電平時候SDA數據線才允許高電平或者低電平變化。每傳送一個數據位產生一個時鐘。

在數據傳輸時,SDA線上面的每個字節數據長度必須是8位。每次傳輸的字節不受限制,每個字節后面跟隨著一個應答位,數據以高有效位傳輸。如果從機不能夠接收數據或者傳輸一個完整的數據字節,直到他完成某些其他功能。例如一個內部中斷,它可以保持SCL為低電平狀態,迫使主服務器進入等待狀態。當從機準備好接收數據后它會釋放SCL時鐘線數據繼續傳輸。
-
單片機
+關注
關注
6065文章
44934瀏覽量
647662 -
嵌入式
+關注
關注
5143文章
19561瀏覽量
315478 -
開發板
+關注
關注
25文章
5565瀏覽量
102815 -
I2C接口
+關注
關注
1文章
139瀏覽量
25915
發布評論請先 登錄
利用數字示波器調試嵌入式I2C總線
I2C總線介紹 I2C讀寫時序介紹

ElfBoard嵌入式教育科普|CAN接口全面解析

基于CPLD的I2C總線接口設計

基于嵌入式Linux演示I2C設備調試
I2C LCD 器件通過驅動帶有 I2C 接口的 2 線式 16 字符 LCD

I2C系列的合集,可以系統學習I2C協議
嵌入式linux應用讀寫i2c示例

物聯網嵌入式軟件中的I2C總線設計詳解

ElfBoard嵌入式教育科普|UART接口全面解析

評論