STM32 SPI如何采用DMA收发不定长数据?像串口DMA一样不占用CPU

2019-12-15 12:15发布

本帖最后由 wowangru 于 2018-11-6 15:12 编辑

用不用CS线有多大区别? 我想像串口一样任意收发不定长数据,且不占CPU, 可以不区分主从机。仅仅大数据量通信使用

另外请问SPI采用DMA接收时如何检测帧结束空闲? 帧长度可能不定!  即使帧长度一定,采用定长DMA完成中断,会不会因掉了一个SPI数据后,以后的帧所有数据错位?

看到SPI 结构图, 只有一个移位寄存器? 收发共用? 那如何做到收发同时呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
go2deathward
2019-12-16 00:42
第二个问题,总线空闲状态需要自己判断吧?貌似spi中,没有这个空闲的判定
你做主机的时候,总线空闲是你自己可以知道的
做从机的时候,我觉得由CS信号的电平去判断吧

比如,你是从机,接收时用DMA,你将DMA的长度设置的尽可能大(大于可能的最长的帧),当你知道CS拉高的时候,说明传输完成,你可以获知DMA目前接收的长度,把收到的数据从DMA区里取出,再重新初始化DMA起点,这样不就可以了吗

一周热门 更多>