ZHCSQ51 November 2023 MCF8329A
PRODUCTION DATA
MCF8329A 在内部使用缓冲区来存储在 I2C 上接收到的数据。收集 I2C 总线上的数据具有最高的优先级。有 2 个缓冲区(乒乓)用于 I2C Rx 数据,有 2 个缓冲区(乒乓)用于 I2 Tx 数据。
来自外部 MCU 的写入请求存储在 Rx 缓冲区 1 中,然后触发解析块以处理 Rx 缓冲区 1 中的该数据。当 MCF8329A 正在处理 Rx 缓冲区 1 中的写入数据包时,如果有另一个新的读取/写入请求,则来自 I2C 总线的全部数据都存储在 Rx 缓冲区 2 中,在当前请求之后进行处理。
MCF8329A 最多可以容纳两个连续的读取/写入请求。如果 MCF8329A 由于高优先级中断而处于忙状态,则发送的数据将存储在内部缓冲区(Rx 缓冲区 1 和 Rx 缓冲区 2)中。此时,如果有第三个读取/写入请求,则目标 ID 将被否定确认,因为缓冲区已满。
在读取操作期间,读取请求会得到处理,并且从寄存器读取的数据与 CRC 字节(如果启用)一起存储在 Tx 缓冲区中。现在,如果外部 MCU 启动 I2C 读取(目标 ID + R 位),则该 Tx 缓冲区中的数据将通过 I2C 进行发送。由于有两个 Tx 缓冲区,因此可以缓冲来自 2 次 MCF8329A 读取的寄存器数据。在给定该情形时,如果存在第三个读取请求,则控制字将存储在 Rx 缓冲区 1 中,但 MCF8329A 不会对其进行处理,因为 Tx 缓冲区已满。
从 Tx 缓冲区中读取数据后,该数据将不再存储在 Tx 缓冲区中。缓冲区被清除,可以用于下一个要存储的数据。如果读取事务在中间被中断并且 MCU 未读取所有字节,则外部 MCU 可以启动另一个 I2C 读取(仅 I2C 读取,没有任何控制字信息)从第一个数据字节开始读取所有数据字节。