MCF8329A での I2C を介した読み出しトランザクションには、次のシーケンスが含まれます (図 7-54 を参照)。
- トランザクションを開始するためのコントローラからの I2C START 条件。
- START の後に I2C ターゲット ID バイトが続きます。このバイトは、7 ビットのターゲット ID と 0b に設定された R/W ビットとで構成されます。ACK (黄色の枠で囲まれた部分) は、受信されたターゲット ID を MCF8329A が処理したことを示します。この ID が I2C ターゲット ID と一致していることを根拠に、このトランザクションは進められます。受信されたターゲット ID が MCF8329A の I2C ID と一致しない場合、そのトランザクションは無視され、MCF8329A は ACK を送信しません。
- ターゲット ID バイトの後に、24 ビットの制御ワードが 1 バイトずつ送信されます。読み出しトランザクションであるため、制御ワードのビット 23 は 1b に設定されます。ACK (青色の枠で囲まれた部分) は、「(制御ワードの) 前のバイトの受信が完了したため、次のバイトを送信してもよい」という、MCF8329A がコントローラに送信したアクノリッジに対応します。
- 制御ワードの後に、繰り返し START (RS、先行する STOP なしで START) または通常の START (P の後に S) が続き、MCF8329A から I2C コントローラへの、(リードバックされる) データの転送が開始されます。RS または S の後に、7 ビットのターゲット ID と 1b に設定された R/W ビットが続き、読み出しトランザクションが開始されます。MCF8329A は、読み出しトランザクション要求を受信したことをアクノリッジするため、ACK (RS の後の灰色の枠で囲まれた部分) をコントローラに送信します。
- 読み出しトランザクション要求をアクノリッジした後、MCF8329A はデータ バイトを SDA に 1 バイトずつ送信します。MCF8329A が送信するデータ バイト数は制御ワードの DLEN フィールドで決まります。
- データ バイト送信時、LSB バイトが最初に送信されます。詳細については、セクション 7.6.2.4 の例を参照してください。
- 16 ビット / 32 ビット読み出し – 制御ワードに記載されたアドレスからのデータがコントローラに返されます。
- 64 ビット読み出し – 64 ビットは 2 つの連続した 32 ビット読み出しとして扱われます。制御ワードに記載されたアドレスは、Addr_1 と見なされます。Addr_2 は、Addr_1 を 0x2 ずつインクリメントすることで、MCF8329A によって内部的に計算されます。MCF8329A により、合計 8 データ バイトが送信されます。最初の 4 バイト (LSB ファーストで送信) は Addr_1 から読み出され、次の 4 バイトは Addr_2 から読み出されます。
- オレンジ色の枠で囲まれた ACK は、「前のバイトの受信が完了したため、次のバイトを送信してもよい」という、MCF8329A がコントローラに送信したアクノリッジに対応します。
- 制御ワード内で CRC が有効化されている場合、MCF8329A は追加の CRC バイトを最後に送信します。コントローラは CRC バイトを読み出した後で、最後の ACK (オレンジ色の枠で囲まれた部分) を送信する必要があります。CRC は、パケット全体 (ターゲット ID + W ビット、制御ワード、ターゲット ID + R ビット、データ バイト) に対して計算されます。
- トランザクションを終了するための、コントローラからの I2C STOP 条件。