Synchronization And Arbitration
在多主的通信系統(tǒng)中??偩€上有多個節(jié)點,它們都有自己的尋址地址,可以作為從節(jié)點被別的節(jié)點訪問,同時它們都可以作為主節(jié)點向其他的節(jié)點發(fā)送控制字節(jié)和傳送數(shù)據(jù)。
但是如果有兩個或兩個以上的節(jié)點都向總線上發(fā)送啟動信號并開始傳送數(shù)據(jù),這樣就形成了沖突。要解決這種沖突,就要進行仲裁的判決,這就是 I2C
總線上的仲裁。
I2C 總線上的仲裁分兩部分:SCL 線的同步和 SDA 線的仲裁,這兩部分沒有先后關系,同時進行。
SCL Synchronization
SCL
同步是由于總線具有線“與”的邏輯功能,即只要有一個節(jié)點發(fā)送低電平時,總線上就表現(xiàn)為低電平。當所有的節(jié)點都發(fā)送高電平時,總線才能表現(xiàn)為高電平。正是由于線“與”邏輯功能的原理,當多個節(jié)點同時發(fā)送時鐘信號時,在總線上表現(xiàn)的是統(tǒng)一的時鐘信號。這就是
SCL 的同步原理。
同步過程如下圖:
SDA Arbitration
SDA線的仲裁也是建立在總線具有線“與”邏輯功能的原理上的。節(jié)點在發(fā)送1位數(shù)據(jù)后,比較總線上所呈現(xiàn)的數(shù)據(jù)與自己發(fā)送的是否一致。是,繼續(xù)發(fā)送;否則,退出競爭。
SDA 線的仲裁可以保證 I2C
總線系統(tǒng)在多個主節(jié)點同時企圖控制總線時通信正常進行并且數(shù)據(jù)不丟失??偩€系統(tǒng)通過仲裁只允許一個主節(jié)點可以繼續(xù)占據(jù)總線。
仲裁在 SDA 上進行,此時 SCL 為高電平。
A 主機傳輸高電平,B 主機傳輸?shù)碗娖?,A 失去仲裁。
丟失仲裁的主機將生成時鐘脈沖,直到丟失仲裁的字節(jié)結束。
仲裁過程:
DATA1 和 DATA2 分別是主節(jié)點向總線所發(fā)送的數(shù)據(jù)信號,SDA 為總線上所呈現(xiàn)的數(shù)據(jù)信號,SCL 是總線上所呈現(xiàn)的時鐘信號。
當主節(jié)點 1、2
同時發(fā)送起始信號時,兩個主節(jié)點都發(fā)送了高電平信號。這時總線上呈現(xiàn)的信號為高電平,兩個主節(jié)點都檢測到總線上的信號與自己發(fā)送的信號相同,繼續(xù)發(fā)送數(shù)據(jù)。
第2個時鐘周期,2個主節(jié)點都發(fā)送低電平信號,在總線上呈現(xiàn)的信號為低電平,仍繼續(xù)發(fā)送數(shù)據(jù)。
在第3個時鐘周期,主節(jié)點1發(fā)送高電平信號,而主節(jié)點2發(fā)送低電平信號。根據(jù)總線的線“與”的邏輯功能,總線上的信號為低電平,這時主節(jié)點1檢測到總線上的數(shù)據(jù)和自己所發(fā)送的數(shù)據(jù)不一樣,就斷開數(shù)據(jù)的輸出級,轉為從機接收狀態(tài)。這樣主節(jié)點2就贏得了總線,而且數(shù)據(jù)沒有丟失,即總線的數(shù)據(jù)與主節(jié)點2所發(fā)送的數(shù)據(jù)一樣,而主節(jié)點1在轉為從節(jié)點后繼續(xù)接收數(shù)據(jù),同樣也沒有丟掉
SDA 線上的數(shù)據(jù)。因此在仲裁過程中數(shù)據(jù)沒有丟失。
再次提醒:SDA仲裁和SCL時鐘同步處理過程沒有先后關系,而是同時進行的。
-
總線
+關注
關注
10文章
2881瀏覽量
88095 -
同步
+關注
關注
0文章
89瀏覽量
19174 -
I2C
+關注
關注
28文章
1487瀏覽量
123787
發(fā)布評論請先 登錄
相關推薦
評論