1. 定时器触发ADC的工程原理与实现逻辑
在嵌入式数据采集系统中,如何实现高精度、等间隔、低CPU开销的模拟量采样,是工程师必须面对的核心问题。软件轮询启动ADC虽简单,但存在采样间隔不可控、CPU资源占用高、易受中断干扰等固有缺陷;而中断方式虽能降低CPU负载,却难以保证严格的等时间间隔——这正是工业控制、信号分析、传感器动态响应测试等场景所不能容忍的。定时器触发(Timer Triggered ADC)机制,正是为解决这一矛盾而生的硬件协同方案:它将采样时序的精确性完全交由独立运行的硬件定时器保障,ADC仅需在指定时刻执行转换,整个过程无需CPU干预,从而在根本上实现了“硬件定义时序、外设自主执行”的理想模型。
理解该机制的关键,在于厘清STM32中定时器(TIM)、ADC与触发信号(TRGO)三者间的物理连接与逻辑映射关系。在STM32F103系列中,ADC模块本身不具备独立的时钟源或内部计数器,其所有转换动作均依赖于外部事件驱动。这个“外部事件”,可以是软件写入寄存器的指令(SWSTART),也可以是来自片上其他外设的同步脉冲。其中,定时器的TRGO(Trigger Output)信号,便是专为此类跨外设协同而设计的硬件级握手信号。TRGO并非一个固定电平,而是一个可编程的、由定时器主计数器(Counter)状态决定的边沿信号。当定时器配置为Update模式时,TRGO会在每次计数器溢出(即发生Update事件)的瞬间,输出一个精确的上升沿脉冲。这个脉冲被直接路由至ADC的EXTSEL[2:0]选择器,作为注入序列(Injected Sequence)的启动源。因此,ADC的采样时刻,本质上就是定时器计数器周期性溢出的物理时刻,其精度完全取决于定时器输入时钟的稳定性和分频配置的准确性。
这种硬