次の手順では、F/S モードでのトランザクションの完了について説明します。
- コントローラは、スタート条件を生成することで、データ転送を開始します。図 6-20 に示されているように、SCL が High の状態で SDA ラインに High から Low への遷移が発生すると、スタート条件となります。すべての I2C 互換デバイスは、スタート条件を認識します。
- 次に、コントローラは SCL パルスを生成し、7 ビットのアドレスと読み取り/書き込み方向ビット (R/W) を SDA ライン上で送信します。すべての送信中、コントローラはデータが有効であることを確認します。図 6-21 に示されているように、有効なデータ条件では、クロック パルスの High 期間全体にわたって SDA ラインが安定している必要があります。すべてのデバイスは、コントローラによって送信されたアドレスを認識して、そのアドレスをそれぞれの内部固定アドレスと比較します。一致するアドレスを持つターゲット デバイスだけが、9 番目の SCL サイクルの High 期間全体にわたって SDA ラインを Low にすることで、アクノリッジ (受信確認) を生成します (図 6-19 も参照)。コントローラがこのアクノリッジを検出すると、ターゲットとの通信リンクが確立されます。
- コントローラはさらに SCL サイクルを生成して、ターゲットにデータを送信 (R/W ビット 0) または受信 (R/W ビット 1) します。どちらの場合も、トランスミッタから送信されたデータに対してレシーバがアクノリッジを返す必要があります。したがって、アクノリッジ信号は、どちらがレシーバかに応じて、コントローラが生成する場合とターゲットが生成する場合があります。9 ビットの有効なデータ シーケンスは、8 つのデータ ビットと 1 つのアクノリッジ ビットで構成され、必要なだけ継続できます。
- データ転送の終了を通知するために、コントローラは SCL ラインが High の状態で SDA ラインを Low から High に引き上げることでストップ条件を生成します。図 6-20 を参照してください。このアクションによってバスが解放され、アドレス指定されたターゲットとの通信リンクが停止します。すべての I2C 互換デバイスが、ストップ条件を認識します。ストップ条件の受信によって、バスは解放され、すべてのターゲット デバイスはスタート条件および一致するアドレスが送信されるのを待ちます。
図 6-20 START 条件と STOP 条件
図 6-21 I2C バスでのビット転送