I2C總線是由NXP(原PHILIPS)公司設計,有十分簡潔的物理層定義,其特性如下:
? 只要求兩條總線線路:一條串行數據線SDA,一條串行時鐘線SCL;
? 每個連接到總線的器件都可以通過唯一的地址和一直存在的簡單的主機/從機關系軟件設定地址,主機可以作為主機發送器或主機接收器;
? 它是一個真正的多主機總線,如果兩個或更多主機同時初始化,數據傳輸可以通過沖突檢測和仲裁防止數據被破壞;
? 串行的8 位雙向數據傳輸位速率在標準模式下可達100kbit/s,快速模式下可達400kbit/s,高速模式下可達3.4Mbit/s;
? 連接到相同總線的IC 數量只受到總線的最大電容400pF 限制。
其典型的接口連線如下:
I2C的協議很簡單:
數據的有效性
在傳輸數據的時候,SDA線必須在時鐘的高電平周期保持穩定,SDA的高或低電平狀態只有在SCL 線的時鐘信號是低電平時才能改變 。
起始和停止條件
SCL 線是高電平時,SDA 線從高電平向低電平切換,這個情況表示起始條件;
SCL 線是高電平時,SDA 線由低電平向高電平切換,這個情況表示停止條件。
字節格式
發送到SDA 線上的每個字節必須為8 位,每次傳輸可以發送的字節數量不受限制。每個字節后必須處理一個響應位。
應答響應
數據傳輸必須帶響應,相關的響應時鐘脈沖由主機產生。在響應的時鐘脈沖期間發送器釋放SDA 線(高)。
在響應的時鐘脈沖期間,接收器必須將SDA 線拉低,使它在這個時鐘脈沖的高電平期間保持穩定的低電平。
也就是說主器件發送完一字節數據后要接收一個應答位(低電平),從器件接收完一個字節后要發送一個低電平。
尋址方式(7位地址方式)
第一個字節的頭7 位組成了從機地址,最低位(LSB)是第8 位,它決定了傳輸的 普通的和帶重復開始條件的7位地址格式方向。第一個字節的最低位是
“0”,表示主機會寫信息到被選中的從機;
“1”表示主機會向從機讀信息。當發送了一個地址后,系統中的每個器件都在起始條件后將頭7 位與它自己的地址比較,如果一樣,器件會判定它被主機尋址,至于是從機接收器還是從機發送器,都由R/W 位決定。
仲裁
I2C是所主機總線,每個設備都可以成為主機,但任一時刻只能有一個主機。
stm32至少有一個I2C接口,提供多主機功能,可以實現所有I2C總線的時序、協議、仲裁和定時功能,支持標準和快速傳輸兩種模式,同時與SMBus 2.0兼容。
-
NXP
+關注
關注
60文章
1287瀏覽量
184986 -
STM32
+關注
關注
2270文章
10921瀏覽量
356965 -
總線
+關注
關注
10文章
2898瀏覽量
88262
原文標題:STM32的I2C通信
文章出處:【微信號:mcugeek,微信公眾號:MCU開發加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論