I2C是inter-integrated circuit的縮寫,又名為TWI,只需要用兩條物理線進行傳輸,分別命名為SDA和SCL,用于傳輸serial data和serial clock。I2C工作時分為主從工作模式,而在同總線上可以存在多個主機。每一個連接到總線的器件都可以通過唯一的地址與總線連接,主機控制主機為發送器模式或是接收器模式。多個主機控制時可以通過沖突檢測和仲裁防止數據被破壞。I2C總線有幾種不同速率的工作模式,標準模式的速率為100kbps,快速模式下速率為400kbps,在高速模式下速率可達到3.4Mbps。整理下I2C基本的傳輸方式。
數據發送過程
發送從起始到結束為一次完整發送過程,如圖所示一次完整的發送過程,起始后先發送地址信息,R/W表示寫入或是讀取數據,如果一次過程中,需要切換讀寫操作時,需要重新發送start。SDA線上的每個字節必須為8位,每次傳輸可以發送的字節數量不受限制,而每個字節后必須跟一個響應位。從機在處理其他事件而不能接收數據時,可以通過控制SCL保持低電平來等待數據接收,等到準備好繼續傳輸時,釋放SCL。在總線上每個模塊具有唯一的地址,當然亦可以設計廣播地址,通知所有其他模塊。
啟動和停止
當I2C不工作時,SDA和SCL一樣都處于高位HIGH,SCL保持為HIGH,SDA由HIGH變LOW時表示開始傳輸,而SCL保持HIGH,SDA由LOW變為HIGH時表示停止傳輸。Sr和S完全相同,差別只是第一次Start之后沒有進行stop,再次啟動Start。
數據產生
SDA上傳送的數據必須在時鐘高電平時保持穩定,而數據的改變只有在SCL為低時進行,而SCL由主機控制產生。
沖突仲裁
主機在總線空閑時候啟動傳輸。而當總線上有多個主機時,可能產生同時啟動的沖突,因此需要仲裁。仲裁方式是,當SCL線是高電平時,仲裁在SDA線發生 這樣在其他主機發送低電平時發送高電平的主機將斷開它的數據輸出級,因為總線上的電平與它自己的電平不相同,總線上的電平總是在一個輸出為低時就為低。仲裁可以持續多位,當丟失仲裁的主機同時具有從機功能時,需要立即切換從機狀態。
從機掛起數據發送示例
-
接收器
+關注
關注
15文章
2563瀏覽量
73535 -
總線
+關注
關注
10文章
2956瀏覽量
89455 -
I2C
+關注
關注
28文章
1538瀏覽量
127237
原文標題:帶你理解I2C總線數據傳輸方式
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
HT45R37使用I2C進行數據傳輸的方法 (C語言)
I2C Guid I2C指南
基于CPLD的I2C總線接口設計

i2c總線用來做什么_i2c總線數據傳輸過程
硬件I2C與模擬I2C

評論