[技术问答] SPI+PDMA,SPI还没开始传输又重新配置PDMA,传输的数据错误

[复制链接]
822|2
 楼主| jcky001 发表于 2022-10-12 10:53 | 显示全部楼层 |阅读模式
DM, DMA, pd, pi, spi
SPI从机通过PDMA收发数据,启动SPI和PDMA后,主机还没开始传输从机又重新配置PDMA,主机收到的数据错误,为什么?
cr315 发表于 2022-10-12 13:11 | 显示全部楼层
以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和移位寄存器里的数据不会消失。

小辣鸡0930 发表于 2023-11-30 14:13 | 显示全部楼层
楼主,你这个PDMA+SPI是怎么做的?我现在dev下面没有DMA这个设备
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1650

主题

5706

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部