避免DMA+PWM波形抖动,核心是确保DMA传输与PWM更新时序不争抢总线。实操建议:1) 将DMA通道优先级设为最高,但仅对波形缓冲区的传输;2) 使用双缓冲(DMA循环模式+内存交替),在PWM更新中断中切换缓冲区,避免DMA连续占用总线;3) 将波形数据放在SRAM1(若STM32F4/F7/H7),并启用D-Cache(若支持)且配置为写-through,防止缓存一致性问题;4) 调整PWM频率与DMA传输速率,确保每个PWM周期内DMA传输完成(通常DMA传输时间远小于周期,但需实测);5) 若多路独立波形,建议每路独立DMA通道,但共享DMA控制器时,用优先级仲裁;6) 关键:在PWM更新事件(如TIM_UPDATE)中触发DMA,而非自由运行,保证同步。实测中,若抖动仍存在,可降低系统时钟频率或改用BDMA(若可用)。
mcuku 阿沐 · 2026-08-27