STM32多通道ADC扫描采集原理与HAL驱动实现

📅 发布时间:2026/7/9 1:57:20 👁️ 浏览次数:
STM32多通道ADC扫描采集原理与HAL驱动实现
1. 多通道ADC扫描采集原理与工程实现在嵌入式系统中,单次ADC转换仅能获取一个模拟信号的数字表示。当系统需要同步监测多个物理量(如电位器电压、NTC热敏电阻分压值、芯片内部温度、内部参考电压)时,若采用逐通道手动触发方式,不仅代码逻辑冗余、实时性差,更难以保证多通道采样时刻的一致性。STM32的ADC扫描模式(Scan Mode)正是为解决此类问题而设计的核心机制。它允许开发者将多个模拟输入通道注册到规则组(Regular Group)中,由硬件自动按序完成采样与转换,形成一个原子化的多通道采集周期。这一机制并非简单的软件轮询,而是深度耦合于ADC硬件状态机与DMA控制器的协同工作流。1.1 规则组与扫描模式的硬件语义规则组是ADC外设中用于组织常规转换任务的寄存器集合,其核心配置寄存器为ADC_SQR1至ADC_SQR4(序列寄存器)与ADC_JSQR(注入组序列寄存器)。当扫描模式使能(ADC_CR1_SCAN位置1)且规则组转换数量(ADC_SQR1_L[3:0]字段)大于1时,ADC硬件状态机即进入扫描状态。此时,每次启动转换(通过软件触发或外部事件),ADC将严格按照SQRx寄存器中定义的Rank(序号)顺序,依次对各通道执行完整的采样-保持-转换流程。例如,当SQR1_L = 0x03(即4个通道)且SQR3中SQ1=5、SQ2=4、