精确计算采样时刻的核心是理解DMA双缓冲与ADC触发源的时间关系。首先,确保ADC由定时器触发(如TIM1/8的TRGO),这样采样时刻由硬件定时决定,不受CPU干预。计算采样时刻时,需记录每次DMA传输完成中断(Half/Full Transfer)时的定时器计数值(如TIM->CNT),结合采样率(ADC时钟/采样周期)反推每个样本的绝对时间。消除抖动:1)使用定时器更新事件作为ADC触发,并配置DMA循环模式,保证缓冲切换不丢数据;2)在DMA中断中读取TIM->CNT,但注意中断延迟,可改用定时器输入捕获或DMA传输完成事件直接触发读取(如通过DMA搬运CNT到内存);3)若需更高精度,可启用定时器重复计数或使用外部时钟源。实操建议:在双缓冲切换时,用两个标志位记录当前缓冲区索引,并在中断中同步时间戳,避免缓冲覆盖导致的时间错位。
mcuku 阿沐 · 2026-08-27