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

2019-12-15 12:15发布

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

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

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

看到SPI 结构图, 只有一个移位寄存器? 收发共用? 那如何做到收发同时呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
XA144F
1楼-- · 2019-12-17 05:05
go2deathward 发表于 2018-11-6 22:51
他的spi是主机。硬设置成从机,时钟都没有如何传输呢

SPI的发送和接收都是同时进行的,发送多少就同时接收多少。所以DMA的设置的传输数量就是发送和接收的数量,所谓不定长就是你设置数量的问题了。
go2deathward
2楼-- · 2019-12-17 07:41
XA144F 发表于 2018-11-7 09:23
SPI的发送和接收都是同时进行的,发送多少就同时接收多少。所以DMA的设置的传输数量就是发送和接收的数量 ...

所以说,具体接收多长,要在通信协议里定好才行
li3p
3楼-- · 2019-12-17 11:45
go2deathward 发表于 2018-11-7 16:42
所以说,具体接收多长,要在通信协议里定好才行

这个是关键。协议层面要知道如何终止,UART 之所以可以就是字节有终止位。

一周热门 更多>