STM32Cubemx——ADC采集+DMA传输
文章目录
- 一、准备工具
- 二、前置知识
- 1.ADC简介
- 2.DMA简介
- 2.STM32Cubemx配置
- 1.新建工程
- 2.时钟源选择及时钟树配置
- 3.时基选择调试接口选择
- 4.配置ADC采集
- 1.选择要配置为ADC采集的引脚
- 2.开启DMA传输,循环模式
- 3.选择分辨率,使能ADC持续转换,DMA持续请求
- 4.选择触发源
- 5.生成工程
- 3.Keil编写代码
- 4.烧录观察
- 工程下载地址
一、准备工具
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,代表3300mVHAL_Delay(10);}/* USER CODE END 3 */
}
主循环内对采集数据求平均,并计算出实际电压。
4.烧录观察
烧录代码后,通过调试观察V变量,可以测量0-3.3V电压(单位mV),如果需要测量更大范围,需要加外围电路,将电压规整到0-3.3V内。
工程下载地址
链接:https://pan.baidu.com/s/1IU4tsS8mzrc5AzWH7XbfhA
提取码:csa1
STM32Cubemx——ADC采集+DMA传输相关推荐
- STM32CubeMX关于ADC采集DMA传输
什么是ADC,ADC也叫做模数转换,既将外面的模拟信号转换为数字信号. 模拟信号:连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随时间作连续变化,或在一段连续的时间间隔内,其代表信息的特征量 ...
- STM32F767多通道ADC采集+DMA传输
文章目录 一.ADC简介 1.ADC采样频率 2.ADC转换时间 3.ADC寄存器 4.ADC引脚与外部通道对应关系 二.DMA简介 三.代码配置 1.ADC.DMA初始化配置 2.adc.h文件的配 ...
- [STM32F4]STM32F407 ADC采集+DMA传输
前言 有的项目中需要对多个通道的电压进行一定频率的AD采样. 第一种:是使用定时器去读取,通过检查转换完成标志位来读取,但这样就会加重整个系统的负担,占用CPU资源. 第二种:是采用定时 ...
- STM32h743开启cache后ADC采集DMA数据不更新问题
STM32h743开启cache后ADC采集DMA数据不更新问题 解决办法 解决办法 1.DMA数据缓存地址进行32字节对齐,即地址是0x20的整数倍: __attribute__((at(0x380 ...
- 【STM32G431RBT6】蓝桥杯嵌入式 ADC采样DMA传输配置
一.介绍 蓝桥杯嵌入式开发板使用的是STM32G431RBT6,这个G系列的mcu使用STM32cubemax配置的时候和普通的F系列不太一样. 二.原理图 同时开发板预留了两个adc采样通道,分别是 ...
- STM32F030 使用CUBEMX配置ADC多通道采集 DMA传输
STM32CubeMX的配置 以下为测试代码 //usart重定向,注意使用前需要包含头文件<stdio.h> int fputc(int ch, FILE *f) {HAL_UART_T ...
- STM32 HAL库 CUBEMX配置 ADC采集
文章目录 STM32 HAL库 CUBEMX配置 ADC采集 软硬件型号 1.单通道不定时任意时刻采集信号 CUBEMX配置 代码添加 2.单通道ADC采集+DMA传输 CUBEMX添加配置 代码添加 ...
- axi dma 寄存器配置_STM32 ADC多通道转换的DMA传输示例
这里以STM32F334 Nucleo板作为硬件平台,使用ARM keil MDK集成开发环境. 对3个ADC通道进行连续.扫描转换,转换结果通过DMA传输到内存,再作为TIM2的3个比较寄存器的值, ...
- 【STM32】STM32CUBEMX + ADC(单通道,双通道DMA)
STM32CUBEMX + ADC(单通道,双通道DMA) 案例应用 :使用ADC采集电压(单通道.单通道+DMA.双通道+DMA),并利用串口打印采集转换后的电压值 1.工具 IAR STM32CU ...
最新文章
- 创建Django项目和模型(创建工程、子应用、设置pycharm环境、使用Django进行数据库开发的步骤)
- golang的WaitGroup
- jpa hibernate mysql_008Spring JPA Hibernate MySQL
- html文本框整数范围,验证HTML表单文本框中的数值范围。 PHP或Javascript
- Nodejs安装及使用
- shell的交互式和非交互式登录
- mysql会对同时读取加锁吗_程序员经典面试题,MySQL并发读写的时候,都是需要加锁的么?...
- 防止事件导致的oncreate的多次调用
- ubuntu服务器python3.6报错ModuleNotFoundError: No module named '_bz2'
- 原型和原型链 及 instanceof函数
- 谨防病毒利用气象软件锁定浏览器主页
- 千元喜提“随身影院”荣耀8x Max,告诉你移动刷剧是种什么体验?
- MPC(模型预测控制)控制小车沿轨迹移动——C++实现
- MySQL 的 max_allowed_packet
- 区块链上的中国?2018见分晓
- 【笨木头Cocos2dx 038】战争迷雾效果 第01章_要探索,不要地图全开!
- 反问疑问_反问、疑问还是设问?
- 猫哥教你写爬虫 033--爬虫初体验-BeautifulSoup-作业
- 谭浩强c语言第五版视频,张子枫平胸
- 如何使用Flashfxp上传下载文件