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
发送FIFO
TX FIFO 是一个 16 位宽、4 位置深的先入先出存储器缓冲区。CPU 通过写入 SPI 数据寄存器 TXDATA.DATA 将数据写入 FIFO,数据存储在 FIFO 中,直到被传输逻辑读出。
当配置为控制器或外设时,并行数据在串行转换之前写入 TX FIFO,并分别通过 PICO 或 POCI 引脚传输到连接的外设或控制器。
在外设模式下,每次控制器启动事务时,SPI 都会发送数据。如果 TX FIFO 为空且控制器启动传输,则外设发送写入发送 FIFO 的最新值。用户或软件负责根据需要向 FIFO 提供有效数据。SPI 可配置为在 FIFO 为空时生成中断或 DMA 请求。发送 FIFO 有一个 TXFIFO_UNF 中断用于指示 FIFO 下溢情况。
接收FIFO
RX FIFO 是一个 16 位宽、4 位置深的先入先出存储器缓冲区。从串行接口接收到的数据在由 CPU 或 DMA 读出之前一直存储在缓冲区中,CPU 或 DMA 通过读取 SPIx.RXDATA 寄存器来访问读取 FIFO。
当配置为控制器或外设时,通过 POCI 或 PICO 引脚接收串行数据。由于每次访问都会更新 FIFO 的访问指针,因此需要通过单次传输来访问数据。
借助位于 STAT 寄存器(TFE、TNF、RFE、RNF)中的 FIFO 填充电平触发信号,FIFO 缓冲区允许应用在一个缓冲区中连续流式传输串行数据,同时应用移动或处理来自另一个缓冲区的数据。如果 FIFO 已满并继续向 FIFO 写入新数据但不读取数据,则会产生 RXFIFO 溢出事件。接收 FIFO 有一个 RXFULL 中断用于指示 FIFO 已满情况。