要彻底消除ADC采样中的CPU介入延迟,核心是使用STM32的DMA双缓冲(也叫乒乓缓冲)模式。具体做法:配置ADC为连续扫描模式,使能DMA循环模式,并设置两个内存缓冲区(Buffer A和Buffer B)。DMA传输完成中断(Half Transfer和Transfer Complete)分别对应两个缓冲区填满的时刻,CPU在中断中只做指针切换或数据处理,而DMA继续填充另一个缓冲区,实现无缝衔接。实操建议:1)确保DMA的缓冲区地址对齐(如4字节对齐),并设置数据宽度与ADC分辨率匹配(如12位用半字);2)在中断服务函数中快速处理数据(如滤波、存储),避免耗时操作;3)使用HAL库时,注意在回调函数中切换缓冲区指针,并重新启动DMA(若未配置循环模式)。这样CPU介入延迟可降至微秒级以下,适合高频采样。
mcuku 阿沐 · 2026-08-27