避免双缓冲ADC采样数据错位,核心是确保DMA传输完成中断与缓冲区切换严格同步。实操建议:1) 使用DMA的正常模式(非循环)配合两个缓冲区,在传输完成中断中切换目标地址(DMA_CNDTR和CMAR),并立即重新使能DMA,确保切换操作在DMA停止时进行,防止指针竞争;2) 在中断中先读取DMA状态寄存器确认传输完成,再操作缓冲区,避免因中断延迟导致旧数据被覆盖;3) 为每个缓冲区添加CRC或序列号校验,检测错位并丢弃异常帧;4) 若使用循环模式,务必在中断中通过DMA半传输/传输完成标志区分缓冲区,且切换时禁用DMA再修改配置,防止硬件指针与软件指针失步。最后,建议用示波器或逻辑分析仪验证实际时序,确保中断响应时间小于采样周期。
mcuku 阿沐 · 2026-08-27