I2C匯流排(一)硬體結構 及 IIC時序

2021-08-14 17:49:22 字數 1788 閱讀 8759

概念:i2c中心是 兩線式 序列匯流排,用於連線微控制器及其外圍裝置。

i2c匯流排只有兩根雙向訊號線:

sda:資料線     scl:時鐘線

控制原理:通過控制scl和sda線高低電平時序,產生i2c匯流排協議所需的訊號進行資料傳輸。在匯流排空閒狀態,這兩根線一般被上面所接的上拉電阻拉高,保持高電平。

i2c傳輸速率:100kbit/s ~ 3.4mbit/s

d0位:資料傳送方向位,為0時表示主裝置向從裝置寫資料,為1時表示主機由從裝置讀資料。

主裝置傳送位址時,匯流排上的每個從裝置都將這7位位址碼與自己的位址進行比較,如果相同,則認為自己正在被主裝置定址,根據r/w位講自己確定為傳送器或接收器

從裝置的位址有固定部分和使用者自定義部分組成。

1. 固定部分:d7~d4 共4位決定。這是由從裝置的生產廠商生產時就確定的值。

2. 使用者自定義部分:d3~d1 共3位。這3位通常對應裝置的3個引腳(a0~a2)。把三個引腳接到不同的電平上,就可以形成乙個3位的數值。

i2c匯流排的sda和scl兩條訊號線同時處於高電平時,規定為匯流排的空閒狀態。

在時鐘線scl保持高電平期間,資料線sda上的電平被拉低(即負跳變),定義為i2c匯流排的啟動訊號,標誌著一次資料傳輸的開始。

在時鐘線scl保持高電平期間,資料線sda被釋放,是的sda上的電平被拉高(即正跳變),定義為i2c匯流排的停止訊號,標誌著一次資料傳輸的結束

i2c匯流排上的所有資料(位址和資料)都是以8位乙個位元組位單位進si傳輸的。

傳送器每傳送乙個位元組,就在時鐘脈衝第9位釋放資料線,並由接收器反饋乙個應答訊號。

應答訊號為低電平時,定為有效應答位ack,表示接收器已經成功接收了該位元組;

應答位為高電平時,定為非應答位(nack)表示接收器接收該位元組失敗。

對i2c匯流排的操作實際就是主從裝置之間的讀寫操作。大致可分為以下三種操作情況:

第一,主裝置往從裝置中寫資料。資料傳輸格式如下:

第二,主裝置從從裝置中讀資料。資料傳輸格式如下:

第三,主裝置往從裝置中寫資料,然後重啟起始條件,緊接著從從裝置中讀取資料;或者是主裝置從從裝置中讀資料,然後重啟起始條件,緊接著主裝置往從裝置中寫資料。資料傳輸格式如下:

第三種操作在單個主裝置系統中,重複的開啟起始條件機制要比用stop終止傳輸後又再次開啟匯流排更有效率。

I2C匯流排硬體基礎

i2c 內建積體電路 匯流排是由philips公司開發的兩線式序列匯流排,產生於20世紀80年代,用於連線微控制器及其外圍裝置。i2c匯流排簡單而有效,占用很少的pcb 印刷電路板 空間,晶元管腳數量少,設計成本低。i2c匯流排支援多主控 multi mastering 模式,任何能夠進行傳送和接收...

iic匯流排從機仲裁 I2C匯流排的仲裁機制

在多主的通訊系統中。匯流排上有多個節點,它們都有自己的定址位址,可以作為從節點被別的節點訪問,同時它們都可以作為主節點向其他的節點傳送控制位元組和傳 送資料。但是如果有兩個或兩個以上的節點都向匯流排上傳送啟動訊號並開始傳送資料,這樣就形成了衝突。要解決這種衝突,就要進行仲裁的判決,這就是i 2c匯流...

i2c匯流排時序

一心想踏入linux device driver的世界,想著i2c匯流排相對於usb等其他匯流排較為簡單,就以i2c作為切入點,希望可以逐步理解ldd的設計思想,並能理解其裝置模型的概念。在此對近期於i2c匯流排及驅動原始碼的理解做備忘,以免徒勞。平台友善之臂s70 tiny6410 cpusams...