ZHCUAN6E October 2022 – May 2025 MSPM0L1105 , MSPM0L1106 , MSPM0L1116 , MSPM0L1117 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1
接收数据寄存器 I2Cx.MRXDATA(用于控制器模式)和 I2Cx.SRXDATA(用于目标模式)是用户可访问的,包含要从 RX FIFO 栈读取的当前字符。最后接收到的来自接收移位寄存器的字符将推送到 FIFO 堆栈的末尾。
发送数据寄存器 I2Cx.MTXDATA(用于控制器模式)和 I2Cx.STXDATA(用于目标模式)是用户可访问的,并保存最后写入 TX FIFO 的数据。TX FIFO 包含等待移入发送移位寄存器并在 SDA 上发送的数据。
FIFO 可用于控制器和目标器件的接收和发送。每个 FIFO 条目的宽度为 8 位,并且应以字节模式访问。每个 FIFO 都有一个可编程的阈值点(在控制器模式下,通过 I2Cx.MFIFOCTL 寄存器中的 RXTRIG 和 TXTRIG 位配置;在目标模式下,通过 I2Cx.SFIFOCTL 寄存器中的 RXTRIG 和 TXTRIG 位配置),可以指示何时应生成 FIFO 服务中断。此外,可以在控制器和目标器件的中断屏蔽 (MASK) 寄存器中启用 FIFO 接收满中断和发送空中断。
通过将 I2Cx.FIFOCTL 寄存器中的 TXFLUSH 或 RXFLUSH 位设置为 1,可以清除 FIFO 的内容。当 I2C 复位时,也需要清除 FIFO 的内容。FIFO 清除只能在 I2C 处于 IDLE 模式时执行。触发清除之前,应禁用 FIFO 中断,并且清除完成后需要检查中断标志。