实现STM32 DMA+双缓冲ADC连续采样不丢数据,核心是采用DMA循环模式配合双缓冲(即乒乓缓冲)。首先配置ADC为连续转换模式,触发源设为定时器或软件,确保采样率稳定。DMA配置为循环模式,数据宽度16位(ADC1为12位),内存地址设为两个缓冲区(如buf1和buf2,各N个半字)。启用DMA传输完成中断,在中断中切换当前缓冲区标志,并处理已满缓冲区数据(如拷贝或计算)。关键点:1)DMA循环模式自动在buf1和buf2间交替填充,无需手动切换;2)中断中处理数据时,确保处理时间小于一个缓冲区填充时间,否则用双缓冲+主循环轮询标志,避免中断阻塞;3)若ADC采样率极高,可考虑使用DMA的传输过半中断(HT)和完成中断(TC)分别处理两个半缓冲区,实现四缓冲效果。实操建议:先配置DMA的M0AR和M1AR指向两个缓冲区,设置DMA_CTRL的DBM位(双缓冲模式),并启用循环模式。测试时用逻辑分析仪验证数据连续性。
mcuku 阿沐 · 2026-08-27