I2C匯流排的仲裁機制

2022-03-29 11:06:35 字數 2004 閱讀 1580

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

i2c匯流排上的仲裁分兩部分:scl線的同步和sda線的仲裁。

1  scl線的同步(時鐘同步)

scl同步是由於匯流排具有線「與」的邏輯功能,即只要有乙個節點傳送低電平時,匯流排上就表現為低電平。當所有的節點都傳送高電平時,匯流排才能表現為高電平。正是由於線「與」邏輯功能的原理,當多個節點同時傳送時鐘訊號時,在匯流排上表現的是統一的時鐘訊號。這就是scl的同步原理

時鐘的同步

2 sda仲裁

sda線的仲裁也是建立在匯流排具有線「與」邏輯功能的原理上的。節點在傳送1位資料後,比較匯流排上所呈現的資料與自己傳送的是否一致。是,繼續傳送;否則,退出競爭。sda線的仲裁可以保證i2c匯流排系統在多個主節點同時企圖控制匯流排時通訊正常進行並且資料不丟失。匯流排系統通過仲裁只允許乙個主節點可以繼續佔據匯流排

3仲裁過程

兩個主節點的仲裁過程

上圖是以兩個節點為例的仲裁過程。data1和data2分別是主節點向匯流排所傳送的資料訊號,sda為匯流排上所呈現的資料訊號,scl是匯流排上所呈現的時鐘訊號。當主節點1、2同時傳送起始訊號時,兩個主節點都傳送了高電平訊號。這時匯流排上呈現的訊號為高電平,兩個主節點都檢測到匯流排上的訊號與自己傳送的訊號相同,繼續傳送資料。第2個時鐘週期,2個主節點都傳送低電平訊號,在匯流排上呈現的訊號為低電平,仍繼續傳送資料。在第3個時鐘週期,主節點1傳送高電平訊號,而主節點2傳送低電平訊號。根據匯流排的線「與」的邏輯功能,匯流排上的訊號為低電平,這時主節點1檢測到匯流排上的資料和自己所傳送的資料不一樣,就斷開資料的輸出級,轉為從機接收狀態。這樣主節點2就贏得了匯流排,而且資料沒有丟失,即匯流排的資料與主節點2所傳送的資料一樣,而主節點1在轉為從節點後繼續接收資料,同樣也沒有丟掉sda線上的資料。因此在仲裁過程中資料沒有丟失。

總結:sda仲裁和scl時鐘同步處理過程沒有先後關係,而是同時進行的。

每乙個iic匯流排器件內部的sda、scl引腳電路結構都是一樣的,引腳的輸出驅動與輸入緩衝連在一起。其中輸出為漏極開路的場效電晶體、輸入緩衝為乙隻高輸入阻抗的同相器[1]。這種電路具有兩個特點:

①由於sda、scl為漏極開路結構,借助於外部的上拉電阻實現了訊號的「線與」邏輯;

②引腳在輸出訊號的同時還將引腳上的電平進行檢測,檢測是否與剛才輸出一致。為 「時鐘同步」和「匯流排仲裁」提供硬體基礎。

i2c匯流排介面內部結構

如果被控器希望主控器降低傳送速度可以通過將scl主動拉低延長其低電平時間的方法來通知主控器,當主控器在準備下一次傳送發現scl的電平被拉低時就 進行等待,直至被控器完成操作並釋放scl線的控制控制權。這樣以來,主控器實際上受到被控器的時鐘同步控制。可見scl線上的低電平是由時鐘低電平最長 的器件決定;高電平的時間由高電平時間最短的器件決定。這就是時鐘同步,它解決了i2c匯流排的速度同步。

假設主控器1要傳送的資料data1為「101 ……」;主控器2要傳送的資料data2為「1001 ……」匯流排被啟動後兩個主控器在每傳送乙個資料位時都要對自己的輸出電平進行檢測,只要檢測的電平與自己發出的電平一致,他們就會繼續占用匯流排。在這種情 況下匯流排還是得不到仲裁。當主控器1傳送第3位資料「1」時(主控器2傳送「0」 ),由於「線與」的結果sda上的電平為「0」,這樣當主控器1檢測自己的輸出電平時,就會測到乙個與自身不相符的「0」電平。這時主控器1只好放棄對總 線的控制權;因此主控器2就成為匯流排的唯一主宰者。 不難看出:

根據上面的描述,「時鐘同步」與「匯流排仲裁」可以總結如下規律:

[1]同相器:當輸入高電平時輸出也是高電平,輸入低電平時輸出也是低電平。主要要於需要緩衝的場合,就是只要輸入很小的電流,可輸出較大的電流,增加帶載能力。

I2C匯流排的仲裁機制

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

二十 I2C匯流排仲裁機制

i2c inter integratedcircuit 匯流排是一種由philips公司開發的兩線式序列匯流排,用於連線微控制器及其外圍裝置,乙個i2c匯流排上可以掛載多個從裝置,多個裝置同時使用匯流排時,怎麼防止資料衝突,這就需要i2c的匯流排仲裁機制。1 i2c匯流排上可能在某一時刻有兩個主控裝...

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

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