精确计算DMA+双缓冲ADC的采样延迟,核心在于理解触发源到ADC采样保持的硬件路径。首先,明确触发源(如定时器TRGO)到ADC启动的延迟:对于STM32F4/H7,典型延迟为1-2个ADC时钟周期(取决于ADC时钟分频和触发极性),可通过查看参考手册的“ADC trigger latency”章节获取精确值。其次,ADC采样阶段本身有固定时间:采样周期(可配置,如1.5-239.5个ADC时钟)+ 转换周期(通常12-15个ADC时钟)。因此,从触发沿到数据就绪的总延迟 = 触发延迟 + 采样周期 + 转换周期。实操建议:1)用逻辑分析仪同时抓取触发信号和ADC的EOC(或DMA请求)信号,实测延迟并校准;2)在代码中,通过定时器更新事件与DMA传输完成中断的时间戳(如使用DWT计数器)计算实际延迟;3)若需更高精度,可配置ADC为硬件过采样或使用注入通道,但注意额外延迟。最后,双缓冲本身不引入延迟,但需确保DMA传输在转换完成前不覆盖缓冲区,否则数据错位。建议在DMA中断中记录时间戳,并验证采样率稳定性。
mcuku 阿沐 · 2026-08-27