请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: MSPM0G3507
我有一个 SPI 外设使用 SPI0 和两个 DMA 通道接收数据、一个用于 Tx、另一个用于 Rx。 SPI 配置为 4 线模式、因此硬件控制 CS、并且我也在 CS 空闲时启用了清除移位计数器。 所有操作都正常、直到遇到 SPI RX_OVERFLOW、此时即使总线上有新数据、SPI 也不会再接收到任何数据。 即使在切换 CS 后也是如此。 SPI 外设指示 RX FIFO 已满、但 DMA 没有传输任何内容? 在 SPI0 ISR 中、我将使用 DL_SPI_clearInterruptStatus 清除 RX_overflow。 在这里、您可以看到 DMA 处于空闲状态、SPI 指示 Rx FIFO 已满。

在这种情况下、我是否需要采取其他步骤来恢复? 我期望在 RX_overflow 指示后 SPI 和 DMA 能够继续收到、但事实并非如此。 RX_OVERFLOW 中断在接收到的每个新字节时继续触发、然后在 CS 处于非活动状态时停止、然后重新启动、如以下捕获中所示。 蓝色外设溢出布线在进入 RX_OVERFLOW ISR 时设置为高电平、在退出时设置为低电平。
