STM32 ADC多通道DMA采集深度解析|全自动高速采集、零占用CPU
2026/6/18 12:22:53 网站建设 项目流程

一、前言
前文讲解了ADC单通道轮询采集,适合低速、单电位器、单传感器场景。
工控项目中,往往需要同时采集:电位器电压、电池电压、热敏电压、模拟传感器多路信号:

  1. 轮询多通道:切换通道耗时、CPU一直读写ADC,阻塞业务
  2. 中断多通道:频繁进中断,打断定时器、485通信任务
  3. ADC扫描+DMA搬运:外设全自动采集,DMA自动把数据搬运到数组,CPU无需干预,真正解放内核
    本文基于STM32F103C8T6 标准库开发,模块化分层代码,适配任意多路模拟采集项目。

二、ADC+DMA底层核心原理(必懂,区别单通道)
2.1 核心工作流程(全自动闭环)
ADC扫描模式 → 依次遍历配置通道 → 转换完成触发DMA请求 → DMA自动搬运数据至内存数组 → 循环往复,全程CPU零参与
2.2 关键模式释义
1、ADC工作模式

  • 扫描模式:自动依次采集IN0/IN1/IN2/IN3多路通道,无需软件切换通道
  • 连续转换模式:通道采集完毕,立刻开启下一轮采集,永不停止
    2、DMA作用
    DMA:直接存储器访问,独立硬件搬运通道,无需CPU读写ADC_DR寄存器,数据硬件自动搬家。
    2.3 多通道排布规则(重中之重)
    ADC通道采集顺序 = CubeMX/代码配置的通道顺序,数组下标一一对应:
    adc_buf[0] = 第一个配置通道电压值
    adc_buf[1] = 第二个配置通道电压值
    2.4 采集公式(通用不变)
    实际电压 = ADC原始值 × 3.3f / 4095.0f

三、实战项目介绍
3.1 项目功能
四路ADC全自动并行采集,DMA存储数据,CPU只做数据滤波+电压换算,同时运行485通信、LED任务,互不干扰:

  1. PA0 IN0:电位器采集
  2. PA1 IN1:电源分压电池采集
  3. PA2 IN2:热敏电阻温度采集
  4. PA3 IN3:模拟压力传感器采集

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询