TW201531864A - 用於多個主機匯流排協定的方法與裝置 - Google Patents

用於多個主機匯流排協定的方法與裝置 Download PDF

Info

Publication number
TW201531864A
TW201531864A TW104104106A TW104104106A TW201531864A TW 201531864 A TW201531864 A TW 201531864A TW 104104106 A TW104104106 A TW 104104106A TW 104104106 A TW104104106 A TW 104104106A TW 201531864 A TW201531864 A TW 201531864A
Authority
TW
Taiwan
Prior art keywords
host
bus
slave device
slave
hosts
Prior art date
Application number
TW104104106A
Other languages
English (en)
Other versions
TWI636367B (zh
Inventor
Christopher Dionisio
Todd T Swanzey
Gregory R Stefkovic
Original Assignee
Bayer Healthcare Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bayer Healthcare Llc filed Critical Bayer Healthcare Llc
Publication of TW201531864A publication Critical patent/TW201531864A/zh
Application granted granted Critical
Publication of TWI636367B publication Critical patent/TWI636367B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/376Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a contention resolving method, e.g. collision detection, collision avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0016Inter-integrated circuit (I2C)

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Small-Scale Networks (AREA)
  • Information Transfer Systems (AREA)

Abstract

本發明之實施例提供用於仲裁多主機電腦匯流排之系統、方法及裝置。該等實施例包括:多主機串列電腦匯流排;第一主機,經耦接至匯流排;第二主機,經耦接至匯流排;從屬設備,經耦接至匯流排;第一I/O線,自第一主機延伸至第二主機及從屬設備;及第二I/O線,自第二主機延伸至第一主機及從屬設備。每當任一主機成為匯流排主機時,用於仲裁匯流排使用的匯流排仲裁協定將主機限制為單異動,且該等主機各自經調適以使用I/O線發送訊號告知彼此不成為匯流排主機。本發明揭示眾多其他態樣。

Description

用於多個主機匯流排協定的方法與裝置 【相關申請案】
本發明主張2014年2月7日提出申請且標題為「METHODS AND APPARATUS FOR A MULTIPLE MASTER BUS PROTOCOL」之同在申請中的美國臨時專利申請案第61/937,446號之優先權,藉此該美國臨時專利申請案出於所有目的以引用之方式併入本文。
本發明係關於匯流排協定,且更特定言之,係關於用於多個主機匯流排協定的裝置、系統及方法。
內部積體電路標準(被稱為I2C、I2C、i2c、I平方C、I二C或IIC)定義了由飛利浦半導體部門(現NXP半導體公司)發明的多主機串列單端電腦匯流排,並且一般用於將低速周邊裝置附接至主板、嵌式系統、行動電話或其他數位電子設備。本文所包括的I2C之概括描述提供關於I2C系統的基本資訊,且可在由NXP半導體公司於http://www.nxp.com/documents/user_manual/UM10204.pdf上發佈可用之「I2C-bus Specification and User Manual」(2012 年10月9日,第5版)中獲知另外詳細資訊,並藉此出於所有目的將該等資訊以引用之方式全部併入本文。
如下文將更詳細地論述,I2C限制了匯流排主機可斷定I2C匯流排之控制量,且因此限制了可使用I2C匯流排可靠執行何種異動。I2C亦具有其他限制,該等限制可使得其不適用於一些應用。因此,需要用於在I2C協定內提供改良多主機支援的系統、裝置及方法。
在一些態樣中,本發明之實施例提供一種用於仲裁多主機電腦匯流排的裝置。該裝置包括:多主機串列電腦匯流排;第一主機,經耦接至匯流排;第二主機,經耦接至匯流排;從屬設備,經耦接至匯流排;第一I/O線,自第一主機延伸至第二主機及從屬設備;及第二I/O線,自第二主機延伸至第一主機及從屬設備。每當任一主機成為匯流排主機時,用於仲裁匯流排使用的匯流排仲裁協定將主機限制為單異動,且該等主機各自經調適以使用I/O線發送訊號告知彼此不成為匯流排主機。
在其他態樣中,本發明之實施例提供一種用於仲裁多主機電腦匯流排的系統。該系統包括:多主機串列電腦匯流排;複數個主機,經耦接至匯流排;複數個從屬設備,經耦接至匯流排;複數個I/O線,其中I/O線自複數個主機之各者延伸至複數個主機中的所有其他者及從屬設備之各者。每當任何主機成為匯流排主機時,用於仲裁匯流排使用的匯流排仲裁協定將主機限制為單異動,且該等主機各自經調適以使用I/O線 發送訊號告知彼此不成為匯流排主機。
在更多其他態樣中,本發明之實施例提供一種用於仲裁多主機電腦匯流排的方法。該方法包括:提供多主機串列電腦匯流排,該多主機串列電腦匯流排耦接第一主機、第二主機及從屬設備;提供第一I/O線,自第一主機延伸至第二主機及從屬設備;提供第二I/O線,自第二主機延伸至第一主機及從屬設備;當任一主機成為匯流排主機時,將主機之各者限制為與從屬設備的單異動;當第一主機意欲執行與從屬設備的連續不間斷異動序列而無需第二主機介入時,使用第一I/O線發送訊號告知第二主機不成為匯流排主機;及當第二主機意欲執行與從屬設備的連續不間斷異動序列而無需第一主機介入時,使用第二I/O線發送訊號告知第一主機不成為匯流排主機。
根據本發明之該等及其他實施例提供眾多其他態樣。本發明之實施例之其他特徵及態樣將自以下詳細描述、隨附申請專利範圍及隨附圖式變得更加全面顯而易見。
100‧‧‧標準多主機I2C系統
102‧‧‧標準I2C匯流排
104‧‧‧主機
106‧‧‧主機
108‧‧‧從屬設備
200‧‧‧標準I2C匯流排仲裁過程
202‧‧‧步驟
204‧‧‧步驟
206‧‧‧步驟
208‧‧‧步驟
210‧‧‧步驟
212‧‧‧步驟
300‧‧‧改良多主機I2C系統
302‧‧‧I2C匯流排
304‧‧‧主機A
306‧‧‧主機B
308‧‧‧從屬設備
400‧‧‧方法
402‧‧‧步驟
404‧‧‧步驟
406‧‧‧步驟
408‧‧‧步驟
410‧‧‧步驟
412‧‧‧步驟
414‧‧‧步驟
416‧‧‧步驟
418‧‧‧步驟
500‧‧‧方法
502‧‧‧步驟
504‧‧‧步驟
506‧‧‧步驟
508‧‧‧步驟
510‧‧‧步驟
512‧‧‧步驟
514‧‧‧步驟
516‧‧‧步驟
518‧‧‧步驟
600‧‧‧方法/過程
602‧‧‧步驟
604‧‧‧步驟
606‧‧‧步驟
608‧‧‧步驟
610‧‧‧步驟
612‧‧‧步驟
614‧‧‧步驟
616‧‧‧步驟
618‧‧‧步驟
第1圖圖示根據先前技術實施之示例性I2C系統之方塊圖。
第2圖圖示描述第1圖之示例性I2C系統操作的流程圖。
第3圖圖示根據本發明之一些實施例的改良I2C系統的實例之方塊圖。
第4圖至第6圖圖示描述第3圖之示例性改良I2C 系統的操作之流程圖。
本發明之實施例提供一種改良的I2C多主機匯流排排他方法與裝置,該方法與裝置賦能在I2C匯流排上執行與從屬設備的多個不間斷異動,而無需其他主機與從屬設備的任何介入異動。標準I2C說明書提供一種仲裁方法,該方法用於多個主機中之一者以與從屬設備的單異動之前獲得對I2C匯流排之控制,但不提供任何手段來允許主機維持排他控制,以便例如完成多個異動之不間斷序列(諸如讀取-修改-寫入異動)。本發明賦能主機(例如,微控制器)對於多個連續異動保持對從屬設備(例如,記憶體)的排他性存取,而無需與其他主機爭用對從屬機的存取。應注意,本文所使用之術語「單異動」意謂介於起動標誌與停止標誌之間的單讀取命令、單寫入命令或單組合格式命令(該組合格式命令限於兩個讀取、兩個寫入,或一個讀取與一個寫入)。
習知I2C僅使用兩個雙向開路汲極線:串列資料線(Serial Data Line;SDA)與串列時脈線(Serial Clock Line;SCL),利用電阻器上拉該等線。儘管容許具有其他電壓的系統,但所使用之典型電壓為+5V或+3.3V。
I2C參考設計具有7位元或10位元(取決於所使用設備)位址空間。常見I2C匯流排速度為100kbit/s標準模式及10kbit/s低速模式,但亦允許任意低時脈頻率。最近版本的I2C可託管更多節點及以更快速度執行(例如,400kbit/s快速模式、1Mbit/s快速模式加或Fm+,及3.4Mbit/s高速模 式)。與用於PC相比,該等速度更廣泛地用於嵌式系統上。亦存在可用的其他特徵,諸如16位元定址。
應注意,位元速率係針對主機與從屬機之間的異動而言,而沒有時脈伸展或其他硬體額外負擔。協定額外負擔包括從屬機位址且可能包括從屬設備內的暫存器位址以及每位元組ACK/NACK位元。因此,使用者資料之實際傳輸速率比本僅隱含之彼等峰值位元速率更低。舉例而言,若與從屬機的每個互動無效率地允許傳輸僅1位元組之資料,則資料速率將處於峰值位元速率的一半以下。
節點之最大數量受到位址空間限制,且亦受到400pF之總匯流排電容限制,從而將實際通訊距離限制至幾公尺。
參考設計係具有7位元定址的時脈(SCL)及資料(SDA)線之匯流排。匯流排對於節點具有兩個角色:主機與從屬機。主機節點係產生時脈及啟動與從屬機的通訊之節點。從屬機節點係在由主機定址時接收時脈及回應之節點。
匯流排係多主機匯流排,此意謂可存在任何數量之主機節點。另外,可在訊息之間改變主機及從屬機角色(例如,在發送停止之後)。儘管大部分設備僅適用單個角色及兩個模式,但針對給定匯流排設備存在四個潛在操作模式。模式包括主機傳輸、主機接收、從屬機傳輸及從屬機接收。在主機傳輸模式中,主機節點發送資料至從屬機。在主機接收模式中,主機節點自從屬機接收資料。在從屬機傳輸模式中,從屬機節點發送資料至主機,及在從屬機接收模式中,從屬機節點自主機接收資料。
主機最初處於主機傳輸模式中,藉由發送起動位元,繼之以希望通訊的從屬機之7位元位址,最後繼之以表示是否希望寫入(0)至從屬機或自從屬機讀取(1)的單位元。
若在匯流排上存在從屬機,則該從屬機將針對彼位址用ACK位元(對於應答為有效低位)回應。隨後主機以傳輸模式或接收模式(根據所發送之讀取/寫入位元)繼續,及從屬機以與主機互補的模式(分別為接收或傳輸)繼續。
首先以最高有效位元發送位址及資料位元組。由SCL為高情況下SDA之高至低變遷指示起動位元;由SCL為高情況下SDA之低至高變遷指示停止位元。在SCL為低情況下發生SDA之所有其他變遷。
若主機希望寫入至從屬機,則主機重複發送位元組以及從屬機發送ACK位元。(在此情形中,主機處於主機傳輸模式及從屬機處於從屬機接收模式。)
若主機希望自從屬機讀取,則主機自從屬機重複接收位元組,主機在除最後一個位元組以外的每個位元組後發送ACK位元。(在此情形中,主機處於主機接收模式及從屬機處於從屬機傳輸模式。)
主機隨後利用停止位元結束傳輸,或者若主機希望保持對匯流排之控制用於另一傳輸(「組合訊息」)則主機可發送另一起動位元。
I2C定義了基本類型之訊息,該等訊息之各者由起動標誌開始,並以停止標誌結束。該等訊息類型包括:主機寫入資料至從屬機的單訊息;主機自從屬機讀取資料的單訊息;及 主機發佈至多兩個讀取及/或寫入至一或更多個從屬機的組合訊息。
在組合訊息中,每個讀取或寫入由起動標誌及從屬機位址開始。在組合訊息中的第一起動標誌後,該等亦被稱為重複起動位元。重複起動位元並非處於停止位元之後,此為從屬機如何知道下一傳輸屬於相同訊息的一部分。習知而言,組合訊息限於起動與停止標誌之間的兩個讀取、兩個寫入或者一個讀取與一個寫入(以任一次序)。因此,在使用組合格式的單異動期間,可在起動與停止標誌之間發送至多兩個命令。
任何給定從屬機將僅回應於特定訊息,如產品文件所定義。I2C系統支援任意訊息結構。除了僅少數例外情況,I2C說明書並不在語義學上定義訊息,諸如訊息中的資料位元組之含義。訊息語義另有特定於產品之含義。彼等例外包括發送給I2C一般呼叫位址(0x00)的訊息。
在實踐中,大部分從屬機採用請求/回應控制模式,其中遵循寫入命令的一或更多個位元組被視為命令或位址。彼等位元組判定如何處理後續寫入位元組及/或從屬機在後續讀取上如何回應。大部分I2C操作涉及單位元組命令。
在實體層上,SCL及SDA線兩者皆具有開路汲極設計,因此需要上拉電阻器。將線拉至接地被視為邏輯0,而使得線浮動為邏輯1。此被用作通道存取方法。高速系統(及一些其他系統)亦至少在SCL上添加電流源上拉;此容納更高的匯流排電容及賦能更快的上升時間。
此舉之重要後果在於,多個節點可並行驅動該等 線。若任何節點驅動線降低,則線將為低。設法傳輸邏輯1(亦即,使得線浮高)的節點可看到此情況,及從而知道另一節點同時為有效。
當在SCL上使用時,此被稱為時脈伸展及向從屬機提供流程控制機制。當在SDA上使用時,此被稱為仲裁及確保每次僅存在一個傳輸器。
當閒置時,兩個線皆高。為了起動異動,在保持SCL高位的同時拉低SDA。釋放SDA再次浮高將為停止標誌,發送訊號告知匯流排異動結束。儘管合法,但此通常在起動後立即毫無意義,因此下一步驟為將SCL拉低。
除起動與停止訊號外,在時脈為低的同時,僅SDA線變化;傳輸資料位元包含在保持資料線穩定處於所需位準處的同時脈衝輸送時脈線升高。
儘管SCL為低,傳輸器(最初為主機)設置SDA為所需值及(在使得該值傳播的小延遲之後)使得SCL浮高。主機隨後等待SCL實際地升高;此將因SCL訊號之有限上升時間(上拉電阻器之RC時間常數及匯流排之寄生電容)而延遲,且可因從屬機之時脈伸展而額外延遲。
一旦SCL為高,主機等待最少時間(例如,對於標準速度I2C為4μs)以確保接收器已看到該位元,隨後再次將SCL拉低。此完成一位元之傳輸。
在一個方向上的每8個資料位元之後,在另一方向上傳輸「應答」位元。傳輸器與接收器針對一個位元切換角色,且原來的接收器傳回單個0位元(ACK)。若傳輸器反而看到1 位元(NACK),則得知從屬機不能接收資料,例如因為不存在此從屬機,不理解命令,或當主機傳輸至從屬機時,接收器不能接收任何更多資料。若從屬機傳輸至主機及由從屬機接收回NACK,則此指示主機希望在當前資料位元組之後停止傳輸。
在應答位元後,主機可實行以下三個操作之一:(1)準備傳輸資料之另一位元組:傳輸器設置SDA,及主機脈衝輸送SCL升高;(2)發送「停止」:設置SDA低位,使得SCL升高,隨後使得SDA升高,此釋放I2C匯流排;或(3)發送「重複起動」:設置SDA高位,使得SCL升高,且再次將SDA拉低。此起動新的I2C匯流排異動,而無需釋放匯流排。
I2C協定之更明顯特徵之一為時脈伸展。已定址從屬設備可在接收(或發送)位元組之後保持時脈線(SCL)低位,從而指示該設備尚未準備好處理更多資料。與從屬機通訊的主機可未完成當前位元傳輸,但必須等待,直到時脈線實際地升高。若從屬機正在時脈伸展,則時脈線將仍為低(因為連接為開路汲極)。若第二較慢主機設法同時驅動時脈,則同樣如此。(若存在超過一個主機,除一個主機以外的所有主機將通常丟失仲裁。)
主機必須等待,直到該主機觀察到時脈線升高,且在再次將時脈拉低之前的額外最少時間(例如,對於標準100kbit/s I2C為4μs)。
儘管主機亦可將SCL線保持低位長達所需的時間,但通常僅當從屬機實行此舉時使用術語「時脈伸展」。儘管在理論上可伸展任何時脈脈衝,但一般而言為所使用之應答位元 之前或之後的間隔。舉例而言,若從屬機係微控制器,則從屬機之I2C介面可在每個位元組之後伸展時脈,直到軟體判定是否發送肯定應答或NACK。
時脈伸展係在I2C中從屬機驅動SCL的唯一時間。許多從屬機不需要時脈伸展且因此處理SCL與無電路系統驅動情況下的輸入一樣嚴格。一些主機(諸如定製ASIC內部發現的彼等主機)可不支援時脈伸展;通常該等設備將被標記為「雙線介面」,而非I2C。
每個主機監測起動與停止位元的匯流排,且在單異動期間另一主機保持匯流排忙碌時一般不起動訊息。然而,兩個主機可在大致相同時間處起動傳輸;在此情況中,仲裁發生。當主機定址多個從屬機時,亦可仲裁從屬機傳輸模式,但此較不常見。與發佈再試之前使用隨機後移延遲的協定(諸如乙太網路)對比,I2C具有判定性仲裁策略。每個傳輸器檢查資料線(SDA)位準,並將該位準與預期位準比較;若不匹配,則傳輸器已丟失仲裁,及退出此協定互動。
若一個傳輸器設置SDA至1(不驅動訊號)而第二傳輸器設置SDA至0(拉至接地),則結果是該線為低。第一傳輸器隨後觀察到線位準與預期不同,並得出結論為另一節點正在傳輸。通知此差異的第一節點係丟失仲裁的彼者:該節點停止驅動SDA。若是主機,則主機亦停止驅動SCL及等待停止;隨後主機可設法重新發佈主機的整個訊息。同時,其他節點尚未通知SDA上的預期位準與實際位準之間的任何差異,且因此繼續傳輸。之所以可如此操作而不出問題,是因為 到目前為止訊號一直與預期恰好相同;無其他傳輸器干擾訊息。
若兩個主機發送訊息至兩個不同從屬機,則發送較低從屬機位址的一者總是「贏得」定址階段的仲裁。由於兩個主機可發送訊息至相同從屬機位址(及多個位址,有時指示多個從屬機),仲裁必須繼續進入資料階段。
仲裁很少發生,但卻是適當多主機支援所必需。與時脈伸展一樣,並非所有設備支援仲裁。彼等支援仲裁的設備一般將自己標記為支援「多主機」通訊。
在兩個主機同時並行發送相同訊息的極罕見情況下,兩者將通訊視為成功,但從屬機將僅看到一個訊息。可由多個主機存取的從屬機必須具有出於此原因而冪等的命令。I2C亦具有其他限制,該等限制可使得其不適用於一些應用。
第1圖繪示先前技術之標準多主機I2C系統100之方塊圖,該系統包括標準I2C匯流排102。標準I2C匯流排102允許多個主機104、106(在此實例中僅圖示兩個主機)與一或更多個從屬設備108(在此實例中僅圖示一個從屬設備)之間的通訊。從屬設備108包括固定數量之位址引腳(例如,在此實例中圖示三個)。
第2圖係圖示用於第1圖之標準多主機I2C系統100中的標準I2C匯流排仲裁過程200之流程圖。當主機104、106之任一者希望存取從屬設備108時,主機(例如,主機A 104或主機B 106)發佈起動命令(202),且隨後判定主機是否為當前匯流排主機(204)。若是,則主機使用從屬設備108之位址 選擇所需從屬設備108(206)。若否,則過程200結束(214)。若主機選擇從屬設備108,則接下來執行檢查以判定已正確選擇從屬機(208),且若不存在錯誤,則執行與選定從屬機的單異動(例如,讀取、寫入或組合)(210)。然而,若發生從屬機選擇錯誤,則不執行異動。在任一種情況下,發佈停止命令(212)且過程200結束(214)。
在主機104、106之各者同時執行此標準I2C匯流排仲裁過程200的情況下,主機104、106中的一者在與選定從屬設備的單異動之前獲得對I2C匯流排之控制。然而,先前技術之此仲裁過程200之明顯限制在於,一旦主機成為匯流排主機,該主機僅可執行與選定從屬設備108的單異動,且隨後在主機完成單異動後,另一主機可潛在地成為匯流排主機,並例如寫入至從屬設備。問題在於,若從屬設備108例如為記憶體設備,且需要異動之不間斷讀取-修改-寫入序列來確保例如資料一致性,則標準I2C匯流排仲裁過程200無法保證在原始主機完成異動之讀取-修改-寫入序列的所有部分之前第二主機不會增益對I2C匯流排102之控制,中斷原始主機,並修改記憶體。因此,標準I2C匯流排仲裁過程200可產生資料不一致問題,因為系統100並非提供用於不可中斷的多異動序列。
為了較佳地說明此問題,考慮以下兩個示例性從屬機存取序列。在第一示例性序列中,主機A 104先自等於0x01的從屬機讀取資料,隨後主機A 104寫入資料至等於0x02的從屬機,且最後主機B 106自等於0x02的從屬機讀取資料。此第一序列產生所需結果。主機104、106兩者發現從屬機提 供一致資料。
然而,在第二示例性序列中,主機A 104先自等於0x01的從屬機讀取資料,隨後主機B 106自等於0x01的從屬機讀取資料,且最後主機A 104寫入資料至等於0x02的從屬機。第二示例性序列產生問題性結果。兩個主機104、106體驗到從屬機具有兩個不同的值,且因此具有不一致資料。
本發明之實施例藉由改良標準I2C匯流排仲裁過程200來解決此潛在資料不一致問題,此改良藉由使賦能I2C匯流排主機執行多個連續I2C異動且同時防止所有其他I2C主機執行任何介入I2C異動之能力添加至系統100來實現。藉由對於每個主機及一些軟體邏輯添加一個額外通用輸入/輸出(I/O)插針,本發明提供主機執行多個異動(例如,讀取-修改-寫入異動序列)而不被其他介入主機中斷的能力。
第3圖繪示改良多主機I2C系統300之示例性實施例,該系統提供對從屬機能力的此存取互斥。與先前技術之標準系統100一樣,本發明之實施例之改良多主機I2C系統300包括I2C匯流排302,該I2C匯流排允許多個主機304、306(出於簡明性目的在此實例中僅圖示兩個主機)與一或更多個從屬設備308(出於簡明性目的在此實例中僅圖示一個從屬設備)之間的通訊。應將理解,在系統300中可包括額外主機及從屬機,但第3圖中所繪示之簡單實例係用於更清楚地圖示本發明之特徵。除標準I2C系統100之元件外,本發明之實施例之改良多主機I2C系統300亦包括來自系統300中的每個主機304、306之I/O線ADDR1及ADDR2,該等I/O線各自經耦 接至其他主機之各者及從屬設備308之動態位址引腳(例如,位址1、位址2)。此排列向每個主機304、306提供在存取之前唯一定址從屬設備308的能力。在具有額外主機的系統中,每個額外主機將添加額外I/O線。
可藉由強加以下規則集實施此種每個主機304、306具有唯一位址來存取從屬設備308的能力:當主機304、306皆不在存取從屬設備308時,經由閒置狀態中的硬體將I/O線ADDR1、ADDR2通常保持在邏輯1處;僅可藉由主機A 304上執行的軟體指令將ADDR1驅動至邏輯0;僅可由主機A 304上執行的軟體指令使用位址1(位於I2C匯流排302上);僅可藉由主機B 306上執行的軟體指令將ADDR2驅動至邏輯0;及僅可由主機B 306上執行的軟體指令使用位址2(位於I2C匯流排302上)。下表匯總此規則集。
應注意,在主機304、306兩者皆驅動主機的I/O線ADDR1、ADDR2降低至邏輯0的罕見情況中,從屬機位址將為位址0且僅將回應位址0,因此主機304、306皆不可存取從屬設備308,因為該等主機將正使用I2C匯流排302上的非匹配位址(位址1或位址2)。此能力亦允許本發明之實施例使用不具有習知I2C多主機支援的主機。亦應注意,代替在閒 置狀態期間保持I/O線處於邏輯1處的高位及將I/O拉低至邏輯0來指示主機正在存取從屬機,可或者實施系統300以使得邏輯0為I/O線之閒置狀態值且使用邏輯1指示主機正在存取從屬機。
以下偽碼實例說明每個主機304、306將遵循以存取從屬設備308的協定。當主機A 304希望存取從屬設備308時,主機A 304表現如下:
若ADDR2=1,則:/*主機B並未與從屬機會話)*/
1.驅動ADDR1=0/*主機A希望排他性存取*/
2.發佈起動條件
3.若主機A成為I2C匯流排主機,則:
‧藉由使用I2C上的位址1選擇從屬機
‧存取I2C上的從屬機
‧發佈停止條件
‧對於更多異動轉到步驟2)
4.驅動ADDR1=1/*主機A結束*/
當主機B 306希望存取從屬設備308時,主機B 306表現如下:
若ADDR1=1,則:/*主機A並未與從屬機會話)*/
1.驅動ADDR2=0/*主機B希望排他性存取*/
2.發佈起動條件
3.若主機B成為I2C匯流排主機,則:
‧藉由使用I2C上的位址2選擇從屬機
‧存取I2C上的從屬機
‧發佈停止條件
‧對於更多異動轉到步驟2)
4.驅動ADDR2=1/*主機B結束*/
在第4圖至第6圖之流程圖中進一步圖示具體實施上述偽碼區段的本發明之該等示例性方法。應注意,基於系統300之特定硬體實施例之特性判定再試次數及延遲長度。在一些實施例中,可將延遲設置為並非諧波間隔的長度以避免不必要的額外再試/超時及潛在爭用條件。
第4圖繪示圖示示例性方法400之流程圖,在該方法中將使用主機A 304存取本發明之實施例之改良I2C系統300之從屬設備308。主機A 304先藉由檢查ADDR2是否處於邏輯1處判定另一主機主機B 306當前是否正在存取從屬設備308(402)。若該系統包括其他主機,則主機A 304將亦檢查其他主機之I/O線。若ADDR2處於邏輯1處,意謂主機B 306不在存取從屬設備308,則主機A 304下拉ADDR1至邏輯0(404)。此向主機B 306指示主機A正在存取從屬設備308。主機A隨後使用修改版本之標準I2C協定經由位址1存取從屬設備308(406),如第6圖所圖示及下文將描述。主機A 304隨後檢查錯誤(408)及隨後檢查是否存在更多待執行之從屬機存取(410)。若不存在更多與從屬設備308的異動,則主機A 304使ADDR1返回至邏輯1(412)且方法結束(414)。
若在存取從屬設備308後存在錯誤,則主機A 304中止存取從屬設備308,使ADDR1返回至邏輯1(412)及方法結束(414)。若在初始存取(406)及錯誤檢查(408)後存在額外待 執行之從屬機存取,則主機A304使用標準I2C協定經由位址1再次存取從屬設備308(406)且流程自彼處繼續。
若當主機A 304檢查ADDR2時主機B 306正在存取從屬設備308(由ADDR2處於邏輯0處指示)(402),則主機A 304後移一延遲期(416)且隨後檢查是否已超出最大再試限制(418)。若尚未超出最大再試限制,則主機A 304再次檢查ADDR2(402)且流程自彼處繼續。若已超出最大再試限制,則方法結束(414)。
類似地,第5圖描述圖示示例性方法500之流程圖,在該方法中將使用主機B 306存取本發明之實施例的改良I2C系統300之從屬設備308。主機B 306先藉由檢查I/O線ADDR1是否處於邏輯1處判定另一主機主機A 304當前是否正在存取從屬設備308(502)。若該系統包括其他主機,則主機B 306將亦檢查其他主機之I/O線。若I/O線ADDR1處於邏輯1處,意謂主機A 304不在存取從屬設備308,則主機B 306下拉ADDR2至邏輯0(504)。此向主機A 304指示主機B 306正在存取從屬設備308。主機B 306隨後使用修改版本之標準I2C協定經由位址2存取從屬設備308(506),如第6圖所圖示及下文將描述。主機B 306隨後檢查錯誤(508)且隨後檢查是否存在更多待執行之從屬機存取(510)。若不存在更多與從屬設備308的異動,則主機B 306使ADDR2返回至邏輯1(512)且方法結束(514)。
若在存取從屬設備308後存在錯誤,則主機B 306中止存取從屬設備308,使ADDR2返回至邏輯1(512)且方法 結束(514)。若在初始存取(506)及錯誤檢查(508)後存在額外待執行之從屬機存取,則主機B 306使用標準I2C協定經由位址2再次存取從屬設備308(506)且且流程自彼處繼續。
若當主機B 306檢查ADDR1時主機A 304正在存取從屬設備308(由ADDR1處於邏輯0處指示)(502),則主機B 306後移一延遲期(516)且隨後檢查是否已超出最大再試限制(518)。若尚未超出最大再試限制,則主機B 306再次檢查ADDR1(502)且流程自彼處繼續。若已超出最大再試限制,則方法結束(514)。
第6圖繪示圖示第4圖及第5圖之上述方法400、500中的(406)及(506)處分別要求的經修改之標準I2C匯流排仲裁協定之流程圖。應注意,第6圖之方法600類似於第2圖之先前技術方法200,但是第6圖之方法具有後移延遲及再試計數器與限制。當主機304、306之任一者準備存取從屬設備308時,主機(例如,主機A304或主機B306)發佈起動命令(602),且隨後判定主機是否為當前匯流排主機(604)。若是,則匯流排主機使用從屬設備308之調用方法400、500中所指示的位址選擇所需從屬設備308(606)。若主機成為當前匯流排主機且選擇從屬設備308,則接下來執行檢查以判定已正確選擇從屬設備308(608),且若不存在錯誤,則執行與選定從屬機的單異動(例如,讀取、寫入或組合)(610)。然而,若發生從屬機選擇錯誤,則不執行異動。在任一種情況下,發佈停止命令(612)且過程600結束(614)。
若在(604)處主機並未成為當前匯流排主機,則主機 後移一延遲期(616)且隨後檢查是否已超出最大匯流排主機再試限制(618)。若尚未超出最大匯流排主機再試限制,則主機發佈新的起動命令(602),再次檢查主機是否已成為匯流排主機(604),且流程自彼處繼續。若已超出最大匯流排主機再試限制,則方法結束(614)。
前文描述僅揭示本發明之示例性實施例。屬於本發明之範疇內的上文揭示之裝置、系統及方法之修改將對一般熟習此項技術者顯而易見。因此,儘管已結合示例性實施例揭示本發明,但應理解,其他實施例可屬於本發明之範疇內,如以下申請專利範圍所界定。
300‧‧‧改良多主機I2C系統
302‧‧‧I2C匯流排
304‧‧‧主機A
306‧‧‧主機B
308‧‧‧從屬設備

Claims (20)

  1. 一種裝置,包含:一多主機串列電腦匯流排;一第一主機,經耦接至該匯流排;一第二主機,經耦接至該匯流排;一從屬設備,經耦接至該匯流排;一第一I/O線,自該第一主機延伸至該第二主機及該從屬設備;以及一第二I/O線,自該第二主機延伸至該第一主機及該從屬設備,其中每當任一主機成為一匯流排主機時,用於仲裁該匯流排使用的一匯流排仲裁協定將該等主機限制為一單異動,且其中該等主機各自經調適以使用該等I/O線發送訊號告知彼此不成為一匯流排主機。
  2. 如請求項1所述之裝置,其中若該第二主機指示其意欲存取該從屬設備,則該第一主機將不試圖使用該匯流排,且若該第一主機指示其意欲存取該從屬設備,則該第二主機將不試圖使用該匯流排。
  3. 如請求項1所述之裝置,其中每個主機經調適以在每個主機之各別I/O線上斷定一訊號且連續複數次成為匯流排主機,而無需另一主機介入及成為匯流排主機。
  4. 如請求項1所述之裝置,其中該等主機係微控制器且該從屬設備係一記憶體設備。
  5. 如請求項1所述之裝置,其中該第一主機經調適以發送訊號告知該第二主機不成為一匯流排主機,且該第一主機經進一步調適以執行與該從屬設備的一不間斷讀取-修改-寫入異動。
  6. 如請求項1所述之裝置,其中該多主機串列電腦匯流排係一內部積體電路(I2C)匯流排。
  7. 如請求項1所述之裝置,其中耦接至該從屬設備的該I/O線經調適以向該從屬設備指示哪個主機正在存取該從屬設備。
  8. 一種系統,包含:一多主機串列電腦匯流排;複數個主機,經耦接至該匯流排;複數個從屬設備,經耦接至該匯流排;以及複數個I/O線,其中一I/O線自該複數個主機之各者延伸至該複數個主機中的所有其他者及該等從屬設備之各者,其中每當任何主機成為一匯流排主機時,用於仲裁該匯流排使用的一匯流排仲裁協定將該等主機限制為一單異動,且其中該等主機各自經調適以使用該等I/O線發送訊號告知彼此不成為一匯流排主機。
  9. 如請求項8所述之系統,其中若任何其他主機指示其意欲存取該從屬設備,則一主機將不試圖使用該匯流排。
  10. 如請求項8所述之系統,其中每個主機經調適以在每個主機之各別I/O線上斷定一訊號且連續複數次成為匯流排主機,而無需另一主機介入及成為匯流排主機。
  11. 如請求項8所述之系統,其中該等主機包括微控制器且該等從屬設備包括至少一個記憶體設備。
  12. 如請求項8所述之系統,其中每個主機經調適以發送訊號告知所有其他主機不成為一匯流排主機,且至少一個主機經進一步調適以執行與一從屬設備的一不間斷讀取-修改-寫入異動。
  13. 如請求項8所述之系統,其中該多主機串列電腦匯流排係一內部積體電路(I2C)匯流排。
  14. 如請求項8所述之系統,其中耦接至該等從屬設備的該等I/O線經調適以向該等從屬設備指示哪個主機正在存取該等從屬設備。
  15. 一種方法,包含以下步驟: 提供一多主機串列電腦匯流排,該多主機串列電腦匯流排耦接一第一主機、一第二主機及一從屬設備;提供一第一I/O線,自該第一主機延伸至該第二主機及該從屬設備;提供一第二I/O線,自該第二主機延伸至該第一主機及該從屬設備;當任一主機成為一匯流排主機時,將該等主機之各者限制為與該從屬設備的一單異動;當該第一主機意欲執行與該從屬設備的一連續不間斷異動序列而無需該第二主機介入時,使用該第一I/O線發送訊號告知該第二主機不成為一匯流排主機;以及當該第二主機意欲執行與該從屬設備的一連續不間斷異動序列而無需該第一主機介入時,使用該第二I/O線發送訊號告知該第一主機不成為一匯流排主機。
  16. 如請求項15所述之方法,其中若該第二主機指示其意欲存取該從屬設備,則該第一主機將不試圖使用該匯流排,且若該第一主機指示其意欲存取該從屬設備,則該第二主機將不試圖使用該匯流排。
  17. 如請求項15所述之方法,進一步包括以下步驟:在每個主機之各別I/O線上斷定一訊號以指示該主機意欲存取該從屬設備。
  18. 如請求項15所述之方法,進一步包括以下步驟:自該第一主機發送訊號告知該第二主機不成為一匯流排主機;以及藉由該第一主機執行與該從屬設備的一不間斷讀取-修改-寫入異動。
  19. 如請求項15所述之方法,其中提供該多主機串列電腦匯流排之步驟包括以下步驟:提供一內部積體電路(I2C)匯流排。
  20. 如請求項15所述之方法,進一步包括以下步驟:經由耦接至該從屬設備的該I/O線向該從屬設備指示哪個主機正在存取該從屬設備。
TW104104106A 2014-02-07 2015-02-06 用於多個主機匯流排協定的方法與裝置 TWI636367B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201461937446P 2014-02-07 2014-02-07
US61/937,446 2014-02-07

Publications (2)

Publication Number Publication Date
TW201531864A true TW201531864A (zh) 2015-08-16
TWI636367B TWI636367B (zh) 2018-09-21

Family

ID=52577977

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104104106A TWI636367B (zh) 2014-02-07 2015-02-06 用於多個主機匯流排協定的方法與裝置

Country Status (7)

Country Link
US (1) US10204065B2 (zh)
EP (1) EP3103021B1 (zh)
JP (1) JP6629215B2 (zh)
CN (1) CN106462526B (zh)
CA (1) CA2938704A1 (zh)
TW (1) TWI636367B (zh)
WO (1) WO2015120339A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI625630B (zh) * 2016-08-02 2018-06-01 緯穎科技服務股份有限公司 電腦系統及匯流排仲裁方法
US10482047B2 (en) 2016-12-09 2019-11-19 Autochips Inc. Slave device connected to master device via I2C bus and communication method thereof

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9300129B2 (en) 2013-03-12 2016-03-29 Ascensia Diabetes Care Holding Ag Reverse battery protection for battery-powered devices
JP6822105B2 (ja) * 2016-08-09 2021-01-27 株式会社リコー 通信システム及び画像形成装置
EP3336710B1 (en) * 2016-12-15 2019-10-02 Iristick nv I²c bridge device
US10938782B1 (en) * 2016-12-27 2021-03-02 Amazon Technologies, Inc. Secure hardware signal filtering
US11030142B2 (en) * 2017-06-28 2021-06-08 Intel Corporation Method, apparatus and system for dynamic control of clock signaling on a bus
CN108121622B (zh) * 2017-12-13 2020-12-01 天津津航计算技术研究所 一种基于以太网和i2c双冗余总线的健康管理装置
CN108280041B (zh) * 2017-12-29 2020-03-10 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 一种内部集成电路主机的通信方法和装置
CN111124979B (zh) * 2019-10-31 2021-07-06 苏州浪潮智能科技有限公司 一种基于堆栈结构的i2c多主访问方法和系统
CN112104760A (zh) * 2020-08-13 2020-12-18 四川虹美智能科技有限公司 地址码分配方法、主机及从机
CN113132198B (zh) * 2021-03-26 2023-03-10 东信和平科技股份有限公司 一种多主一从的spi安全通信装置及通信方法
CN114461550A (zh) * 2021-12-16 2022-05-10 加弘科技咨询(上海)有限公司 基于i2c通信的多主控设备访问仲裁系统及方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6389956A (ja) * 1986-10-03 1988-04-20 Fujitsu Ltd マスタ・スレーブシステムのアクセス制御方法
US5555425A (en) * 1990-03-07 1996-09-10 Dell Usa, L.P. Multi-master bus arbitration system in which the address and data lines of the bus may be separately granted to individual masters
KR100224965B1 (ko) * 1997-07-10 1999-10-15 윤종용 다층 구조의 아이2씨 버스를 이용한 진단/제어 시스템
IL140568A0 (en) * 1998-07-01 2002-02-10 Qualcomm Inc Improved inter-device serial bus protocol
US7000049B1 (en) * 2000-12-28 2006-02-14 Juniper Networks, Inc. Systems and methods for reliably selecting bus mastership in a fault tolerant manner
US7546446B2 (en) * 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
US20040003317A1 (en) 2002-06-27 2004-01-01 Atul Kwatra Method and apparatus for implementing fault detection and correction in a computer system that requires high reliability and system manageability
US7305510B2 (en) * 2004-06-25 2007-12-04 Via Technologies, Inc. Multiple master buses and slave buses transmitting simultaneously
KR100696111B1 (ko) * 2005-07-15 2007-03-20 삼성전자주식회사 통신시스템
US8818274B2 (en) * 2009-07-17 2014-08-26 Qualcomm Incorporated Automatic interfacing between a master device and object device
TW201104450A (en) * 2009-07-29 2011-02-01 Inventec Corp Method of remote controlling a server device and the server device
CN102025565B (zh) 2010-12-07 2012-12-19 美的集团有限公司 一种用于多个设备之间的i2c总线通讯检测方法
CN102193889B (zh) 2011-06-08 2014-01-22 杭州国芯科技股份有限公司 一种i2c总线转发器及其读写方法
US20130042248A1 (en) * 2011-08-11 2013-02-14 Norman S. Gargash System and method for supporting parallel threads in a multiprocessor environment
US9336167B2 (en) * 2012-12-13 2016-05-10 Texas Instruments Incorporated I2C controller register, control, command and R/W buffer queue logic
US9300129B2 (en) 2013-03-12 2016-03-29 Ascensia Diabetes Care Holding Ag Reverse battery protection for battery-powered devices
US9448960B2 (en) * 2013-03-14 2016-09-20 Linear Technology Corporation Address translation in I2C data communications system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI625630B (zh) * 2016-08-02 2018-06-01 緯穎科技服務股份有限公司 電腦系統及匯流排仲裁方法
US10581973B2 (en) 2016-08-02 2020-03-03 Wiwynn Corporation Computer system and bus arbitration method
US10482047B2 (en) 2016-12-09 2019-11-19 Autochips Inc. Slave device connected to master device via I2C bus and communication method thereof
TWI731200B (zh) * 2016-12-09 2021-06-21 大陸商合肥杰發科技有限公司 使用i2c匯流排與主機連接的從機及其通信方法

Also Published As

Publication number Publication date
TWI636367B (zh) 2018-09-21
CA2938704A1 (en) 2015-08-13
JP6629215B2 (ja) 2020-01-15
US10204065B2 (en) 2019-02-12
CN106462526A (zh) 2017-02-22
EP3103021A1 (en) 2016-12-14
EP3103021B1 (en) 2020-12-16
JP2017505495A (ja) 2017-02-16
US20160350248A1 (en) 2016-12-01
WO2015120339A1 (en) 2015-08-13
CN106462526B (zh) 2019-12-31

Similar Documents

Publication Publication Date Title
TWI636367B (zh) 用於多個主機匯流排協定的方法與裝置
US7562172B2 (en) I2C Slave/master interface enhancement using state machines
EP1877916B1 (en) Dynamic 12c slave device address decoder
JP6517243B2 (ja) リンクレイヤ/物理レイヤ(phy)シリアルインターフェース
US20150100713A1 (en) Coexistence of i2c slave devices and camera control interface extension devices on a shared control data bus
KR20170110610A (ko) 시리얼 버스를 위한 수신 클록 캘리브레이션
KR20160107247A (ko) 대역-내 인터럽트를 이용한 카메라 제어 인터페이스 확장
JP2008539498A (ja) 単一のi2cデータストリームからの並列i2cスレーブデバイスのプログラミング
KR20030033040A (ko) 인터페이스 디바이스 및 이를 포함하는 디바이스 및 통신방법
TWI742422B (zh) 聚集帶內中斷
US8402180B2 (en) Autonomous multi-packet transfer for universal serial bus
JP2008539496A (ja) I2cスレーブ装置の複数のi/oバンクの同時制御
CN108280041B (zh) 一种内部集成电路主机的通信方法和装置
JP2008539644A (ja) プログラマブル書込みトランザクションサイクルを有するi2cスレーブ装置
WO2022161244A1 (zh) 多主机仲裁方法、装置和可读存储介质
US9921981B2 (en) Method to minimize the number of IRQ lines from peripherals to one wire
TW201908984A (zh) 由第三方啟動之加速改良式內部積體電路停止
CN112688843A (zh) 用于多点互连上的对等通信的系统、装置和方法
US10572439B1 (en) I3C read from long latency devices
CN112445744A (zh) I2c通信
JP2014232414A (ja) I2c通信スレーブ装置
Myers Interfacing using serial protocols using spi and i2c

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees