你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32F407和Cubemx的ADC采集+DMA传输实现简易示波器经验分享

[复制链接]
攻城狮Melo 发布时间:2024-6-15 12:46
示波器,厚礼协好贵,但是有时候还是很想看波形怎么办?我们可以使用STM32的ADC配合DMA连续采集波形数据之后利用串口示波器来显示波形。

本期教大伙如何使用STM32 关于ADC配置以及DMA配置。

微信图片_20240615124558.png

1. 什么是DMA?
Direct Memory Access(DMA): 直接内存操作!是一种允许外设之间或外设和内存之间直接进行数据传输的技术,相当于直接把数据搬到存储区,无需CPU的干预。这提高了数据传输的效率,同时释放了CPU用于其他任务。

2. STM32中的DMA特性:
多通道支持: STM32的DMA控制器通常支持多个通道,每个通道可以连接到不同的外设或内存区域。
内存到内存传输: DMA可以在两个内存区域之间传输数据,而不涉及外设。
内存到外设传输: DMA可以从内存传输数据到外设,例如将数据发送到USART或SPI外设。
外设到内存传输: DMA可以从外设接收数据并将其存储到内存中,例如从ADC获取数据。
循环模式: DMA支持循环模式,即在传输完成后重新开始,无需重新配置。
传输方向和数据宽度: DMA支持不同的传输方向(内存到外设、外设到内存等)和数据宽度(8位、16位、32位)。

3. DMA的工作原理:
配置: 在DMA传输之前,需要配置DMA控制寄存器,包括源地址、目的地址、数据宽度、传输方向等。
触发: 一旦配置完成,DMA可以由硬件或软件触发开始传输。(本期我们选择软件触发)
中断: DMA传输完成时,可以触发中断以通知CPU。
循环传输: DMA可以配置为在传输完成后自动重新开始,形成循环传输。

4. 应用场景:
DMA在需要大量数据传输的应用中特别有用,例如音频处理、图像处理、通信协议等。


内容实现
时钟配置

微信图片_20240615124555.png

微信图片_20240615124552.png

首先在CubeMX中选择我们的芯片,配置好时钟树以及时钟。

引脚配置以及DMA配置

微信图片_20240615124549.png

将PA1(或者其他IO)配置为ADC_IN以及模拟模式。

微信图片_20240615124545.png

在ADC配置中,开启DMA传输,模式为循环模式!

微信图片_20240615124519.png

开启ADC连续转换以及DMA请求~
防止ADC只采样一次以及DMA只工作一次。

工程内容
接下来就是创建工程了。

微信图片_20240615124515.png

定义一个全局变量来存放DMA读取的内容

  1. HAL_ADC_Start_DMA(&hadc1,(uint32_t *)ADC_Value,100);
复制代码

开启DMA,传入相关参数和存储区。
  1. for(int i = 0;i<100;i++)
  2.     {
  3.       printf("A:%d\r\n",ADC_Value);
  4.     }
复制代码

在While中打印存储区的内容,之后利用我们的串口示波器查看波形。

微信图片_20240615124512.png

转载自:电路小白

如有侵权请联系删除



收藏 评论0 发布时间:2024-6-15 12:46

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版