SPI+PDMA,SPI还没开始传输又重新配置PDMA,传输的数据错误,为什么?

chrishu |浏览203次
收藏|2022/09/07 13:32

SPI从机通过PDMA收发数据,启动SPI和PDMA后,主机还没开始传输从机又重新配置PDMA,主机收到的数据错误,为什么?

满意回答

2022/09/07 16:29

以M480为例子,数据宽度=8bit时,SPI有8级TX FIFO和1个移位寄存器。第一次启动PDMA后,PDMA会先搬运9个字节的数据给SPI,分别放在TX FIFO和移位寄存器里。然后重新配置PDMA,此时PDMA虽然启动,但是SPI TX FIFO是满的,PDMA不会搬运数据到SPI TX FIFO。直到收到主机CLK后,数据依次发送到总线上,TX FIFO有空了,PDMA才会继续将数据搬运到TX FIFO里。

所以再重新配置PDMA的同时需要清除SPI的TX FIFO重启SPI(清除移位寄存器),否则已经在FIFO和移位寄存器里的数据不会消失。


 

nuvoton2022

其他回答(0)
0人关注该问题
+1
 加载中...