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

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

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

I2Cコントローラーをスレーブとして使用するには、次の手順を行います。†

  1. IC_ENABLEレジスターのビット0に0を書き込み、I2Cコントローラーを無効にします。†
  2. IC_SARレジスター (ビット9:0) に書き込み、スレーブアドレスを設定します。これは、I2Cコントローラーが応答するアドレスです。†
    注: I2Cコントローラーのスレーブアドレスのリセット値は0x55です。0x55をスレーブアドレスとして使用している場合は、この手順を問題なく省略することができます。
  3. IC_CONレジスターに書き込み、サポートされるアドレス指定のタイプを指定します (7ビットまたは10ビット。ビット3を設定)。ビット6 (IC_SLAVE_DISABLE) に0、およびビット0 (MASTER_MODE) に0を書き込み、I2Cコントローラーをスレーブ専用モードで有効にします。†
    注: スレーブとマスターには、7ビットまたは10ビット・アドレスのアドレス指定から同じタイプをプログラミングする必要はありません。例えば、スレーブを7ビットのアドレス指定、マスターを10ビットのアドレス指定 (またはその逆) でプログラミングすることが可能です。†
  4. IC_ENABLEレジスターのビット0に1を書き込み、I2Cコントローラーを有効にします。†
    注: I2CバスがIDLE状態の際にのみ、I2Cスレーブのリセットを解除することが推奨されます。バス上で転送が進行している際にリセットをデアサートすると、SDASCLの同期に使用される内部フリップフロップが、リセット値の1からバス上の実際の値にトグルします。このシナリオにおいて、SCLが1の際にSDAが1から0にトグルし、誤ったSTART条件がI2Cスレーブで検出された場合は、I2CをIC_SLAVE_DISABLE = 1およびIC_MASTER_MODE = 1でコンフィグレーションすると、スレーブ・インターフェイスはリセット後に無効になります。次に、内部SDASCLがバス上の値に同期した後で、IC_CON[0] = 0およびIC_CON[6] = 0をプログラミングし、スレーブ・インターフェイスを有効にすることができます。これには、リセットのデアサート後、ic_clkで約6サイクルが必要です。†