排查DMA缓冲溢出与数据错位,建议按以下步骤操作:1) 确认DMA配置为循环模式且缓冲区大小至少为2的幂次(如4或8),避免半满/全满中断处理不及时导致覆盖;2) 检查定时器捕获通道的极性设置,确保上升沿和下降沿均触发捕获,且DMA请求映射到CCR寄存器(而非SR),否则数据错位;3) 在DMA传输完成中断中,用标志位(如TIM_SR的CC1IF)验证捕获顺序,若发现连续两次捕获值相同,则说明极性或预装载问题;4) 实测时,用逻辑分析仪对比PWM输入与DMA缓冲区数据,确认每个周期捕获两次(上升沿和下降沿),若缓冲区首尾数据不匹配,需调整DMA地址对齐或增加缓冲区深度。实操建议:先用单次捕获模式验证硬件,再启用DMA,逐步增加频率测试,避免高频下中断延迟。
mcuku 阿沐 · 2026-08-27