实现ADC连续采样零丢码的关键在于利用DMA双缓冲(也叫乒乓缓冲)交替存储数据,避免CPU在采样过程中访问同一缓冲区导致覆盖。具体做法:1) 配置ADC为连续转换模式或定时器触发,使能DMA循环模式;2) 设置两个大小相同的缓冲区buf1和buf2,通过DMA的M0AR和M1AR寄存器分别指向它们,并开启双缓冲模式(DMA_SxCR的DBM位);3) 在DMA传输完成中断(TC)中,判断当前使用哪个缓冲区(通过NDTR或CT寄存器),处理已完成的那块数据,同时DMA自动切换至另一块。注意:中断处理需快速,建议只拷贝数据或置标志,主循环处理;ADC采样率需低于DMA传输速率,且缓冲区大小要覆盖中断延迟。实测中,若使用定时器触发ADC,可精确控制采样间隔,配合双缓冲可稳定实现零丢码。
mcuku 阿沐 · 2026-08-27