通过 I2C 执行的 MCF8315C 写入事务涉及以下序列(请参阅图 6-55)。
- I2C 启动条件。
- 启动后跟 I2C 目标 ID 字节,其中包括 7 位目标 ID 和设置为 0b 的 R/W 位。ACK(黄色框中)表示 MCF8315C 已处理接收的目标 ID,该目标 ID 与其 I2C 目标 ID 相匹配,因此将继续执行此事务。如果接收的目标 ID 与 MCF8315C 的 I2C ID 不匹配,则将忽略此事务,并且 MCF8315C 不会发送 ACK。
- 目标 ID 字节后跟 24 位控制字,每次发送一个字节。控制字中的位 23 为 0b,因为它是写入事务。ACK(蓝色框中)对应于 MCF8315C 发送到控制器的响应,表明已接收(控制字的)前一个字节并且可以发送下一个字节。
- 24 位控制字后跟数据字节。控制器发送的数据字节数取决于控制字中的 DLEN 字段。
- 在发送数据字节时,首先发送 LSB 字节。有关更多详细信息,请参阅节 6.6.2.4。
- 16 位/32 位写入 – 发送的数据被写入控制字中所述的地址。
- 64 位写入 – 64 位被视为两个连续 32 位写入。控制字中所述的地址用作 Addr_1。Addr_2 由 MCF8315C 通过将 Addr_1 递增 0x2 来计算。一共发送 8 个数据字节。前 4 个字节(以 LSB 在前的方式发送)写入 Addr_1,接下来的 4 个字节写入 Addr_2。
- 蓝色框中的 ACK(每个数据字节之后)对应于 MCF8315C 向控制器发送的响应,表明已接收前一个数据字节并且可以发送下一个数据字节。
- 如果启用了 CRC,则数据包以 CRC 字节结束。CRC 是针对整个数据包进行计算的(目标 ID + W 位、控制字、数据字节)。MCF8315C 将在接收到 CRC 字节时发送一个 ACK。
- 终止事务的控制器 I2C 停止条件。