dma接收双缓存 stm32_STM32 DMA双缓冲模式应用示例

本文介绍了如何在STM32嵌入式应用中使用DMA的双缓冲模式进行大量数据传输和处理,以减轻CPU负担。通过STM32CubeMx配置ADC和DMA,实现ADC对5个通道的循环扫描采样,DMA自动切换存储缓冲区,进行连续传输。文中提供了详细的配置步骤和用户代码示例。
摘要由CSDN通过智能技术生成

我们在MCU的嵌入式应用开发过程中,有时需要做些较大量的数据传输和适时处理,此时使用DMA的双缓冲模式可能是个不错的选择。这样既可以保障数据的连续、流畅传输,又能保障数据的及时处理【包括数据更新】,同时又能减轻CPU的负荷。

常有人想使用STM32 DMA的双缓冲模式,但又觉得实现起来似乎有点困难,也不太容易找到现存的例程。我这里就基于STM32F4芯片及Cube库简单地演示下实现过程。

STM32的DMA硬件双缓冲模式,只支持从外设到内存或从内存到外设两种应用场景,且工作在循环模式。内存到内存是不支持双缓冲模式的,当然它也不支持DMA循环模式。【下图截取于STM32F4的参考手册】

11.png (83.11 KB, 下载次数: 4)

2020-6-9 11:17 上传

关于STM32 DMA双缓冲模式实现原理不复杂,这里就不赘述了。下面进入到示例的实现过程。【注:手机模式下图片可以点击放大查看】

我这里大致要做的事情就是,ADC模块对5个模拟通道进行循环扫描采样转换,ADC结果由DMA搬到相应存储缓冲区。每一轮传输完成后,自动切换传输线路并使用另一个存储区,继续新一轮传输。两条传输线路就这样轮流执行,不过使用的DMA传输流或通道还是同一个。本例中的DMA传输流程如下图示意。至于数据搬到各存储区后怎么办,视应用而定,在此不表。

22.png (44.2 KB, 下载次数: 2)

2020-6-9 11:17 上传

现在开始借助于STM32CubeMx图形化配置工具做基本的配置并生成初始化文件。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值