ADC的DMA采集

功能介绍

DMA (直接内存访问) 是 STM32 的数据搬运引擎,可在 CPU 不参与的情况下自动将 ADC 转换结果从数据寄存器搬运到内存数组。硬件实现:每次 ADC 转换完成后自动触发 DMA 请求,DMA 控制器根据配置的源地址、目标地址和传输长度自动完成数据搬运。

ADC+DMA 主要用于:多通道同步采集、高速连续采样 (示波器)、电机相电流检测、多传感器数据融合等场景。相比中断方式,DMA 方式 CPU 占用率极低,可释放 CPU 资源用于数据处理和控制算法。

DMA 优势

特点

配置步骤

uint16_t ADC_Data[4] = {0};

// 2. ADC 校准
HAL_ADCEx_Calibration_Start(&hadc2, 
    ADC_SINGLE_ENDED);

// 3. 启动 ADC DMA
HAL_ADC_Start_DMA(&hadc2, 

多通道扫描

配置:使能扫描模式,配置多个通道
数据存储:按通道顺序存入数组
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
    if (hadc->Instance == ADC2) {
        // 数据已更新到 ADC_Data 数组
        // 处理采集数据
    }