以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和移位寄存器里的数据不会消失。
|