1. 程式人生 > >I2C匯流排的仲裁機制

I2C匯流排的仲裁機制

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

    I2C總線上的仲裁分兩部分:SCL線的同步和SDA線的仲裁。

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

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

SCL的同步原理


時鐘的同步

2 SDA仲裁

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

3 仲裁過程

 

兩個主節點的仲裁過程

    上圖是以兩個節點為例的仲裁過程。DATA1DATA2分別是主節點向匯流排所傳送的資料訊號,SDA為總線上所呈現的資料訊號,SCL是總線上所呈現的時鐘訊號。當主節點12同時傳送起始訊號時,兩個主節點都發送了高電平訊號。這時總線上呈現的訊號為高電平,兩個主節點都檢測到總線上的訊號與自己傳送的訊號相同,繼續傳送資料。第

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

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

相關推薦

CAN匯流排學習①-匯流排仲裁機制

Controller Area Network簡稱CAN匯流排是一個在汽車電子上用得非常廣泛的一種協議,CAN匯流排有眾多優點…… 好,說了那麼多CAN的特點之後激起了我對CAN匯流排工作原理的興趣。CAN匯流排的匯流排仲裁機制是我覺得設計的非常精妙的,下面總

I2C匯流排仲裁原理

I2C (Inter-IntegratedCircuit)匯流排是一種由PHILIPS公司開發的兩線式序列匯流排,用於連線微控制器及其外圍裝置。 I2C中心以啟動訊號START來掌管匯流排,以停止訊號STOP來釋放匯流排;啟動訊號START後緊接著傳送一個地址位元組,其中7

I2C匯流排仲裁機制

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

I2C匯流排的時鐘同步和匯流排仲裁的深入理解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

I2C匯流排的同步和仲裁

每一個IIC匯流排器件內部的SDA、SCL引腳電路結構都是一樣的,引腳的輸出驅動與輸入緩衝連在一起。其中輸出為漏極開路的場效電晶體、輸入緩衝為一隻高輸入阻抗的同相器[1]。這種電路具有兩個特點:  ①由於SDA、SCL為漏極開路結構,藉助於外部的上拉電阻實現了訊號的“線與”

I2C匯流排協議篇二

 1.I2C協議    2條雙向序列線,一條資料線SDA,一條時鐘線SCL。    SDA傳輸資料是大端傳輸,每次傳輸8bit,即一位元組。    支援多主控(multimastering),任何時間點只能有一個主控。

i2c匯流排篇一

1.what is I2C? 簡單講就是用來傳輸資料的兩根線:一根資料線(SDA)一根時鐘線(SCL) 2.I2C怎麼傳輸的? (1)基本過程:      1.主機發出開始訊號     &n

Linux下如何使用I2C匯流排和ADC

I2C匯流排 一主多從的通訊協議 通訊都是由主裝置發起的 SCL:時鐘線,由主端控制 SDA:資料線,主端和從端都可以配置   SCL和SDA的預設電平狀態是高(上拉電阻)   i2c通訊協議: START訊號:起始訊號,SCL保持高,SDA從

淺談I2C匯流排

I2C(Inter Integrated Circuit,內部積體電路)匯流排是價格低廉卻很有效的用以互連小規模嵌入式系統內的外設的網路。I2C 匯流排有時候也叫作 IIC,它已有20多年的歷史了。I2C 介面和 SPI 介面的作用相同,但二者的使用方法有些不同。    I2C

Nordic nRF5 SDK 學習筆記之四, TWI (I2C) 匯流排

硬體: nRF52832 SDK: Ver 15.2.0 目標: TWI (I2C) 匯流排應用 (TWI MASTER 模式) 樣例: <InstallFolder>\examples\peripheral\twi_sensor TWI driv

I2C匯流排驅動框架詳解

一、I2C子系統總體架構 1、三大組成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C匯流排驅動(介面卡)和裝置驅動的註冊、登出方法,I2C通訊方法(”algorithm”)上層的,與具體硬體無關的程式碼以及探測裝置     檢測裝置地址的上層程式

Linux--核心---I2C匯流排驅動分析 以linux3.10.0 RK3288為例

Linux 3.10.0 iic匯流排註冊過程 I2C匯流排驅動包括I2C介面卡驅動載入與解除安裝以及I2C匯流排通訊方法 I2C核心提供了i2c_adapter的增加和刪除函式、i2c_driver的增加和刪除函式、i2c_client的依附和脫離函式 以及i2c傳輸、傳送

高通camera如何匹配I2C匯流排

1、dts配置 cci: qcom,[email protected] { compatible = "qcom,cci"; ... pinctrl-names = "cci_default

I2C匯流排訊號時序

I2C匯流排訊號時序總結 匯流排空閒狀態    I2C匯流排匯流排的SDA和SCL兩條訊號線同時處於高電平時,規定為匯流排的空閒狀態。此時各個器件的輸出級場效電晶體均處在截止狀態,即釋放匯流排,由兩條訊號線各自的上拉電阻把電平拉高。   啟動訊號   

對於RAC心跳以及仲裁機制的理解

1、節點1網絡卡損壞,無法接受到其他節點的心跳。  節點2能夠接受到節點三的心跳,節點3能夠接收到節點2的心跳。  節點1,心跳資訊給votingdisk說:“只有我活著!”  節點2、3,心跳資訊給votingdisk說:“我和2,我和3,都活著”。  votingdi

驅動載入到I2C匯流排,如何執行到probe

為了簡短文章長度,一些檢查和除錯資訊被刪除 1. 在xxx_init()中會呼叫i2c_add_driver()函式    static int __init ltr559_init(void) {     return i2c_add_driver(&ltr_p

【原創】zynq-7010下運用I2C匯流排完成對LSM303D感測器的資料讀取

介紹 這是本人第一次寫部落格,我的畢設在用FPGA去讀取LSM303D感測器的中的三軸的磁場強度資料,這也是我第一次用zynq-7010板子,第一次接觸Vivado,我用了將近兩個月的時間摸索,中間經歷了很多失敗的嘗試,還好最近有了突破,因為目前網上基本沒有關

SPI匯流排I2C匯流排的異同點

更多精彩內容,請微信搜尋“FPGAer俱樂部”關注我們。        一:SPI介面的全稱是"Serial Peripheral Interface",意為序列外圍介面,是Motorola首先在其MC68HCXX系列處理器上定義的。SPI介面主要應用在EEPROM、FLAS

Linux+I2C匯流排分析(主要是probe的方式)

Linux I2C 匯流排淺析 ㈠ Overview Linux的I2C體系結構分為3個組成部分: ·I2C核心: I2C核心提供了I2C匯流排驅動和裝置驅動的註冊、登出方法,I2C通訊方法(即“algorithm”)上層的、與具體介面卡無關的程式碼以及探測裝置、檢測裝置地址的上層程式碼等。這部分是與平臺無

I2C匯流排匯流排阻塞

這個問題以前還真遇到過但是沒有仔細分析過原因,這次被問到這個問題傻了,看到網上的一些相關文件後,整理了這篇文章,主要分析產生原因和解決辦法。 首先還是看看I2C相關的一些步驟的匯流排狀態: 死鎖匯流排表現為:SCL為高,SDA一直為低 從:正常時序下:SDA