> 技术文档 > (STM32)ADC驱动配置_stm32 adc配置

(STM32)ADC驱动配置_stm32 adc配置


1.ADC驱动(STM32)

ADC模块中,**常规模式(Regular Mode)和注入模式(Injected Mode)**是两种不同的ADC工作模式

常规模式:用于普通的ADC转换,是默认的ADC工作模式。

注入模式:用于对特定通道进行高优先级的ADC采样。

特性

常规模式(Regular Mode)

注入模式(Injected Mode)

优先级

采样通道

支持多通道,按顺序扫描

支持多通道,但专用优先处理

DMA的兼容性

支持,适合连续采样传输

通常不使用 DMA

场景

采集温度、湿度等非关键的环境传感器数据

采集电流、电压等高优先级的实时数据

1.1 常规模式

  1. 转换触发方式:软件启动或者外部硬件触发(比如使用函数开启读取数据这种)

  2. 数据转换完存储在ADC的数据寄存器(ADC_DR)中(这个知道就行,平常也用不到)

  3. 支持、适合使用DMA进行连续数据传输

  4. 可配置扫描模式,对多个通道依次采样

  5. 转换通道数可以通过 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