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

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

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

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

  1. 別のI2Cマスターデバイスが、I2CコントローラーのIC_SARレジスターのスレーブアドレスに一致するアドレスでI2C転送を開始します。†
  2. I2Cコントローラーは送信されたアドレスを確認して転送の方向を特定し、スレーブ送信機として機能することを示します。†
  3. I2Cコントローラーは、RD_REQ割り込み (IC_RAW_INTR_STATレジスターのビット5) をアサートし、ソフトウェアの応答を待機します。†

    IC_INTR_MASKレジスターのビット5 (M_RD_REQビット・フィールド) が0に設定されていることで、RD_REQ割り込みがマスクされている場合は、CPUに定期的なIC_RAW_INTR_STATレジスターの読み出しを実行するように指示することが推奨されます。†

    • 読み出しにおいて、IC_RAW_INTR_STATレジスターのビット5 (R_RD_REQビット・フィールド) が1に設定されていることが示されている場合は、RD_REQ割り込みがアサートされている場合と同等であるとして処理する必要があります。†
    • ソフトウェアでは次に、I2C転送を満たすように動作する必要があります。†
    • 使用するタイミング間隔は、I2Cコントローラーが処理できる最速のSCLクロック周期の10倍程度にする必要があります。例えば、400Kbpsの場合、タイミング間隔は25usです。†
      注: ここでは10の値が推奨されます。これは、I2Cバスで転送されるデータの単一のバイトに必要な時間にほぼ等しい値です。†
  4. 読み出し要求を受信する前にTX FIFOにデータが残っている場合、I2CコントローラーはTX_ABRT割り込み (IC_RAW_INTR_STATレジスターのビット6) をアサートし、TX FIFOから古いデータをフラッシュします。†
    注: I2CコントローラーのTX FIFOは、TX_ABRTイベントが発生するとかならず強制的にフラッシュ/リセット状態になるため、ソフトウェアでは、TX FIFOへの書き込みを試みる前にIC_CLR_TX_ABRTレジスターを読み出し、I2Cコントローラーをこの状態から解放する必要があります。詳細に関しては、レジスターマップのC_RAW_INTR_STATレジスターの説明を参照してください。†

    IC_INTR_MASK[6]レジスター (M_TX_ABRTビット・フィールド) が0に設定されていることによりTX_ABRT割り込みがマスクされている場合、CPUでIC_RAW_INTR_STATレジスターの定期的な読み出しを行うことが推奨されます。†

    • 読み出しにおいて、ビット6 (R_TX_ABRT) が1に設定されていることが示されている場合は、TX_ABRT割り込みがアサートされている場合と同等であるとして処理する必要があります。†
    • ソフトウェアからの追加アクションは必要ありません。†
    • 使用するタイミング間隔は、前のステップでIC_RAW_INTR_STAT[5] レジスターに対して説明されているものと同様になります。†
  5. ソフトウェアにより、書き込むデータをIC_DATA_CMDレジスターのDATビットに書き込み、ビット8に0を書き込みます。†
  6. 次に進む前に、IC_RAW_INTR_STATレジスターのRD_REQ割り込みおよびTX_ABRT割り込み (それぞれビット5と6) をソフトウェアでクリアする必要があります。†

    RD_REQ割り込みまたはTX_ABRT割り込みがマスクされている場合は、R_RD_REQビットまたはR_TX_ABRTビットのいずれかが1で読み出されると、IC_RAW_INTR_STATレジスターのクリアはすでに実行されています。†

  7. I2Cコントローラーはバイトを送信します。†
  8. マスターでは、RESTART条件を発行してI2Cバスを保持する、もしくはSTOP条件を発行してバスを解放することができます。†