核心思路是让DMA传输与PWM更新事件严格同步,避免中断抢占导致时序错乱。首先,将DMA配置为循环模式,并设置传输完成中断(TC)仅在缓冲区半满或全满时触发,而不是每次更新都触发,这样可大幅降低中断频率。其次,使用定时器的更新事件(UEV)作为DMA请求源,并确保DMA传输在PWM周期开始前完成,可通过设置DMA的FIFO或调整传输优先级(如将DMA优先级设为最高)来减少延迟。更关键的是,在DMA中断服务函数中只做标志位设置或数据预装载,不进行耗时操作,实际数据更新由硬件自动完成。若需多路精确同步,建议使用定时器主从模式(如主定时器触发从定时器),并配合DMA突发传输(Burst)一次性更新多路比较寄存器。实操中,可先用逻辑分析仪验证时序,逐步调整DMA的突发长度和中断阈值。
mcuku 阿沐 · 2026-08-27