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

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

20.5.1.3. シングルバイトでのスレーブ受信機の動作

I2Cコントローラーは、バス上の別のI2CマスターデバイスがそのI2Cコントローラーをアドレス指定してデータを送信している場合に、スレーブ受信機として機能します。これには、次の内容が発生します。†

  1. 別のI2Cマスターデバイスが、IC_SARレジスターにあるI2Cコントローラーのスレーブアドレスに一致するアドレスでI2C転送を開始します。†
  2. I2Cコントローラーは送信されたアドレスを確認して転送の方向を特定し、I2Cコントローラーがスレーブ受信機として機能することを示します。†
  3. I2Cコントローラーは送信されたバイトを受信し、それを受信バッファーに配置します。†
    注: バイトがプッシュされた際にRX FIFOがデータで完全に満たされている場合は、オーバーフローが発生します。また、I2Cコントローラーは後続のI2C転送を続行します。NACKが生成されないため、ソフトウェアでは、I2Cコントローラーによって示されるオーバーフロー (IC_INTR_STATレジスターのR_RX_OVERビット) を認識し、データの損失から回復する適切なアクションを実行する必要があります。そのため、ソフトウェアには、オーバーフローの前にRX FIFOを処理するリアルタイムの制約があります。リモートで送信しているマスターにプレッシャーを再適用する方法はありません。†
  4. I2Cコントローラーは、RX_FULL割り込み (IC_RAW_INTR_STAT[2] レジスター) をアサートします。†

    IC_INTR_MASK[2] レジスターが0に設定されている、もしくはIC_TX_TLが0よりも大きな値に設定されていることによりRX_FULL割り込みがマスクされている場合は、CPUで定期的にIC_STATUSレジスターの読み出しを行うことが推奨されます。IC_STATUSレジスターの読み出しでビット3 (RFNE) が1に設定されている場合は、RX_FULL割り込みがアサートされている場合と同等であるとしてソフトウェアで処理する必要があります。†

  5. ソフトウェアでは、IC_DATA_CMDレジスター (ビット7:0) からバイトを読み出すことが可能です。†
  6. 現在のマスターデバイスでは、RESTART条件を発行してI2Cバスを保持する、もしくはSTOP条件を発行してバスを解放することができます。†