核心方案是采用定时器触发ADC+DMA双缓冲(或循环模式)并配合数据对齐校验。首先,将ADC配置为扫描模式,使能DMA循环传输,且DMA数据宽度设为半字(16位)以匹配ADC输出。其次,使用定时器(如TIM1/8)的更新事件或TRGO作为ADC外部触发源,确保每通道采样间隔严格一致。为避免数据错位,建议在DMA传输完成中断中,通过检查ADC状态寄存器(如ADC_SR的STRT位)或使用DMA的传输完成标志,确认当前缓冲区的首地址对应通道0。更稳妥的做法是:在DMA配置中启用循环模式,并利用DMA的半传输/全传输中断,在每次中断时切换处理缓冲区(双缓冲),同时记录当前缓冲区索引,这样即使发生错位,也能通过索引恢复。另外,若使用多ADC同步模式(如ADC1+ADC2),需确保DMA配置为多模式专用描述符,并同步启动。实操建议:在初始化后先执行一次伪采样,丢弃第一帧数据,以消除上电毛刺;并定期(如每1000次采样)通过软件触发一次校准序列,比对已知电压值,动态校正偏移。
mcuku 阿沐 · 2026-08-27