インテルのみ表示可能 — GUID: eri1481130577460
Ixiasoft
インテルのみ表示可能 — GUID: eri1481130577460
Ixiasoft
20.4.4. 複数のマスターの調停
I2Cコントローラーのバスプロトコルにより、複数のマスターを同じバス上に配置することができます。同じI2Cバスに2つのマスターが存在する際に、両方のマスターが同時にSTART条件を生成し、バスの制御を同じタイミングで取得しようとした場合には、調停手順があります。1つのマスター (例えばマイクロコントローラー) がバスの制御を取得すると、このマスターがSTOP条件を送信してバスをアイドル状態にするまで、他のマスターではバスの制御を取得することはできません。†
調停は、SCLラインが1の際にSDAラインで行われます。他のマスターが0を送信している際に1を送信しているマスターは、調停に敗退し、データ出力ステージをオフにします。調停に敗退したマスターは、バイト転送の終了までクロックの生成を続けることができます。両方のマスターが同じスレーブデバイスをアドレス指定している場合、調停はデータフェーズに入ることがあります。†
他のマスターとの調停に敗退したことを検出すると、I2CコントローラーはSCLの生成を停止します。†
次の図は、バス上で調停している2つのマスターのタイミングを表しています。
バスの制御は、競合するマスターから送信されるアドレスまたはマスターコード、およびデータによって決まります。そのため、バスには中央マスターや優先順位はありません。†
次の条件の間での調停は許可されません。†
- RESTART条件とデータビット †
- STOP条件とデータビット †
- RESTART条件とSTOP条件 †
スレーブは調停プロセスに関与しません。†