MCT8329A での I2C を介した読み出し動作には、次のシーケンスが含まれます。
- I2C START 条件。
- このシーケンスは I2C ターゲットの START バイトで始まります。
- START バイトの後に 24 ビットの制御ワードが続きます。読み出し動作であるため、制御ワードのビット 23 は 1 である必要があります。
- 制御ワードの後に繰り返し START または通常の START が続きます。
- MCT8329A は、SDA でデータ・バイトを送信します。MCT8329A が送信するバイト数は制御ワードの DLEN フィールド値で決まります。
- データ・バイト送信時、LSB バイトが最初に送信されます。詳細については、以下の例を参照してください。
- 16 ビット / 32 ビット読み出し – 制御ワードに記載されたアドレスからのデータが返されます。
- 64 ビット読み出し – 64 ビットは 2 つの 32 ビット読み出しとして扱われます。制御ワードに記載されたアドレスは、Addr 0 と見なされます。Addr 1 は、Addr 0 を 2 増やすことで、MCT8329A によって内部的に計算されます。MCT8329A により、合計 8 データ・バイトが送信されます。最初の 4 バイト (LSB ファーストで送信) は Addr 0 から読み出され、次の 4 バイトは Addr 1 から読み出されます。
- MCT8329A は、制御ワードの処理と、指定されたアドレスからのデータの読み出しにある程度の時間を要します。これにはある程度の遅延が含まれます。ターゲット ID を伴う繰り返し START が NACK される可能性は十分にあります。MCT8329A によって I2C 読み出し要求が NACK された場合、数サイクル後にリトライします。このリトライ中、制御ワードを含むパケット全体を送信する必要はありません。ターゲット ID と読み出しビットを伴う START 条件のみを送信すれば十分です。
- CRC が有効化されている場合、MCT8329A は最後に追加の CRC バイトを送信します。CRC が有効化されている場合、外部 MCU の I2C コントローラは、STOP ビットを送信する前に、この追加バイトを読み出す必要があります。CRC は、パケット全体 (ターゲット ID + W ビット、制御ワード、ターゲット ID + R ビット、データ・バイト) に対して計算されます。
- I2C STOP 条件。