1. ADC扫描模式的工程本质与设计动机
在嵌入式系统中,ADC(模数转换器)绝非简单的“电压读取外设”,而是一个需要深度理解其内部时序、数据流与控制逻辑的精密模拟前端模块。扫描模式(Scan Mode)正是STM32系列MCU为解决多通道同步采样这一典型工业需求而设计的核心机制。它并非一个孤立的功能开关,而是与ADC的序列管理、触发源协同、数据寄存器映射等底层硬件结构紧密耦合的系统级特性。
要真正掌握扫描模式,必须回归其硬件根源。观察STM32F103系列的ADC框图,其核心是“规则序列”(Regular Sequence)与“注入序列”(Injected Sequence)两大独立的数据采集流水线。每条流水线都维护着一个16级深度的通道索引表——即“序列”。这个序列并非静态配置,而是一个动态执行计划:当ADC被启动后,它将严格按照序列中定义的通道顺序、采样时间与转换次序,逐项执行转换任务。
扫描模式的本质,就是启用这个序列的“自动递进”能力。当扫描模式被禁用时,无论序列中配置了多少个通道,ADC仅将序列首项(Rank 1)视为有效目标,其余所有配置均被硬件忽略。此时,ADC的行为退化为单通道模式,即使你向序列中写入了16个通道,它也只转换第一个。这解释了为何在基础单通道实验中,我们总是将序列长度(N)设为1,并关闭扫描模式——这是一种明确的、低开销的单点测量策略。
而当扫描模式被使能后,ADC的执行逻辑发生根本性转变。它不再止步于Rank 1,而是依据序列长度N的值,自动遍历序列的前N项,依次对每个指定通道执行一次完整的采样-转换流程。整个过程由一个统一的转换周期驱动,各通道的转