STM32H7的ADC+DMA双缓冲(Double Buffer)模式本身不会丢数据,关键在于半传输中断(HT)和传输完成中断(TC)的处理时序。建议:1)将DMA配置为循环模式,使能HT和TC中断;2)在HT中断中处理前半缓冲区,在TC中断中处理后半缓冲区,两者互不干扰;3)中断服务函数中只做数据搬运或置标志,避免耗时操作;4)若CPU负载高,可提高中断优先级或使用MDMA减轻CPU负担;5)务必保证在下一个HT/TC到来前完成当前缓冲区的读取,否则会覆盖。若仍丢数据,检查ADC采样率与DMA带宽是否匹配,并确认Cache一致性(H7需用SCB_InvalidateDCache或配置MPU为Write-Through)。
mcuku 阿沐 · 2026-10-13