学习笔记6-ADC电压采集2(CubeMX)

目录

  • 前言
  • 一、单通道任意时刻采集信号(不定时)
    • 1、经典设置RCC
    • 2、选择ADC通道+持续转换使能
    • 3、开启中断
    • 4、开启USART
  • 二、DMA+单通道ADC
    • 5、添加DMA通道并选择对应的ADC通道
  • 三、DMA+多通道ADC
    • 1、打开多通道并配置ADC
    • 2、配置ADC
    • 3、添加DMA
  • 四、多通道ADC(非DMA和中断方式)
  • 五、定时器触发转换(1khz)+DMA传输
    • 1.关闭ADC持续转换并选择定时器触发模式
    • 2.打开定时器时钟并配置PWM模式
    • 3.配置定时器频率
    • 4.添加DMA


前言

学习笔记6-ADC电压采集2(CubeMX)_第1张图片
常见的采集方式有两种,阻塞式非阻塞式的AD转换,各个AD转换通道可以实现单次,连续、扫描和间断四种模式。

1.阻塞式:轮询的方式读取

2.非阻塞式:中断方式和DMA方式

一、单通道任意时刻采集信号(不定时)

1、经典设置RCC

学习笔记6-ADC电压采集2(CubeMX)_第2张图片
学习笔记6-ADC电压采集2(CubeMX)_第3张图片

2、选择ADC通道+持续转换使能

学习笔记6-ADC电压采集2(CubeMX)_第4张图片

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、开启中断

学习笔记6-ADC电压采集2(CubeMX)_第5张图片

4、开启USART

学习笔记6-ADC电压采集2(CubeMX)_第6张图片

轮询采集不需要开启中断

二、DMA+单通道ADC

1-4同上学习笔记6-ADC电压采集2(CubeMX)_第7张图片

5、添加DMA通道并选择对应的ADC通道

学习笔记6-ADC电压采集2(CubeMX)_第8张图片

三、DMA+多通道ADC

依旧基础设置…

1、打开多通道并配置ADC

学习笔记6-ADC电压采集2(CubeMX)_第9张图片

2、配置ADC

学习笔记6-ADC电压采集2(CubeMX)_第10张图片

3、添加DMA

学习笔记6-ADC电压采集2(CubeMX)_第11张图片

四、多通道ADC(非DMA和中断方式)

老规矩配置时钟等
学习笔记6-ADC电压采集2(CubeMX)_第12张图片
学习笔记6-ADC电压采集2(CubeMX)_第13张图片
经过其他博主的测试,要想用非DMA和中断模式只有这样配置可以正确进行多通道转换:扫描模式+单次转换模式+间断转换模式(每个间断组一个通道)。

五、定时器触发转换(1khz)+DMA传输

基础操作 老规矩~

1.关闭ADC持续转换并选择定时器触发模式

学习笔记6-ADC电压采集2(CubeMX)_第14张图片

2.打开定时器时钟并配置PWM模式

学习笔记6-ADC电压采集2(CubeMX)_第15张图片

3.配置定时器频率

学习笔记6-ADC电压采集2(CubeMX)_第16张图片

4.添加DMA

学习笔记6-ADC电压采集2(CubeMX)_第17张图片

注意事项:1、Debug记得勾选sw!
		 2、要打开多个通道(>1)才能在扫描模式这一选项中使能!

参考自:1、2、3、4、5

如有错误,还请多多包涵。


你可能感兴趣的:(stm32,单片机,学习)