二十、I2C總線仲裁機制


一、概述

  I2C (Inter-IntegratedCircuit)總線是一種由PHILIPS公司開發的兩線式串行總線,用於連接微控制器及其外圍設備,一個i2C總線上可以掛載多個從設備,多個設備同時使用總線時,怎么防止數據沖突,這就需要i2c的總線仲裁機制。

 

二、i2c總線仲裁機制

1、I2C總線上可能在某一時刻有兩個主控設備要同時向總線發送數據,這種情況叫做總線競爭

2、I2C總線具有多主控能力,可以對發生在SDA線上的總線競爭進行仲裁,其仲裁原則是這樣的:

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

  • 對於整個仲裁過程主控器1和主控器2都不會丟失數據;
  • 各個主控器沒有對總線實施控制的優先級別,他們遵循“低電平優先”的原則,即誰先發送低電平誰就會掌握對總線的控制權

3、i2c總線仲裁主要遵循三個機制:

  • “線與”機制:

    多主機時,總線具有“線與”的邏輯功能,即只要有一個節點發送低電平時,總線上就表現為低電平

  • SDA回讀機制

    總線被啟動后,多個主機在每發送一個數據位時都要對自己的輸出電平進行檢測,只要檢測的電平與自己發出的電平一致,就會繼續占用總線。

  • 低電平優先機制

    由於線與的存在,當多主機發送時,誰先發送低電平誰就會掌握對總線的控制權

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM