インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

20.4.4. 複数のマスターの調停

I2Cコントローラーのバスプロトコルにより、複数のマスターを同じバス上に配置することができます。同じI2Cバスに2つのマスターが存在する際に、両方のマスターが同時にSTART条件を生成し、バスの制御を同じタイミングで取得しようとした場合には、調停手順があります。1つのマスター (例えばマイクロコントローラー) がバスの制御を取得すると、このマスターがSTOP条件を送信してバスをアイドル状態にするまで、他のマスターではバスの制御を取得することはできません。†

調停は、SCLラインが1の際にSDAラインで行われます。他のマスターが0を送信している際に1を送信しているマスターは、調停に敗退し、データ出力ステージをオフにします。調停に敗退したマスターは、バイト転送の終了までクロックの生成を続けることができます。両方のマスターが同じスレーブデバイスをアドレス指定している場合、調停はデータフェーズに入ることがあります。†

他のマスターとの調停に敗退したことを検出すると、I2CコントローラーはSCLの生成を停止します。†

次の図は、バス上で調停している2つのマスターのタイミングを表しています。

図 108. 複数のマスターにおける調停 †

バスの制御は、競合するマスターから送信されるアドレスまたはマスターコード、およびデータによって決まります。そのため、バスには中央マスターや優先順位はありません。†

次の条件の間での調停は許可されません。†

  • RESTART条件とデータビット †
  • STOP条件とデータビット †
  • RESTART条件とSTOP条件 †

スレーブは調停プロセスに関与しません。†