当前位置:网站首页>STM32通过DMA进行ADC采集(HAL库)
STM32通过DMA进行ADC采集(HAL库)
2022-06-22 15:24:00 【冬瓜~】

一. 前言

ADC是指模数转化,即将模拟信号转化为数字信号。 世界的信号本质都是模拟信号,如速度、温度、声音,在本质上都是模拟的。但是微控制器和微处理器上运行的电子设备不能直接读取或者解释这些模拟值,因为它们只在0和1上运行。所以我们需要将这些模拟值转换成0和1,以便微控制器和微处理器能够理解它们。这就是我们所说的模拟信号转化为数字信号。与ADC相对应的是DAC,即将数字信号转化为模拟信号。
二. CubeMX配置
开发环境:Keil 、 CubeMX
软件版本:5.31 、6.2.1
使用芯片:STM32F103C8T6
开发语言:C
CubeMX的配置非常简单:Analog->ADCx->INx 。

此处选择多通道采集,选择ADC1 ,勾选IN1 、IN2 。配置如下:
- 由于是多通道采集,需开启
Scan Conversion Mode 扫描模式。 - 需要多次读取,因此开启
Continuous Conversion Mode 连续转换模式。 - 选配
Rank,给IN1、IN2选择合适的采样通道和采样周期。

添加DMA通道 ,将模式改为Circular 循环模式 ,这样每次DMA传输成功后会主动开启下一次传输。

三. ADC读取
启动函数:
HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length)
将ADC用于遥杆的读取: 遥杆的本质是一个电位器,通过ADC采集变化的电压可以得到遥杆X、Y轴的遥杆值。按照上面的配置,在生成的Keil工程中加入如下代码可以便可以得到采集的遥杆值。
uint16_t Joystick_ADC[2];
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&Joystick_ADC,2);

注意: 如果开启ADC的DMA接收后没办法继续运行主函数可能是因为设置的采样周期太短,频繁触发DMA接受中断导致的。可以在CubeMX中把Rank中通道的采样周期Samplink Time 设长一些,亲测有效。
边栏推荐
- Basic knowledge of audio and video | analysis of ANS noise suppression principle
- 长安链使用技巧总结
- 【C语言】深度剖析指针和数组的关系
- Spark Streaming-Receiver启动和数据接收
- CUMT study diary - quick notes of digital image processing examination
- JSP学习之开发模式
- NiO file and folder operation examples
- SAP ABAP data dictionary tutorial se11: tables, locked objects, views, and structures-03
- 【心理学】情感心理学-当代思想和传统思想的碰撞(本篇文章将不定期持续更新)
- 视频会议时听不到声音该如何处理?
猜你喜欢

6.gui (graphics, filling)

面对默认导入失败的情况

SAP web service cannot log in to SOA management page with soamanager

过气剧本杀,被露营“复活”

Adding an unknown type of MCU to jflash

Safari兼容性问题总结

CUMT study diary - quick notes of digital image processing examination
![[wechat applet custom bottom tabbar]](/img/04/2ea4ab3fd8571499190a9b3c9990b2.png)
[wechat applet custom bottom tabbar]

2022年中国重卡智能化升级专题研究

SAP ABAP table control and example-07
随机推荐
JS获取数据类型方法总结
IDEA安装总结
JS method for judging data type of interview questions
find命令使用
How to use IDM to accelerate Baidu cloud
如何为政企移动办公加上一道“安全锁”?
3. abstract class (shape)
SAP ABAP data types, operators and editors-02
[C language] deeply analyze the relationship between pointer and array
购买指南丨如何购买一台高质量会议平板,这几个方面一定要对比
用递归法求Fibonacci数列第n项的值
variable
【游标的嵌套】mysql存储过程游标的嵌套
【小程序项目开发-- 京东商城】uni-app开发之分包配置
Unable to connect after win10 WiFi is disconnected
NiO file and folder operation examples
代码扫描工具扫出的 Arrays.asList 使用BUG
Iterators and generators
长安链使用技巧总结
jsp学习之(三)--------- jsp隐式对象