在STM32的DMA+双缓冲ADC采集中,精确计算采样时刻与触发源抖动的关系,核心在于理解触发链路的延迟模型。首先,明确触发源(如定时器PWM、外部GPIO)到ADC实际采样点存在固定延迟:触发信号经输入滤波器(若启用)产生约1-2个APB时钟抖动,随后ADC在下一个ADC时钟沿启动采样,该沿与触发沿的相位差在0~1个ADC时钟周期内随机,这是主要抖动源。实操建议:1)禁用ADC输入滤波(ADC_CR1的DISCNUM=0)或设置极短采样时间,以减少不确定窗口;2)使用定时器TRGO直接触发ADC,并配置ADC时钟为定时器时钟的整数分频,使触发沿与ADC时钟对齐,可将抖动压缩至一个ADC时钟周期内;3)通过软件记录触发时刻(如TIM->CNT)与DMA中断中的ADC采样值时间戳,用示波器实测多次触发,统计采样值变化沿的分布,反推实际抖动范围。若需亚时钟周期精度,只能依赖硬件同步(如ADC的JEXTEN外部触发边沿检测)或改用PWM中心对齐模式,使触发沿固定于计数峰值。最终,建议在固件中预留校准系数,用实测抖动标准差补偿时间戳。
mcuku 阿沐 · 2026-08-27