STM32Cubemx——ADC采集+DMA传输

这篇具有很好参考价值的文章主要介绍了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.新建工程

STM32Cubemx——ADC采集+DMA传输
选择相应单片机型号

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

STM32Cubemx——ADC采集+DMA传输
STM32Cubemx——ADC采集+DMA传输

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

STM32Cubemx——ADC采集+DMA传输

4.配置ADC采集

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

STM32Cubemx——ADC采集+DMA传输

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

STM32Cubemx——ADC采集+DMA传输

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

当然分辨率越高,转换所需时间就越长
STM32Cubemx——ADC采集+DMA传输

4.选择触发源

STM32Cubemx——ADC采集+DMA传输
在此我选择了软件触发,也可以使用定时器的PWM信号来触发,可以使采集间隔时间固定,可用来分析信号波形,幅频特性等。

5.生成工程

STM32Cubemx——ADC采集+DMA传输
STM32Cubemx——ADC采集+DMA传输
生成并打开工程。

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文章来源地址https://www.toymoban.com/news/detail-423201.html

到了这里,关于STM32Cubemx——ADC采集+DMA传输的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 CubeMX ADC采集 单通道,多通道,内部温度(轮询,DMA,中断)(HAL库)

    12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部 信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右 对齐方式存储在16位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定

    2024年02月06日
    浏览(85)
  • STM32 TIMER_TRGO触发+ADC采集 + DMA传输 + 中断均方根处理 实现三相电压显示

    STM32 TIMER_TRGO触发+ADC采集 + DMA传输 实现三相电压采集 首先,是实际采集的三相电压值,用excel处理了下: 采集个电压,为什么这么复杂。 开始我也是直接用ADC采集,然后delay,再采集,然后delay,再采集……最后数据处理…… 问题是如果我们用单片机裸跑,每次delay都会卡死

    2024年02月16日
    浏览(41)
  • STM32F407 ADC多通道采样+DMA

    我加入工作室参加的第一个比赛是第五届中国高校智能机器人创意大赛,我参加的赛项是开放部件组轮式自主格斗机器人。经历了没日没夜的调试,无数次欣赏凌晨四点半的夜晚,感受着每天就睡两三个小时伴随着疲惫的开心。在我和队友的共同努力之下,我们的成绩也很优

    2024年02月02日
    浏览(68)
  • ESP32学习笔记09-ADC多通道采集 dma方式传输

    9.1.1特点 高性能。时钟更快,因此采样 速率实现了大幅提升 。 支持 多通道扫描 模式。每个 SAR ADC 的测量规则可见 样式表 。扫描模式可配置为 单通道模式 双通道模式 交替模式。 扫描可由软件或 I2S 总线发起。 支持 DMA,扫描完成即发生中断 9.1.2样式表 通道 分辨率 衰减倍

    2023年04月21日
    浏览(43)
  • STM32F407 ADC+DMA+定时器 定时采样模拟量

    项目中需要对多个通道的电压进行一定频率的AD采样,由于采样过程贯穿整个任务,为了使采样过程尽可能不占用CPU资源,采用定时器触发的多通道ADC扫描采样,且采样数据由DMA传到RAM中的缓存。 这样做有以下几个好处:1、由定时器触发ADC采样,这样采样的频率可控,且定时

    2024年02月14日
    浏览(50)
  • STM32CubeMX系列05——ADC(轮询、中断、DMA)

    ==== 文章汇总(有代码汇总) ==== 正点原子Mini板,主控 STM32F103RCT6. 用到的外设: 串口1(PA9、PA10) 任意几个GPIO口(这里用PA1、PA2、PA3,对应ADC通道1、2、3)。 配置时钟源 配置debug模式(如果需要ST-Link下载及调试可以勾选) 配置时钟树(可以直接在HCLK那里输入72,然后敲回

    2024年02月10日
    浏览(45)
  • STM32CubeMX配置ADC采样(轮询、中断、DMA)

    STM32CubeMX能够极大减小STM32外设配置的工作量,因此作者也借助空闲时间对STM32CubeMX相关配置进行了学习,本文介绍如何利用STM32CubeMX配置ADC采样,记录了作者学习过程中遇到的问题及解决办法,使大家少走弯路,并方便以后复习 先选择所使用的MCU,这里我使用的是STM32F407ZGT系

    2024年02月03日
    浏览(58)
  • STM32 ADC采集 DMA中断处理

    //============================================ //函数名称:ADC1_Mode_Config(void) //功能描述:配置ADC1的工作模式为MDA模式 //输入:无 //输出:无 //============================================ void ADC1_Mode_Config(void) {         DMA_InitTypeDef DMA_InitStructure;         ADC_InitTypeDef ADC_InitStructure;              

    2024年02月14日
    浏览(50)
  • STM32CubeMX配置-ADC多通道配置(DMA) (STM32G070)

    一、写在前面         ADC通道采集数据的两种方式:         1)ADC轮询采集数据直接放到数组中;         2)采用中断方式,ADC采集完成进入中断,中断关闭ADC采集,取数据之后再打开ADC采集。 以下按第一种方式实现: 二、ADC多通道配置 1)配置通道及参数     如果要控

    2024年02月05日
    浏览(53)
  • STM32 ADC转换+DMA传输(详解)

            最近刚入坑,看了半个多月的入门视频并动手了一些简单的实验,但看工程项目的代码总是很费劲,便想以一个有难度的课题来进一步入门嵌入式开发。这个选题充分使用了STM32的各种片上外设,包括定时器、ADC模/数变换、GPIO口和DMA的使用,配合外部资源如LCD屏幕来

    2024年02月03日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包