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

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

20.5.3. I2Cコントローラーのディスエーブル

レジスターのIC_ENABLE_STATUSが追加され、IC_ENABLEレジスターが1から0に設定されたことに応答してハードウェアが完全にシャットダウンしたことをソフトウェアが明確に特定できるようになっています。†

  1. タイマーの間隔 (ti2c_poll) は、システムで使用されており、I2Cコントローラーによってサポートされる最大のI2C転送速度の信号周期の10倍に等しくなるように定義します。例えば、最大のI2C転送モードが400Kbpsの場合、ti2c_pollは25usになります。†
  2. 最大のタイムアウト・パラメーターであるMAX_T_POLL_COUNTを定義します。それにより、繰り返し行われるポーリングの動作がこの最大値を超えた場合にエラーが報告されます。†
  3. それ以降にソフトウェアが開始するI2Cマスター・トランザクションをブロックするスレッド/プロセス/機能を実行します。ただし、保留中の転送が完了することは許可します。
    • I2CコントローラーがI2Cスレーブ専用の動作にプログラミングされている場合は、このステップを無視することができます。†
  4. 変数のPOLL_COUNTは0に初期化されます。†
  5. IC_ENABLEを0に設定します。†
  6. IC_ENABLE_STATUSレジスターを読み出し、IC_ENビット (ビット0) をテストします。POLL_COUNTを1増やします。POLL_COUNT >= MAX_T_POLL_COUNTの場合は、関連するエラーコードで終了します。†
  7. IC_ENABLE_STATUS[0] が1の場合は、ti2c_pollの間スリープし、1つ前のステップに戻ります。それ以外の場合は、関連する成功コードで終了します。†