JP2017505495A - マルチマスターバスプロトコルのための方法および装置 - Google Patents

マルチマスターバスプロトコルのための方法および装置 Download PDF

Info

Publication number
JP2017505495A
JP2017505495A JP2016550596A JP2016550596A JP2017505495A JP 2017505495 A JP2017505495 A JP 2017505495A JP 2016550596 A JP2016550596 A JP 2016550596A JP 2016550596 A JP2016550596 A JP 2016550596A JP 2017505495 A JP2017505495 A JP 2017505495A
Authority
JP
Japan
Prior art keywords
master
bus
slave device
slave
masters
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2016550596A
Other languages
English (en)
Other versions
JP6629215B2 (ja
Inventor
クリストファー・ディオニシオ
トッド・ティ・スワンジー
グレゴリー・アール・ステフコヴィチ
Original Assignee
アセンシア・ディアベティス・ケア・ホールディングス・アーゲー
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 アセンシア・ディアベティス・ケア・ホールディングス・アーゲー filed Critical アセンシア・ディアベティス・ケア・ホールディングス・アーゲー
Publication of JP2017505495A publication Critical patent/JP2017505495A/ja
Application granted granted Critical
Publication of JP6629215B2 publication Critical patent/JP6629215B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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)
  • Information Transfer Systems (AREA)
  • Small-Scale Networks (AREA)

Abstract

本発明の実施形態は、マルチマスターコンピュータバスを調停するためのシステム、方法および装置を提供する。この実施形態は、マルチマスターシリアルコンピュータバスと、バスに接続された第1のマスターと、バスに接続された第2のマスターと、バスに接続されたスレーブデバイスと、第1のマスターから第2のマスターおよびスレーブデバイスへ行っている第1のI/Oラインと、第2のマスターから第1のマスターおよびスレーブデバイスへ行っている第2のI/Oラインとを含む。バスの使用を調停するためのバスアービトレーションプロトコルが、いずれかのマスターがバスマスターになる度に、マスターを単一の処理に制限し、マスターは、I/Oラインを用いて各々他方に信号を送ってバスマスターにならないようにするように各々適合されている。多数の他の態様が開示されている。

Description

本出願は、2014年2月7日に出願されて"METHODS AND APPARATUS FOR A MULTIPLE MASTER BUS PROTOCOL"と題された同時係属米国仮特許出願第61/937,446号に対する優先権を主張し、これによって全ての目的のためにその全部が参照によりここで本願明細書に組み込まれる。
本発明はバスプロトコルに関し、より詳細にはマルチマスターバスプロトコルのための装置、システム、および方法に関する。
インターインテグレーテッドサーキット規格(I2C、I2C、i2c、I-squared-C、I-two-C、またはIICと呼ばれる)は、フィリップス半導体部門、今日のNXPセミコンダクターズによって発明されたマルチマスターシリアルシングルエンドコンピュータバスを規定していて、通常、低速の周辺機器をマザーボード、組み込みシステム、携帯電話、または他のデジタル電子機器に接続するために用いられる。ここに含まれるI2Cの概略説明は、I2Cシステムについての基本的な情報を提供し、追加の詳細情報は、NXPセミコンダクターズによって発表されたhttp://www.nxp.com/documents/user_manual/UM10204.pdfで利用可能な「I2Cバス仕様およびユーザーマニュアル」(5訂版、2012年10月9日)の中で見つけることができ、これによって全ての目的のためにその全部が参照によりここで本願明細書に組み込まれる。
後で詳しく述べるように、I2Cは、バスマスターがI2Cバス上でアサートすることができる制御の量を制限するので、I2Cバスを用いてどの処理が確実に実行され得るかを制限する。I2Cは、それをいくつかの応用に対して不適当にし得る他の制限も有する。従って、I2Cプロトコルの範囲内で改良されたマルチマスターサポートを提供するためのシステム、装置、および方法が必要である。
いくつかの態様において、本発明の実施形態は、マルチマスターコンピュータバスを調停するための装置を提供する。この装置は、マルチマスターシリアルコンピュータバスと、バスに接続された第1のマスターと、バスに接続された第2のマスターと、バスに接続されたスレーブデバイスと、第1のマスターから第2のマスターおよびスレーブデバイスへ行っている第1のI/Oラインと、第2のマスターから第1のマスターおよびスレーブデバイスへ行っている第2のI/Oラインとを含む。バスの使用を調停するためのバスアービトレーションプロトコルは、いずれかのマスターがバスマスターになる度に、マスターを単一の処理に制限し、マスターは、I/Oラインを用いて各々他方に信号を送ってバスマスターにならないようにするように各々適合されている。
他の態様において、本発明の実施形態は、マルチマスターコンピュータバスを調停するためのシステムを提供する。このシステムは、マルチマスターシリアルコンピュータバスと、バスに接続された複数のマスターと、バスに接続された複数のスレーブデバイスと、複数のI/Oラインとを含み、I/Oラインは、複数のマスターの各々から伸びて、複数のマスターの他の全ておよびスレーブデバイスの各々へ行っている。バスの使用を調停するためのバスアービトレーションプロトコルは、いずれかのマスターがバスマスターになる度に、マスターを単一の処理に制限し、マスターは、I/Oラインを用いて他方に信号を送ってバスマスターにならないようにするように各々適合されている。
更に他の態様において、本発明の実施形態は、マルチマスターコンピュータバスを調停するための方法を提供する。この方法は、第1のマスター、第2のマスターおよびスレーブデバイスを接続するマルチマスターシリアルコンピュータバスを提供するステップと、第1のマスターから第2のマスターおよびスレーブデバイスへ伸びている第1のI/Oラインを提供するステップと、第2のマスターから第1のマスターおよびスレーブデバイスへ伸びている第2のI/Oラインを提供するステップと、いずれかのマスターがバスマスターになる時に、マスターの各々をスレーブデバイスとの単一の処理に制限するステップと、第1のマスターが、第2のマスターの介入なしでスレーブデバイスとの連続する、中断されない処理のシーケンスを実行することを意図している時に、第1のI/Oラインを用いて第2のマスターに信号を送ってバスマスターにならないようにするステップと、第2のマスターが、第1のマスターの介入なしでスレーブデバイスとの連続する、中断されない処理のシーケンスを実行することを意図している時に、第2のI/Oラインを用いて第1のマスターに信号を送ってバスマスターにならないようにするステップとを含む。
多数の他の態様が、これらおよび他の本発明の実施形態に従って提供される。本発明の実施形態の他の特徴および態様は、以下の詳細な説明、添付の請求項、および添付図面から、より十分に明らかになるであろう。
従来技術によって実現される例示的なI2Cシステムのブロック図を示す。 図1の例示的なI2Cシステムの動作を表すフローチャートを示す。 本発明のいくつかの実施形態による改良されたI2Cシステムの一例のブロック図を示す。 図3の例示的な改良されたI2Cシステムの動作を表すフローチャートを示す。 図3の例示的な改良されたI2Cシステムの動作を表すフローチャートを示す。 図3の例示的な改良されたI2Cシステムの動作を表すフローチャートを示す。
本発明の実施形態は、スレーブデバイスとの他のマスターによるいかなる介入処理もなしで、I2Cバス上でのスレーブデバイスとの複数の、中断されない処理を実行することを可能にする、改良されたI2Cマルチマスターバス排他(exclusion)方法および装置を提供する。標準I2C仕様は、スレーブデバイスとの単一の処理の前に複数のマスターのうちの1つがI2Cバスの制御を得るためのアービトレーション方法を提供するが、例えば、リードモディファイライト(read-modify-write)処理のような中断されない複数の処理のシーケンスを完了するために、マスターが排他的(exclusive)制御を維持することを可能にするいかなる手段も提供しない。本発明は、マスター(例えば、マイクロコントローラ)が、他のマスターによるスレーブに対するアクセスの競合なしで、複数の連続する処理のためにスレーブデバイス(例えば、メモリ)に対する排他的アクセスを保持することを可能にする。ここで用いた用語「単一の処理」は、スタート(START)マーカーとストップ(STOP)マーカーの間の単一の読み出し命令、単一の書き込み命令、または単一の複合フォーマット命令(これは、2つの読み出し、2つの書き込み、または1つの読み出し及び1つの書き込みに限られる)を意味することに注意されたい。
従来のI2Cは、抵抗によってプルアップされる、2本の双方向オープンドレインライン、シリアルデータライン(SDA)およびシリアルクロック(SCL)のみを使用する。他の電圧を有するシステムも可能であるが、使用される典型的な電圧は+5Vまたは+3.3Vである。
I2C基準設計は、7ビットまたは10ビット(使用するデバイスによる)のアドレス空間を有する。一般的なI2Cバス速度は、100kbit/s標準モードおよび10kbit/s低速モードであるが、任意の低クロック周波数も許容される。I2Cの最近の改訂は、より多くのノードのホストを務めることができ、かつより速い速度で動作することができる(例えば、400kbit/sファストモード、1Mbit/sファストモードプラス又はFm+、および3.4Mbit/s高速モード)。これらの速度は、PCより組み込みシステムに、より広く用いられる。利用可能な他の特徴、例えば16ビットアドレス指定もある。
ビットレートは、クロックストレッチング(clock stretching)または他のハードウェアオーバーヘッドなしで、マスターとスレーブの間の処理に対して提示されることに注意されたい。プロトコルオーバーヘッドは、バイト当たりのACK/NACKビットに加えて、スレーブデバイス内のスレーブアドレスおよびおそらくはレジスタアドレスを含む。このように、ユーザーデータの実際の転送レートは、ピークビットレートのみが意味するものより低い。例えば、スレーブとの各インタラクション(interaction)が、非効率的に、1バイトのデータのみが転送されることを許可する場合には、データレートはピークビットレートの半分より小さい。
ノードの最大数はアドレス空間によって制限され、更に400pFの全体のバスキャパシタンスによって制限される。それは実質的な通信距離を2、3メートルに制限する。
基準設計は、7ビットアドレス指定のクロック(SCL)およびデータ(SDA)ラインを有するバスである。バスは、ノードに対して2つの役割を有する:マスターおよびスレーブ。マスターノードは、クロックを生成して、スレーブとの通信を開始するノードである。スレーブノードは、マスターによってアドレス指定された時に、クロックを受信して応答するノードである。
バスはマルチマスターバスであり、これは任意の数のマスターノードが存在し得ることを意味する。加えて、マスターとスレーブの役割は、メッセージ間で(例えば、ストップが送信された後で)変わり得る。ほとんどのデバイスは単一の役割およびその2つのモードを用いるだけであるが、与えられたバスデバイスに対して4つの潜在的動作モードがある。モードは、マスター送信、マスター受信、スレーブ送信、およびスレーブ受信を含む。マスター送信モードにおいては、マスターノードはスレーブにデータを送信している。マスター受信モードにおいては、マスターノードはスレーブからデータを受信している。スレーブ送信モードにおいては、スレーブノードはマスターにデータを送信していて、スレーブ受信モードにおいては、スレーブノードはマスターからデータを受信している。
マスターは、最初は、スタートビットを送信することによってマスター送信モードの状態にあり、スタートビットの後には、通信することを望むスレーブの7ビットアドレスが続く。最後に、スレーブへの書き込み(0)を望むのか、またはスレーブからの読み出し(1)を望むのかを表す単一のビットが続く。
スレーブがバス上に存在する場合には、それはそのアドレスに対するACKビット(アクノリッジのためのアクティブロー)で応答する。そしてマスターは、(それが送信した読み出し/書き込みビットに従って)送信または受信モードにとどまり、スレーブは、その補完的なモード(それぞれ受信または送信)にとどまる。
アドレスおよびデータバイトは、最初に最上位ビットが送信される。スタートビットは、SCLがハイの時のSDAのハイからローへの移行によって示される。ストップビットは、SCLがハイの時のSDAのローからハイへの移行によって示される。SDAの他の全ての移行は、SCLがローの時に行われる。
マスターがスレーブに書き込みをしたい場合には、それはACKビットを送信するスレーブに1バイトを繰り返し送信する。(この状況では、マスターはマスター送信モードにあり、スレーブはスレーブ受信モードにある。)
マスターがスレーブから読み出しをしたい場合には、それはスレーブから1バイトを繰り返し受信し、マスターは最後のもの以外の全てのバイトの後にACKビットを送信する。(この状況では、マスターはマスター受信モードにあり、スレーブはスレーブ送信モードにある。)
そしてマスターは、ストップビットによって送信を終了するか、または、それがもう1つの転送(「複合メッセージ」)のためにバスの制御を保持することを望むのであれば、それはもう1つのスタートビットを送信することができる。
I2Cはメッセージの基本型を規定し、その各々はスタートマーカーによって開始し、ストップマーカーによって終了する。これらのメッセージ型は、マスターがデータをスレーブに書き込む単一のメッセージ、マスターがスレーブからデータを読み出す単一のメッセージ、およびマスターが多くても2つの読み出し及び/又は書き込みを1つ以上のスレーブに発行する複合メッセージを含む。
複合メッセージにおいて、各読み出し又は書き込みは、スタートマーカーおよびスレーブアドレスによって開始する。複合メッセージ内の最初のスタートマーカーの後、これらは反復スタートビットとも呼ばれる。反復スタートビットは、ストップビットの後にはなく、これは、スレーブが、次の転送が同じメッセージの一部であることを知る方法である。従来、複合メッセージは、スタートとストップのマーカー間の、2つの読み出し、2つの書き込み、または1つの読み出し及び1つの書き込み(いずれの順序でもよい)に限られる。このように、複合フォーマットを用いる単一の処理の間に、最高で2つの命令が、スタートとストップのマーカー間に送信され得る。
その製品ドキュメンテーションによって定義されるように、いかなる所与のスレーブも特定のメッセージに応答するだけである。I2Cシステムは、任意の(arbitrary)メッセージ構造をサポートする。ほんの少しの例外はあるが、I2C仕様は、メッセージのセマンティックス、例えばメッセージ内のデータバイトの意味を規定していない。さもなければ、メッセージのセマンティックスは、製品固有のものである。これらの例外は、I2Cの通常呼び出しアドレス(0x00)にアドレス指定されるメッセージを含む。
実際には、大部分のスレーブは、要求/応答制御モデルを採用していて、書き込み命令に続く1つ以上のバイトは、命令またはアドレスとして扱われる。これらのバイトは、次の書き込まれるバイトが扱われる方法および/またはスレーブが次の読み出しに応答する方法を決定する。大部分のI2C動作は、単一のバイト命令を含む。
物理層において、SCLおよびSDAラインはオープンドレイン設計であるので、プルアップ抵抗が必要である。ラインをフロートにすることは論理1である一方で、ラインをグラウンドへ引き下げることは論理0と考えられる。これがチャネルアクセス方法として用いられる。高速システム(及びいくつかの他のもの)は、さらに、少なくともSCLに電流源プルアップを追加する。これは、より高いバスキャパシタンスに適応して、より速い立ち上がり時間を可能にする。
これの重要な結果は、複数のノードが同時にラインを駆動していることができるということである。任意のノードがラインをローに駆動している場合、それはローであろう。論理1を送信(すなわち、ラインをフロートハイに)しようとしているノードは、これを見ることができ、これにより、もう1つのノードが同時にアクティブであることを知る。
SCL上で用いられる時、これはクロックストレッチングと呼ばれ、スレーブにフロー制御メカニズムを与える。SDA上で用いられる時、これはアービトレーションと呼ばれ、一度に1つの送信器のみが存在することを保証する。
アイドル(idle)の時、両方のラインはハイである。処理を開始するために、SCLがハイのままである間にSDAがローに引き下げられる。SDAを解放して再びフロートハイにすることはストップマーカーであり、バス処理の終了の信号を送ることである。合法ではあるが、これはスタートの直後では通常は無意味であるので、次のステップはSCLをローに引き下げることである。
スタートおよびストップ信号を除いて、SDAラインはクロックがローの間に変化するのみである。データビットを送信することは、データラインを所望のレベルで安定した状態に保つと共に、クロックラインにハイのパルスを送ること(pulsing)から成る。
SCLがローの間、送信器(最初はマスター)はSDAを所望の値にセットし、(値を伝搬させるための小さな遅延の後に)SCLをフロートハイにする。そしてマスターは、SCLが実際にハイになるのを待つ。これは、SCL信号の有限の立ち上り時間(プルアップ抵抗およびバスの寄生キャパシタンスのRC時定数)によって遅延され、スレーブのクロックストレッチングによって更に遅延され得る。
一旦SCLがハイになると、マスターは最小限の時間(例えば、標準速度のI2Cに対しては4μs)待ち、受信器がこのビットを見ることを確実にして、それを再びローに引き下げる。これで1ビットの送信を完了する。
一方向への毎8データビットの後に、「アクノリッジ(acknowledge)」ビットが他方向に送信される。送信器と受信器は、1ビットの間に役割を切り替え、かつての受信器は、単一の0のビット(ACK)を返送する。そうではなく送信器が1のビット(NACK)を見る場合には、それはスレーブがデータを受け入れることができないことを知る。その理由は、例えば、このようなスレーブが存在しない、命令が理解されなかった、または、マスターがスレーブに送信している時に、受信器がこれ以上のデータを受け入れることができない、などである。スレーブがマスターに送信していて、NACKが返されてスレーブによって受信される場合には、これは、マスターが現在のデータバイトの後にストップへの移転を望んでいることを示している。
アクノリッジビットの後に、マスターは、3つのことのうちの1つをすることができる:(1)他のデータのバイトを転送する準備をする:送信器はSDAをセットし、マスターはSCLにハイのパルスを送る;(2)「ストップ」を送信する:SDAをローにセットし、SCLをハイに変化させ、そしてSDAをハイに変化させ、これはI2Cバスを解放する;または(3)「反復スタート」を送信する:SDAをハイにセットし、SCLをハイに変化させ、そしてSDAを再びローに引き下げる。これは、バスを解放することなく、新しいI2Cバス処理を開始する。
I2Cプロトコルのより重要な特徴の1つは、クロックストレッチングである。アドレス指定されたスレーブデバイスは、1バイトを受信(または送信)した後に、クロックライン(SCL)をローに保持することができ、それは、まだ、更なるデータを処理する準備ができていないことを示している。スレーブと通信しているマスターは、現在のビットの送信を終えることができず、クロックラインが実際にハイになるまで待たなければならない。スレーブがクロックストレッチングをしている場合には、クロックラインは依然としてローである(接続がオープンドレインであるので)。第2の、より遅いマスターが同時にクロックを駆動しようとする場合も同様である。(複数のマスターが存在する場合には、それらのうちの一つ以外は通常アービトレーションを失う。)
マスターは、クロックラインがハイになっているのを認めるまで、かつクロックを再びローに引き下げる前の追加の最小限の時間(例えば、標準の100kbit/sのI2Cに対しては4μs)、待たなければならない。
マスターが所望の間SCLラインをローに保持することもできるが、用語「クロックストレッチング」は、通常、スレーブがそれをする時にだけ使われる。理論的には任意のクロックパルスを伸ばすことができるが、通常はアクノリッジ(acknowledgment)ビットの前か後の間隔が用いられる。例えば、スレーブがマイクロコントローラである場合には、そのI2Cインターフェースは、ソフトウェアが肯定的なアクノリッジを送信するか又はNACKを送信するかを決めるまで、各バイトの後のクロックを伸ばすことができる。
クロックストレッチングは、I2Cにおいて、スレーブがSCLを駆動する唯一の時間である。多くのスレーブは、クロックストレッチをする必要はなく、従って、それを駆動する回路はなく、SCLをもっぱら入力として処理する。いくつかのマスター、例えばカスタムASICの内部で見つかるものは、クロックストレッチングをサポートしないかもしれない。これらのデバイスは、しばしば「二線式インターフェース」と呼ばれ、I2Cではない。
全てのマスターは、スタートおよびストップビットのためにバスを監視していて、通常、他のマスターが単一の処理の間バスをビジーに保っている間はメッセージを開始しない。しかし、2つのマスターが、ほぼ同じ時間に送信を開始するかもしれない。この場合、アービトレーションが起こる。1つのマスターが複数のスレーブのアドレス指定を行う時には、スレーブ送信モードも調停され得るが、これは、いっそう一般的ではない。再試行を発行する前にランダム引き下がり遅延(random back-off delays)を用いるプロトコル(例えばイーサネット(登録商標))とは対照的に、I2Cは、決定論的なアービトレーション方針を有している。各送信器は、データライン(SDA)のレベルをチェックして、それをそれが予想するレベルと比較する。それらが合わない場合、その送信器は、アービトレーションを失って、このプロトコルインタラクションから抜ける。
1つの送信器がSDAを1にセットし(信号を駆動しない)、第2の送信器がそれを0にセットする(グラウンドに引き下げる)場合、その結果は、ラインがローである。そして第1の送信器は、ラインのレベルが予想されるものとは異なることに気づき、他のノードが送信していると結論する。このような違いに気づいた第1のノードは、アービトレーションを失い、SDAの駆動を停止する。それがマスターである場合には、SCLの駆動も停止して、ストップを待つ。それから、それは、その全メッセージを再発行しようとするかもしれない。それまでは、他のノードは、予想されるものとSDA上の実際のレベルとの違いに気づかず、従って送信を続ける。それは、問題なく、そうすることができる。なぜなら、ここまでは信号は正確に予想される通りであったからである。他のいかなる送信器も、そのメッセージを妨害しなかった。
2つのマスターが2つの異なるスレーブにメッセージを送信している場合には、より低いスレーブアドレスを送信しているものが、常にアドレス段階のアービトレーションに「勝つ」。2つのマスターが同じスレーブアドレスにメッセージを送信することはでき、そしてアドレスは時々複数のスレーブを指すので、アービトレーションはデータ段階まで続かなければならない。
アービトレーションは、非常にまれにしか発生しないが、適切なマルチマスターサポートのために必要である。クロックストレッチングと同様に、全てのデバイスがアービトレーションをサポートしているというわけではない。それをするものは、通常、それ自身を「マルチマスター」通信をサポートするものと呼ぶ。
2つのマスターが並行して同一のメッセージを同時に送信するという極めてまれな場合においては、両方が、通信が成功したと考えるが、スレーブは1つのメッセージしか見ない。複数のマスターによってアクセスされ得るスレーブは、この理由のために冪等(idempotent)である命令を有していなければならない。I2Cは、それをいくつかの応用に対して不適当にし得る他の制限も有している。
図1は、標準I2Cバス102を含む従来技術の標準マルチマスターI2Cシステム100のブロック図を示している。標準I2Cバス102は、複数のマスター104、106(この例では2つのみが示されている)と1つ以上のスレーブデバイス108(この例では1つのみが示されている)との間の通信を可能にする。スレーブデバイス108は、固定された数のアドレスピン(例えば、この例では3つが示されている)を含む。
図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)。
並行してこの標準I2Cバスアービトレーション処理200を実行するマスター104、106の各々で、マスター104、106のうちの1つが、選択されたスレーブデバイスとの単一の処理の前に、I2Cバスの制御を得る。しかし、従来技術のこのアービトレーション処理200の重要な制限は、一度マスターがバスマスターになると、該マスターが、選択されたスレーブデバイス108との単一の処理を実行することのみができるということである。そうすると、該マスターが単一の処理を完了した時に、他のマスターがバスマスターになって、例えば、スレーブデバイスに書き込みを行うことができるかもしれない。問題は、スレーブデバイス108が例えばメモリデバイスであって、中断されないリードモディファイライト処理のシーケンスが、例えばデータの整合性を保証するために必要である場合に、標準I2Cバスアービトレーション処理200が、第2のマスターがI2Cバス102の制御を得て、最初のマスターがリードモディファイライト処理のシーケンスの全ての部分を完了する前に、最初のマスターを遮って、メモリを変更することがないことを保証することができないことである。このように、システム100は、中断が不可能な複数の処理シーケンスを提供しないので、標準I2Cバスアービトレーション処理200は、データの不整合の問題という結果になり得る。
よりよくこの問題を示すために、以下の2つの例のスレーブアクセスシーケンスを考える。第1の例のシーケンスにおいては、マスターA 104が、最初にスレーブから0x01に等しいデータを読み出し、それからマスターA 104が、0x02に等しいデータをスレーブに書き込み、最後にマスターB 106が、スレーブから0x02に等しいデータを読み出す。この第1のシーケンスは、所望の結果になる。両方のマスター104、106は、スレーブが、整合性のあるデータを提供することを発見する。
しかし、第2の例のシーケンスにおいては、マスターA 104が、最初にスレーブから0x01に等しいデータを読み出し、それからマスターB 106が、スレーブから0x01に等しいデータを読み出し、最後にマスターA 104が、0x02に等しいデータをスレーブに書き込む。第2の例のシーケンスは、問題がある結果になる。2つのマスター104、106は、スレーブが、2つの異なる値、従って整合性のないデータを有することを経験する。
本発明の実施形態は、他の全てのI2Cマスターが、いかなる介入するI2C処理も実行することを防止すると共に、I2Cバスマスターが、複数の、連続するI2C処理を実行することを可能にする能力をシステム100に加えることによって、標準I2Cバスアービトレーション処理200を改良することによって、この潜在的データ不整合の問題に対処する。各マスターに対する1本の追加の汎用入出力(I/O)ピンおよびいくつかのソフトウェアロジックを加えることによって、本発明は、マスターが、他の介入するマスターによって中断されることなく、複数の処理(例えば、リードモディファイライト処理シーケンス)を実行する能力を提供する。
図3は、改良されたマルチマスターI2Cシステム300の例示的な実施形態を示していて、これは、スレーブに対するアクセスの相互排他性(exclusion)の機能を提供する。従来技術の標準システム100と同様に、本発明の実施形態の改良されたマルチマスターI2Cシステム300は、複数のマスター304、306(説明を簡単にするため、この例では2つのみが示されている)と、1つ以上のスレーブデバイス308(説明を簡単にするため、この例では1つのみが示されている)との間の通信を可能にするI2Cバス302を含む。更なるマスターおよびスレーブがシステム300に含まれ得るが、図3に示した単純な例は、より明確に本発明の特徴を示すために用いられることは理解されよう。標準I2Cシステム100の要素に加えて、本発明の実施形態の改良されたマルチマスターI2Cシステム300は、さらに、他のマスターの各々に各々接続されたシステム300内の各マスター304、306から来るI/OラインADDR1およびADDR2と、スレーブデバイス308の動的アドレスピン(例えば、アドレス1、アドレス2)とを含む。この構成は、各マスター304、306に、アクセスの前にスレーブデバイス308を独自にアドレス指定する能力を提供する。更なるマスターを有するシステムにおいては、更なるマスター毎の更なるI/Oラインが加えられる。
各マスター304、306がスレーブデバイス308にアクセスするために独自のアドレスを有するこの能力は、以下の規則のセットを課すことによって実現され得る。マスター304、306のいずれもスレーブデバイス308にアクセスしていない時、I/OラインADDR1、ADDR2は、通常、アイドル状態のハードウェアを介して論理1に保たれる。ADDR1は、マスターA 304上で実行するソフトウェア命令によって論理0に駆動され得るのみである。(I2Cバス302上の)アドレス1は、マスターA 304上で実行するソフトウェア命令によって用いられ得るのみである。ADDR2は、マスターB 306上で実行するソフトウェア命令によって論理0に駆動され得るのみである。(I2Cバス302上の)アドレス2は、マスターB 306上で実行するソフトウェア命令によって用いられ得るのみである。以下の表は、この規則のセットをまとめている。
Figure 2017505495
マスター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の特定のハードウェア実施態様の詳細に基づいて決定されることに注意されたい。いくつかの実施形態において、遅延は、不必要な余分の再試行/タイムアウトおよび潜在的競争状態を避けるために調和的(harmonic)間隔ではない長さに設定され得る。
図4は、マスターA 304が本発明の実施形態の改良されたI2Cシステム300のスレーブデバイス308にアクセスするために使用する例示的な方法400を示すフローチャートである。マスターA 304は、まず、ADDR2が論理1であるかどうかをチェックすることによって、他のマスター、マスターB 306がスレーブデバイス308に現在アクセスしているかどうかを判定する(402)。システムが他のマスターを含む場合、マスターA 304は他のマスターのI/Oラインもチェックする。ADDR2が論理1である場合、すなわちマスターB 306がスレーブデバイス308にアクセスしていないことを意味する場合、マスターA 304はADDR1を論理0に引き下げる(404)。これは、マスターAがスレーブデバイス308にアクセスしていることをマスターB 306に知らせる。マスターAは、それから、図6および以下に示すような標準I2Cプロトコルの改良されたバージョンを用いて、アドレス1を介してスレーブデバイス308にアクセスする(406)。マスターA 304は、それからエラーをチェックして(408)、なされるべき更なるスレーブアクセスがあるかどうかをチェックする(410)。スレーブデバイス308とのこれ以上の処理がない場合には、マスターA 304はADDR1を論理1に戻して(412)、この方法は終了する(414)。
スレーブデバイス308へのアクセス後にエラーがある場合、マスターA 304は、スレーブデバイス308へのアクセスをやめ、ADDR1を論理1に戻して(412)、この方法は終了する(414)。最初のアクセス(406)およびエラーチェック(408)の後に、実行されるべき更なるスレーブアクセスがある場合には、マスターA 304は、標準I2Cプロトコルを用いて、アドレス1を介してスレーブデバイス308に再度アクセスし(406)、フローはそこから続く。
マスターA 304がADDR2をチェックした(402)時に(ADDR2が論理0であることによって示されるように)マスターB 306がスレーブデバイス308にアクセスしている場合には、マスターA 304は、遅延期間の間、引き下がり(back off)(416)、それから最大再試行制限を超えたかどうかをチェックする(418)。最大再試行制限を超えていない場合、マスターA 304は再度ADDR2をチェックして(402)、フローはそこから続く。最大再試行制限を超えた場合、この方法は終了する(414)。
同様に、図5は、マスターB 306が本発明の実施形態の改良されたI2Cシステム300のスレーブデバイス308にアクセスするために使用する例示的な方法500を示すフローチャートである。マスターB 306は、まず、I/OラインADDR1が論理1であるかどうかをチェックする(502)ことによって、他のマスター、マスターA 304がスレーブデバイス308に現在アクセスしているかどうかを判定する。システムが他のマスターを含む場合、マスターB 306は他のマスターのI/Oラインもチェックする。I/OラインADDR1が論理1である場合、すなわちマスターA 304がスレーブデバイス308にアクセスしていないことを意味する場合、マスターB 306はADDR2を論理0に引き下げる(504)。これは、マスターB 306がスレーブデバイス308にアクセスしていることをマスターA 304に知らせる。マスターB 306は、それから、図6および以下に示すような標準I2Cプロトコルの改良されたバージョンを用いて、アドレス2を介してスレーブデバイス308にアクセスする(506)。マスター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をチェックした(502)時に(ADDR1が論理0であることによって示されるように)マスターA 304がスレーブデバイス308にアクセスしている場合には、マスターB 306は、遅延期間の間、引き下がり(back off)(516)、それから最大再試行制限を超えたかどうかをチェックする(518)。最大再試行制限を超えていない場合、マスターB 306は再度ADDR1をチェックして(502)、フローはそこから続く。最大再試行制限を超えた場合、この方法は終了する(514)。
図6は、図4および5それぞれの上述した方法400および500の(406)および(506)で呼び出される改良された標準I2Cバスアービトレーションプロトコルを示すフローチャートである。図6の方法600は、図2の従来技術の方法200と似ているが、引き下がり(back off)遅延ならびに再試行カウンタおよび制限を有していることに注意されたい。いずれのマスター304、306もスレーブデバイス308にアクセスする準備ができている時、マスター(例えば、マスターA 304またはマスターB 306)はスタート命令を発行して(602)、マスターが現在のバスマスターであるかどうかを判定する(604)。そうである場合は、バスマスターは、スレーブデバイス308に対する呼び出し方法400、500の中で示されたアドレスを用いて、所望のスレーブデバイス308を選択する(606)。マスターが現在のバスマスターになってスレーブデバイス308を選択する場合、次に、スレーブデバイス308が正しく選択されたことを判定するためにチェックが実行され(608)、エラーがない場合は、選択されたスレーブとの単一の処理(例えば、読み出し、書き込み、または複合)が実行される(610)。しかし、スレーブ選択エラーが発生した場合は、処理は実行されない。どちらの場合も、ストップ命令が発行され(612)、処理600は終了する(614)。
マスターが(604)で現在のバスマスターにならない場合、マスターは、遅延期間の間、引き下がり(back off)(616)、それから最大バスマスター再試行制限を超えたかどうかをチェックする(618)。最大バスマスター再試行制限を超えていない場合、マスターは新たなスタート命令を発行し(602)、マスターがバスマスターになったかどうかを見るために再度チェックを行い(604)、フローはそこから続く。最大バスマスター再試行制限を超えた場合、この方法は終了する(614)。
前述の説明は、本発明の例示的な実施形態を開示しているだけである。本発明の範囲内に入る上記で開示された装置、システムおよび方法の変形は、当業者に直ちに明らかである。従って、本発明が例示的な実施形態と関連して開示されたが、請求項によって定義されるような、他の実施形態も本発明の範囲内に入り得ることは理解されるべきである。
300 改良されたマルチマスターI2Cシステム
302 I2Cバス
304 マスターA
306 マスターB
308 スレーブデバイス
ADDR1、ADDR2 I/Oライン

Claims (20)

  1. マルチマスターシリアルコンピュータバスと、
    前記バスに接続された第1のマスターと、
    前記バスに接続された第2のマスターと、
    前記バスに接続されたスレーブデバイスと、
    前記第1のマスターから第2のマスターおよびスレーブデバイスへ行っている第1のI/Oラインと、
    前記第2のマスターから第1のマスターおよびスレーブデバイスへ行っている第2のI/Oラインとを備えていて、
    前記バスの使用を調停するためのバスアービトレーションプロトコルが、いずれかのマスターがバスマスターになるたびに、マスターを単一の処理に制限し、
    前記マスターは、I/Oラインを用いて各々他方に信号を送ってバスマスターにならないようにするように各々適合されていることを特徴とする装置。
  2. 前記第2のマスターがスレーブデバイスにアクセスすることを意図していることを示している場合には、第1のマスターはバスの使用を試みないし、前記第1のマスターがスレーブデバイスにアクセスすることを意図していることを示している場合には、第2のマスターはバスの使用を試みないことを特徴とする請求項1に記載の装置。
  3. 各マスターは、他のマスターの介入なしでバスマスターになる連続する複数の時間、そのそれぞれのI/Oライン上の信号をアサートしてバスマスターになるように適合されていることを特徴とする請求項1に記載の装置。
  4. 前記マスターはマイクロコントローラであり、前記スレーブデバイスはメモリデバイスであることを特徴とする請求項1に記載の装置。
  5. 前記第1のマスターは、第2のマスターに信号を送ってバスマスターにならないようにするように適合されていて、前記第1のマスターは、スレーブデバイスとの中断されないリードモディファイライト処理を実行するように更に適合されていることを特徴とする請求項1に記載の装置。
  6. 前記マルチマスターシリアルコンピュータバスは、インターインテグレーテッドサーキット(I2C)バスであることを特徴とする請求項1に記載の装置。
  7. 前記スレーブデバイスに接続されたI/Oラインは、スレーブデバイスに、どのマスターがスレーブデバイスにアクセスしているかを示すように適合されていることを特徴とする請求項1に記載の装置。
  8. マルチマスターシリアルコンピュータバスと、
    前記バスに接続された複数のマスターと、
    前記バスに接続された複数のスレーブデバイスと、
    複数のI/Oラインとを備えていて、1つのI/Oラインは、複数のマスターの各々から伸びて、複数のマスターの他の全ておよびスレーブデバイスの各々へ行っていて、
    前記バスの使用を調停するためのバスアービトレーションプロトコルが、いずれかのマスターがバスマスターになるたびに、マスターを単一の処理に制限し、
    前記マスターは、I/Oラインを用いて他方に信号を送ってバスマスターにならないようにするように各々適合されていることを特徴とするシステム。
  9. 他のいずれかのマスターがスレーブデバイスにアクセスすることを意図していることを示している場合には、マスターはバスの使用を試みないことを特徴とする請求項8に記載のシステム。
  10. 各マスターは、他のマスターの介入なしでバスマスターになる連続する複数の時間、そのそれぞれのI/Oライン上の信号をアサートしてバスマスターになるように適合されていることを特徴とする請求項8に記載のシステム。
  11. 前記マスターはマイクロコントローラを含み、前記スレーブデバイスは少なくとも1つのメモリデバイスを含むことを特徴とする請求項8に記載のシステム。
  12. 各マスターは、他の全てのマスターに信号を送ってバスマスターにならないようにするように適合されていて、少なくとも1つのマスターは、スレーブデバイスとの中断されないリードモディファイライト処理を実行するように更に適合されていることを特徴とする請求項8に記載のシステム。
  13. 前記マルチマスターシリアルコンピュータバスは、インターインテグレーテッドサーキット(I2C)バスであることを特徴とする請求項8に記載のシステム。
  14. 前記スレーブデバイスに接続されたI/Oラインは、スレーブデバイスに、どのマスターがスレーブデバイスにアクセスしているかを示すように適合されていることを特徴とする請求項8に記載のシステム。
  15. 第1のマスター、第2のマスターおよびスレーブデバイスを接続するマルチマスターシリアルコンピュータバスを提供するステップと、
    前記第1のマスターから第2のマスターおよびスレーブデバイスへ伸びている第1のI/Oラインを提供するステップと、
    前記第2のマスターから第1のマスターおよびスレーブデバイスへ伸びている第2のI/Oラインを提供するステップと、
    いずれかのマスターがバスマスターになる時に、マスターの各々をスレーブデバイスとの単一の処理に制限するステップと、
    第1のマスターが、第2のマスターの介入なしでスレーブデバイスとの連続する、中断されない処理のシーケンスを実行することを意図している時に、第1のI/Oラインを用いて第2のマスターに信号を送ってバスマスターにならないようにするステップと、
    第2のマスターが、第1のマスターの介入なしでスレーブデバイスとの連続する、中断されない処理のシーケンスを実行することを意図している時に、第2のI/Oラインを用いて第1のマスターに信号を送ってバスマスターにならないようにするステップとを有していることを特徴とする方法。
  16. 前記第2のマスターがスレーブデバイスにアクセスすることを意図していることを示している場合には、第1のマスターはバスの使用を試みないし、前記第1のマスターがスレーブデバイスにアクセスすることを意図していることを示している場合には、第2のマスターはバスの使用を試みないことを特徴とする請求項15に記載の方法。
  17. 前記スレーブデバイスにアクセスすることを意図していることを示すために、各マスターのそれぞれのI/Oライン上の信号をアサートするステップを更に有していることを特徴とする請求項15に記載の方法。
  18. 前記第1のマスターから第2のマスターに信号を送ってバスマスターにならないようにするステップと、
    前記第1のマスターによって、スレーブデバイスとの中断されないリードモディファイライト処理を実行するステップとを更に有していることを特徴とする請求項15に記載の方法。
  19. 前記マルチマスターシリアルコンピュータバスを提供するステップは、インターインテグレーテッドサーキット(I2C)バスを提供するステップを含むことを特徴とする請求項15に記載の方法。
  20. 前記スレーブデバイスに接続されているI/Oラインを介して、どのマスターがスレーブデバイスにアクセスしているかを、スレーブデバイスに対して示すステップを更に有していることを特徴とする請求項15に記載の方法。
JP2016550596A 2014-02-07 2015-02-06 マルチマスターバスプロトコルのための方法および装置 Active JP6629215B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461937446P 2014-02-07 2014-02-07
US61/937,446 2014-02-07
PCT/US2015/014925 WO2015120339A1 (en) 2014-02-07 2015-02-06 Methods and apparatus for a multiple master bus protocol

Publications (2)

Publication Number Publication Date
JP2017505495A true JP2017505495A (ja) 2017-02-16
JP6629215B2 JP6629215B2 (ja) 2020-01-15

Family

ID=52577977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016550596A Active JP6629215B2 (ja) 2014-02-07 2015-02-06 マルチマスターバスプロトコルのための方法および装置

Country Status (7)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018026088A (ja) * 2016-08-09 2018-02-15 株式会社リコー 通信システム及び画像形成装置

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
TWI625630B (zh) * 2016-08-02 2018-06-01 緯穎科技服務股份有限公司 電腦系統及匯流排仲裁方法
CN106681953B (zh) * 2016-12-09 2020-04-10 合肥杰发科技有限公司 使用i2c总线与主机连接的从机及其通信方法
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安全通信装置及通信方法

Citations (2)

* 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 マスタ・スレーブシステムのアクセス制御方法
US7000049B1 (en) * 2000-12-28 2006-02-14 Juniper Networks, Inc. Systems and methods for reliably selecting bus mastership in a fault tolerant manner

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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씨 버스를 이용한 진단/제어 시스템
JP2003534580A (ja) * 1998-07-01 2003-11-18 クゥアルコム・インコーポレイテッド 改善された装置間シリアルバスプロトコル
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

Patent Citations (2)

* 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 マスタ・スレーブシステムのアクセス制御方法
US7000049B1 (en) * 2000-12-28 2006-02-14 Juniper Networks, Inc. Systems and methods for reliably selecting bus mastership in a fault tolerant manner

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018026088A (ja) * 2016-08-09 2018-02-15 株式会社リコー 通信システム及び画像形成装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6629215B2 (ja) マルチマスターバスプロトコルのための方法および装置
JP6625557B2 (ja) センサーグローバルバス
US7562172B2 (en) I2C Slave/master interface enhancement using state machines
TWI731200B (zh) 使用i2c匯流排與主機連接的從機及其通信方法
US7788431B2 (en) Dynamic I2C slave device address decoder
JP6612885B2 (ja) シリアルバスのための受信クロック較正
JP6517243B2 (ja) リンクレイヤ/物理レイヤ(phy)シリアルインターフェース
US20150100713A1 (en) Coexistence of i2c slave devices and camera control interface extension devices on a shared control data bus
US20170177531A1 (en) Bus serialization for devices without multi-device support
KR20160107247A (ko) 대역-내 인터럽트를 이용한 카메라 제어 인터페이스 확장
JP4966695B2 (ja) マルチマスタのチェーン接続された二線シリアルバス装置及びディジタル状態機械
JP2008539497A (ja) 集積回路間におけるスレーブ装置の装置識別コーディング
JP2008539496A (ja) I2cスレーブ装置の複数のi/oバンクの同時制御
JP2008539644A (ja) プログラマブル書込みトランザクションサイクルを有するi2cスレーブ装置
JP2008539495A (ja) サービスに対する要求をラッチするスレーブ装置
CN108280041B (zh) 一种内部集成电路主机的通信方法和装置
WO2020046909A1 (en) Aggregated in-band interrupt
CN112445744B (zh) I2c通信
US10572439B1 (en) I3C read from long latency devices
JP2014232414A (ja) I2c通信スレーブ装置
MX7cK Synchronous I2C Communications with the

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191204

R150 Certificate of patent or registration of utility model

Ref document number: 6629215

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250