打印
[技术问答]

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

[复制链接]
595|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这个设备

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1501

主题

4497

帖子

6

粉丝