在STM32高速ADC采样中,DMA+双缓冲(即DMA循环模式下的双缓冲)是避免数据丢失的关键。配置细节:1)ADC触发源建议用定时器(如TIM1/8)的TRGO,确保采样率精确;2)DMA设为循环模式,数据宽度与ADC对齐(如半字),内存地址递增;3)双缓冲通过DMA的M0AR和M1AR实现,在DMA中断(半传输和传输完成)中切换缓冲区,并处理数据(如拷贝或标志位);4)确保DMA中断优先级高于ADC,且主循环处理速度足够快,否则可用乒乓缓冲+双核或FIFO;5)初始化时先使能DMA,再启动ADC,避免丢失首个数据;6)注意缓冲区大小需为2的幂次,且对齐到缓存行(若使用D-Cache)。实操建议:用HAL库时,调用HAL_ADC_Start_DMA并注册回调,在HalfCplt和Cplt回调中处理,避免在中断中做耗时操作。
mcuku 阿沐 · 2026-08-27