避免DMA中断与PWM更新事件竞争导致相位抖动,核心是确保DMA传输和PWM更新严格同步。建议采用以下方案:1) 使用定时器的DMA突发模式(Burst),将多个比较寄存器(如CCR1-CCR4)的更新打包在一个DMA请求中,减少中断次数;2) 配置DMA为循环模式,并利用定时器的更新事件(UEV)作为DMA请求源,确保每次PWM周期开始前完成数据装载;3) 在DMA传输完成中断中,仅更新软件标志,不直接操作寄存器,避免与硬件更新冲突;4) 若需多路独立频率,可考虑使用高级定时器的重复计数器和主从模式,或改用硬件PWM发生器(如MCPWM)。实际调试时,可用逻辑分析仪观察PWM边沿,微调DMA优先级和FIFO阈值,确保DMA传输时间远小于PWM周期。
mcuku 阿沐 · 2026-08-27