通过 I2C 执行的 MCT8329A 读取操作涉及以下序列。
- I2C 启动条件。
- 序列从 I2C 目标起始字节开始。
- 起始字节后跟 24 位控制字。控制字中的位 23 必须为 1,因为它是一个读取操作。
- 控制字后跟重复启动或正常启动。
- MCT8329A 在 SDA 上发送数据字节。MCT8329A 发送的字节数取决于控制字中的 DLEN 字段。
- 在发送数据字节时,首先发送 LSB 字节。有关更多详细信息,请参阅下面的示例。
- 16 位/32 位读取 – 发回控制字中所述的地址中的数据。
- 64 位读取 – 64 位被视为两个 32 位读取。控制字中所述的地址用作地址 0。地址 1 由 MCT8329A 通过将地址 0 递增 2 在内部进行计算。MCT8329A 一共发送 8 个数据字节。前 4 个字节(以 LSB 在前的方式发送)从地址 0 读取,接下来的 4 个字节从地址 1 读取。
- MCT8329A 需要花一些时间来处理控制字并从给定的地址读取数据。这涉及一些延迟。具有目标 ID 的重复启动很可能被否定确认。如果 MCT8329A 已否定确认 I2C 读取请求,则在几个周期后重试。在该重试期间,不必将整个数据包连同控制字一起发送。仅发送具有目标 ID 和读取位的启动条件就足够了。
- 如果启用了 CRC,则 MCT8329A 会在末尾发送一个额外的 CRC 字节。如果启用了 CRC,则外部 MCU I2C 控制器必须在发送停止位之前读取该附加字节。CRC 是针对整个数据包(目标 ID + W 位、控制字、目标 ID + R 位、数据字节)进行计算的。
- I2C 停止条件。