目录
前言
常见的采集方式有两种,阻塞式
和非阻塞式
的AD转换,各个AD转换通道可以实现单次,连续、扫描和间断四种模式。
1.阻塞式:轮询的方式读取
2.非阻塞式:中断方式和DMA方式
一、单通道任意时刻采集信号(不定时)
1、经典设置RCC
2、选择ADC通道+持续转换使能
Data Alignment : 对齐模式,可选左对齐和右对齐
Scan Conversion Mode:扫描转换模式是否开启
Continuous Conversion Mode:连续转换模式是否开启
Discontinuous Conversion Mode:不连续转换模式 是否开启
Enable Regular Conversions:是否使能转换
Number Of Conversion:转换的通道数
External Trigger Conversion Source:触发开始转换事件选择:
可选由软件或定时器触发采集
1、如果开启间断模式,每次需要先使用HAL_ADC_Start()或HAL_ADC_Start_IT(),HAL_ADC_Start_DMA()启动转换,需要使用HAL_ADC_PollForConversion()等待转换完成,HAL_ADC_GetState()获取ADC转换状态(若返回值为HAL_OK说明转换完成),转换完成后使用HAL_ADC_GetValue()读取ADC原始值,读取完成后,使用HAL_ADC_Stop()停止转换,如需再次获取ADC数据,需重复执行上述步骤。
2、如果开启连续模式,只需要使用一次HAL_ADC_Start(),开启转换,ADC会马不停蹄的电压转换成数字量,用户只需要调用HAL_ADC_GetValue(),读取ADC原始值。
3、间断模式的缺点:麻烦; 优点:节省系统资源,安全性更高。
连续模式会不断抛出DMA,IT中断,导致系统安全性降低。
连续模式的优缺点和间断模式正好相反。
3、开启中断
4、开启USART
轮询采集不需要开启中断
二、DMA+单通道ADC
1-4同上
5、添加DMA通道并选择对应的ADC通道
三、DMA+多通道ADC
依旧基础设置…
1、打开多通道并配置ADC
2、配置ADC
3、添加DMA
四、多通道ADC(非DMA和中断方式)
老规矩配置时钟等
经过其他博主的测试,要想用非DMA和中断模式只有这样配置可以正确进行多通道转换:扫描模式+单次转换模式+间断转换模式(每个间断组一个通道)。
五、定时器触发转换(1khz)+DMA传输
基础操作 老规矩~
1.关闭ADC持续转换并选择定时器触发模式
2.打开定时器时钟并配置PWM模式
3.配置定时器频率
4.添加DMA
注意事项:1、Debug记得勾选sw!
2、要打开多个通道(>1)才能在扫描模式这一选项中使能!
如有错误,还请多多包涵。