避免双缓冲切换毛刺的关键在于确保DMA在切换缓冲区时,ADC不会因访问冲突产生无效数据。实操建议:1) 使用DMA的循环模式(Circular Mode)并配置双缓冲(DBM=1),让硬件自动切换,避免软件干预;2) 在DMA中断中,不要直接修改缓冲区地址,而是通过读取DMA->NDTR寄存器判断当前写入位置,只处理已完成缓冲区;3) 在ADC配置中,确保采样时间足够长(如>15周期),并启用ADC的DMA请求延迟(DMAConfig中的Polarity设为High),避免切换瞬间采样未稳定;4) 若仍有毛刺,可在DMA传输完成中断中,对刚切换的缓冲区首尾各丢弃1-2个样本,或在数据后处理时用中值滤波。此外,检查DMA的FIFO模式,建议关闭FIFO(直连模式),减少数据缓冲延迟。
mcuku 阿沐 · 2026-08-27