STM32多通道采样用规则组+扫描模式+DMA循环:规则组排好通道顺序,扫描模式按顺序转换,DMA自动把结果搬到内存数组。采样时间按源阻抗选,用前执行ADC校准。具体通道数、采样周期、分辨率按芯片型号和手册。
本文概述
STM32 ADC是嵌入式面试高频题,尤其是多通道采集(电压、电流、温度)。面试官想听的不是"打开ADC读寄存器",而是你懂不懂规则组和注入组的区别、扫描模式怎么用、DMA怎么配、采样时间为什么要按源阻抗选、以及校准怎么做。本文从STM32 ADC结构讲起,覆盖规则组/注入组、单次/连续/扫描模式、DMA循环传输、采样时间与源阻抗匹配、内部电压参考校准、多通道排序,并强调所有配置按所用STM32型号手册,不套固定值。
核心要点
规则组:常规转换序列,最多16个通道,按Rank排序,DMA自动搬数据
注入组:高优先级打断规则组,最多4个通道,用于紧急信号
扫描模式:按规则组Rank顺序自动转换多个通道,配合DMA
采样时间:按信号源阻抗选(阻抗大要拉长采样周期),否则采样不准
校准:使用前执行ADC校准(如STM32F1的CAL位),消除内部失调误差
参考电压:用内部VREFINT做基准校准,VDD不稳时提高精度

面试官考察点
考察点拆解
面试官问STM32 ADC,重点考察:第一,规则组和注入组的区别;第二,扫描模式+DMA怎么配合做多通道;第三,采样时间为什么和源阻抗有关;第四,校准和VREFINT怎么用。
追问方向:采样时间怎么算、DMA双缓冲、多通道顺序、分辨率与精度。
回答思路
答题主线
建议按"ADC结构 → 规则组/扫描 → DMA → 采样时间 → 校准 → 多通道排序"来答。
先讲规则组与注入组:常规与紧急。
讲扫描+DMA:多通道自动采集。
讲采样时间:和源阻抗匹配。
讲校准与VREFINT。
参考回答
我先讲STM32 ADC的两种组,再讲多通道怎么配。
第一,规则组和注入组。STM32 ADC把通道分成两组:
| 对比项 | 规则组 | 注入组 |
|---|---|---|
| 通道数 | 最多16个 | 最多4个 |
| 优先级 | 常规 | 可打断规则组 |
| 用途 | 多通道常规采集 | 紧急信号(过压/过流) |
| DMA | 支持自动搬数据 | 可注入通道寄存器 |
规则组(Regular Group):常规转换序列,按Rank(0~15)排序,是日常多通道采集的主力;
注入组(Injected Group):最多4个通道,可以在规则组转换到一半时打断并插队,转换完再回到规则组。用于紧急信号(如过压保护、过流检测)。
多数应用只用规则组+DMA;需要紧急响应才用注入组。
第二,扫描模式+DMA做多通道。典型多通道采集配置:
在规则组里按Rank排好通道顺序(Rank 0=CH0, Rank 1=CH1...);
开扫描模式(Scan Conv Mode):ADC自动按Rank顺序逐个转换;
开DMA:每转换完一个通道,DMA自动把结果搬到内存数组(uint16_t buf[N]),CPU不参与;
用连续模式或定时器触发启动转换。连续模式下ADC转完一轮自动开始下一轮。
这样buf[0]永远是Rank 0通道、buf[1]是Rank 1通道,软件按固定下标读即可。
第三,采样时间为什么按源阻抗选。ADC采样阶段需要通过采样电容给内部保持电容充电。信号源阻抗越大,充电越慢,就需要更长的采样周期,否则采样电容没充到真实电压,结果偏小。STM32采样时间可选几个档位(如1.5/7.5/.../239.5个ADC时钟周期,具体按型号)。高阻源(如大阻值分压、高阻传感器)选长采样时间,低阻源(运放跟随输出)可选短采样时间。
第四,校准。STM32 ADC上电后有内部失调误差,使用前执行一次校准(如F1系列置CAL位,等硬件清零),让内部失调寄存器校正。校准结果影响零点。
第五,VREFINT做基准。STM32内部有VREFINT通道(如1.2V基准),可以用它反推实际VDD:如果VREFINT在3.3V下采到1.2V值为x,那实际VDD=1.2×4096/x。当VDD不稳(电池供电、USB供电)时,用VREFINT校准能提高外部电压测量精度。
第六,分辨率与精度。STM32 ADC常见12位(0~4095),每lsb=VDD/4096。精度不止看分辨率,还看INL、DNL、失调误差、噪声,以及采样时间、参考源质量。

扫码关注





























