STM32的DMA + SPI连续传输数据解析

最近在用 STM32 SPI 和其他设备通信时,同样出现连续发送几个字节,字节间隔过大的情况,根据前面的博文“STM32 UART 异步通信设置及解析”也采用 DMA 的方式进行 SPI 数据传输,在波特率较高的情况下,大大提升传输效率,这里记录一下测试过程。

1. STM32 SPI 设置

根据 STM32 应用手册上的描述,Motorola 模式下,主机连续发送 SPI 数据,字节间的间隔应为 2 个 SPI 时钟周期(关于 motorlora 模式和 TI 模式的区别见“SPI 通信协议介绍及调试方法”)。

STM32的DMA + SPI连续传输数据解析
图 1 SPI 主机连续传输数据

但是在实际应用过程中,SPI 采用 DMA 和不采用 DMA 的差别还是很大的。

STM32的DMA + SPI连续传输数据解析
图 2 421.875k 波特率下 SPI 传输数据的对比
STM32的DMA + SPI连续传输数据解析
图 3 13.5M 波特率下 SPI 传输数据的对比

根据上图可以看出,不采用 DMA 时,SPI 主机连续传输数据的字节间隔约为 4~6us;采用 DMA 时,字节间隔就变为了 2 个 SPI 时钟周期。

扫码关注尚为网微信公众号

尚为网微信公众号
每天学习电路设计嵌入式系统的专业知识,关注一波,没准就用上了。

原创文章,作者:sunev,如若转载,请注明出处:https://www.sunev.cn/embedded/691.html

(7)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年7月30日 15:19
下一篇 2020年9月10日 20:58

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注