新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > I2C總線的仲裁機制

        I2C總線的仲裁機制

        作者: 時間:2016-12-15 來源:網絡 收藏
        在多主的通信系統中。總線上有多個節點,它們都有自己的尋址地址,可以作為從節點被別的節點訪問,同時它們都可以作為主節點向其他的節點發送控制字節和傳送數據。但是如果有兩個或兩個以上的節點都向總線上發送啟動信號并開始傳送數據,這樣就形成了沖突。要解決這種沖突,就要進行仲裁的判決,這就是I 2C總線上的仲裁。
        I2C總線上的仲裁分兩部分:SCL線的同步和SDA線的仲裁。
        1SCL線的同步(時鐘同步)
        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時鐘同步處理過程沒有先后關系,而是同時進行的。


        關鍵詞: I2C總線仲裁機

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 灵璧县| 民乐县| 青铜峡市| 南昌市| 清流县| 武隆县| 达拉特旗| 耿马| 社旗县| 香格里拉县| 吉安市| 金堂县| 汝州市| 潮州市| 扶绥县| 德州市| 巴林左旗| 襄垣县| 格尔木市| 麻阳| 翁源县| 临汾市| 拜泉县| 正定县| 措勤县| 淳安县| 同心县| 石狮市| 皮山县| 徐州市| 汕头市| 海安县| 田林县| 屏山县| 农安县| 厦门市| 镇平县| 沂水县| 盐城市| 怀化市| 荣昌县|