(STM32)ADC驱动配置_stm32 adc配置
1.ADC驱动(STM32)
ADC模块中,**常规模式(Regular Mode)和注入模式(Injected Mode)**是两种不同的ADC工作模式
常规模式:用于普通的ADC转换,是默认的ADC工作模式。
注入模式:用于对特定通道进行高优先级的ADC采样。
特性
常规模式(Regular Mode)
注入模式(Injected Mode)
优先级
低
高
采样通道
支持多通道,按顺序扫描
支持多通道,但专用优先处理
DMA的兼容性
支持,适合连续采样传输
通常不使用 DMA
场景
采集温度、湿度等非关键的环境传感器数据
采集电流、电压等高优先级的实时数据
1.1 常规模式
-
转换触发方式:软件启动或者外部硬件触发(比如使用函数开启读取数据这种)
-
数据转换完存储在ADC的数据寄存器(ADC_DR)中(这个知道就行,平常也用不到)
-
支持、适合使用DMA进行连续数据传输
-
可配置扫描模式,对多个通道依次采样
-
转换通道数可以通过
NbrOfConversion
配置
1.1.1 初始化代码
下面的代码按照:配置ADC参数、初始化ADC、启动校准、配置常规模式的参数、写入常规通道顺序写的
int32_t stm32_adc_init(void){ // 定义ADC配置结构体(常规模式) ADC_ChannelConfTypeDef sConfig = {0}; // 初始化ADC3的实例 hadc3.Instance = ADC3; // 配置ADC的初始化参数 hadc3.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV4; // 异步时钟分频因子设为4 hadc3.Init.Resolution = ADC_RESOLUTION_12B; // 分辨率为12位 hadc3.Init.DataAlign = ADC3_DATAALIGN_RIGHT; // 数据右对齐 hadc3.Init.ScanConvMode = ADC_SCAN_E