核心思路是让DMA传输与PWM更新事件严格同步,避免中断竞争。首选方案:配置PWM的更新事件(UEV)作为DMA请求源,使用DMA循环模式传输脉冲参数(如比较值数组),并启用DMA传输完成中断(而非PWM更新中断)来更新下一组数据。这样DMA在UEV触发时自动搬运数据,无需CPU介入,从硬件层面消除竞争。实操建议:1)将DMA通道优先级设为最高,PWM更新事件优先级设为最低,但确保DMA请求在UEV上升沿被锁存;2)使用双缓冲(DMA半传输/全传输中断)预加载下一帧数据,避免在传输中修改数组;3)若必须使用中断,则在PWM更新中断中仅置标志位,主循环或DMA中断中处理数据,并关闭中断嵌套;4)验证时序时用逻辑分析仪对比PWM输出和DMA请求信号,确保相位对齐。若仍出现错位,可考虑使用定时器主从模式(如TIM1触发TIM2)实现多路同步。
mcuku 阿沐 · 2026-08-27