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

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

20.5.2.1. 初期のコンフィグレーション

マスターモードの動作では、ターゲットアドレスおよびアドレス形式は、I2Cコントローラーを無効にすることなく動的に変更することが可能です。この機能は、I2Cコントローラーがマスターとして機能している場合にのみ適用されます。スレーブでは、アドレスに変更を加える前にコンポーネントを無効にする必要があります。I2Cコントローラーをマスターとして使用するには、次の手順を実行します。†

複数のI2C転送の場合は、Tx FIFOに追加で書き込みを行い、I2Cトランザクション時にTx FIFOが空にならないようにします。いずれかの段階でTx FIFOが完全に空になった場合は、ストップビットでSTOPを発行するように示されていないため、マスターはSCLラインをLowに保持して転送をストールします。マスターは、ストップビットでタグ付けされたTx FIFOエントリーを認識すると転送を完了します。

  1. IC_ENABLEレジスターのビット0に0を書き込み、I2Cコントローラーを無効にします。†
  2. IC_CONレジスターに書き込み、スレーブの動作でサポートされる最大速度モードを設定します (ビット2:1)。また、デバイスがスレーブの場合に、I2Cコントローラーが7ビットもしくは10ビットのアドレス指定モードのどちらで転送を開始するかを指定します (ビット3)。†
  3. IC_TARレジスターに、アドレス指定するI2Cデバイスのアドレスを書き込みます。また、これは、I2CがGeneral CallまたはSTART BYTEコマンドのどちらを実行するのかを示します。I2Cコントローラーのマスターが開始する転送に必要な速度 (7ビットまたは10ビットのアドレス指定) は、IC_10BITADDR_MASTERビット・フィールド (ビット12) で制御されます。†
  4. IC_ENABLEレジスターのビット0に1を書き込み、I2Cコントローラーを有効にします。†
  5. 次に、転送の方向と送信するデータをIC_DATA_CMDレジスターに書き込みます。I2Cコントローラーが有効になる前にIC_DATA_CMDレジスターが書き込まれた場合、データとコマンドは損失します。I2Cコントローラーが有効になっていない際に、バッファーはクリアされた状態で維持されます。†