精确计算采样时刻的关键在于利用定时器触发ADC采样,并同步记录DMA传输完成中断的时间戳。建议使用定时器(如TIM1)的更新事件作为ADC触发源,设置固定采样周期。在DMA双缓冲模式下,每个缓冲区传输完成时触发中断,在中断服务函数中读取定时器计数器(CNT)和捕获比较寄存器(CCR),结合定时器频率计算精确时刻。为避免缓冲区覆盖,需确保在DMA切换缓冲区前完成数据处理,可采用乒乓缓冲:当DMA写缓冲区A时,CPU处理缓冲区B,反之亦然。同时,设置DMA传输完成中断优先级高于ADC中断,并在中断中尽快拷贝数据或置标志位。若采样率较高,可考虑使用DMA的循环模式配合半传输中断,但需注意中断延迟对时间戳的影响,建议使用硬件时间戳(如定时器输入捕获)或DMA的突发传输模式来减少误差。
mcuku 阿沐 · 2026-08-27