1. 项目背景与核心需求
在嵌入式系统开发中,精确的模拟信号采集是许多应用的基础需求。STM32系列微控制器内置的高性能ADC模块,配合HAL库的抽象层接口,为开发者提供了便捷的采集方案。然而,当面对需要严格时序控制的采样场景时(如电机控制、音频处理等),传统的软件触发方式往往难以满足实时性要求。
定时器触发ADC采集的核心价值在于:
- 实现硬件级同步,消除软件延迟带来的时序抖动
- 精确控制采样间隔,满足信号处理的奈奎斯特采样定理
- 解放CPU资源,采集过程无需内核干预
- 支持多ADC协同工作模式,提升系统吞吐量
以工业温度监控系统为例,当需要以100Hz固定频率采集8路热电偶信号时,定时器触发方案可确保采样间隔严格保持10ms,避免软件轮询导致的时序累积误差。
2. 硬件架构与时钟配置
2.1 STM32 ADC触发源机制
STM32的ADC模块支持多种触发方式,通过控制寄存器CR2的EXTSEL[2:0]位进行选择。定时器触发属于外部触发(EXT),其触发源与定时器通道的对应关系如下:
| 定时器通道 | ADC触发源 | 适用场景 |
|---|---|---|
| TIM1_TRGO | ADC_EXT_TRG1 | 高级定时器精确控制 |
| TIM2_TRGO | ADC_EXT_TRG2 | 通用定时器常规应用 |
| TIM3_TRGO | ADC_EXT_TRG3 | 通用定时器常规应用 |
| TIM4_TRGO | ADC_EXT_TRG4 | 基础定时器简单场景 |
注意:不同STM32系列支持的触发源可能存在差异,需查阅对应型号的参考手册确认。
2.2 时钟树配置要点
实现精确触发的关键在于时钟同步配置:
- 定时器时钟源选择:通常使用APB总线时钟,注意APB预分频器设置
- ADC时钟分频:确保不超过最大允许时钟频率(如STM32F1最大14MHz)
- 触发信号路径延迟:通过调整定时器输出触发(TRGO)的触发事件来补偿
典型配置示例(基于STM32F407):
c复制// 定
