STM32Cubemx——ADC采集+DMA传输

一、准备工具

STM32F407VE核心板
STM32Cubemx 版本 6.0.1
Keil 版本 5.31
杜邦线
ST-Link

二、前置知识

1.ADC简介

12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道,可测量来自 16 个外部源、两个内部源和 VBAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位数据寄存器中。
ADC采集通道分为两组,规则转换和注入转换,每个组包含一个转换序列, 该序列可按任意顺序在任意通道上完成,可理解为注入转换的优先级比规则转换高。本节只使用一个ADC通道,使用规则通道。

2.DMA简介

直接存储器访问 (DMA) 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源可供其它操作使用。DMA 控制器基于复杂的总线矩阵架构,将功能强大的双 AHB 主总线架构与独立的 FIFO 结合在一起,优化了系统带宽。两个DMA 控制器总共有 16 个数据流(每个控制器 8 个),每一个 DMA 控制器都用于管理一个或多个外设的存储器访问请求。每个数据流总共可以有多达 8 个通道(或称请求)。每个通道都有一个仲裁器,用于处理 DMA 请求间的优先级。

2.STM32Cubemx配置

1.新建工程

在这里插入图片描述
选择相应单片机型号

2.时钟源选择及时钟树配置

在这里插入图片描述
在这里插入图片描述

3.时基选择调试接口选择

在这里插入图片描述

4.配置ADC采集

1.选择要配置为ADC采集的引脚

在这里插入图片描述

2.开启DMA传输,循环模式

在这里插入图片描述

3.选择分辨率,使能ADC持续转换,DMA持续请求

当然分辨率越高,转换所需时间就越长
在这里插入图片描述

4.选择触发源

在这里插入图片描述
在此我选择了软件触发,也可以使用定时器的PWM信号来触发,可以使采集间隔时间固定,可用来分析信号波形,幅频特性等。

5.生成工程

在这里插入图片描述
在这里插入图片描述
生成并打开工程。

3.Keil编写代码

/* USER CODE BEGIN PV */
uint16_t ADC_Value[100]={0};  
uint32_t Value=0;   //存储平均值
float V=0;      //存储电压值
/* USER CODE END PV */

为提高准确度,定义数组,取平均值做为测量值

  /* USER CODE BEGIN 2 */
   HAL_ADC_Start_DMA(&hadc1,(uint32_t *)ADC_Value,100);
  /* USER CODE END 2 */

在初始化后开启DMA传输,ADC开始转换

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
         
          for(int i=0;i<100;i++)
          Value+=ADC_Value[i];//求和
          Value/=100;  //取平均值
          V=Value*3300/4096;  //ADC最大值为4096,代表3300mV
          HAL_Delay(10);
  }
  /* USER CODE END 3 */
}

主循环内对采集数据求平均,并计算出实际电压。

4.烧录观察

烧录代码后,通过调试观察V变量,可以测量0-3.3V电压(单位mV),如果需要测量更大范围,需要加外围电路,将电压规整到0-3.3V内。

工程下载地址

链接:https://pan.baidu.com/s/1IU4tsS8mzrc5AzWH7XbfhA
提取码:csa1

  • 21
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平陆成江,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值