核心方案:用DMA将预计算的波形数据(如正弦表、任意波形)周期性搬运到定时器的比较寄存器(CCR),配合PWM模式输出。关键点:1)选择带DMA请求的定时器(如STM32的TIM1/8高级定时器或TIM2/5通用定时器),配置PWM模式1或2,使能更新事件或比较事件触发DMA;2)将多路数据打包成连续内存块(如每路对应一个数组),用DMA的循环模式(Circular)自动搬运,无需CPU干预;3)精度取决于定时器时钟和预分频,建议使用16位定时器并开启Dithering(如STM32G4)或使用32位定时器(如TIM2)提升分辨率;4)若需多路同步,可配置DMA的突发传输(Burst)一次更新多个CCR,或使用多通道DMA请求(如TIM1的CC1/CC2/CC3)。实操建议:先单路验证DMA-PWM波形,再用逻辑分析仪检查相位和占空比误差;注意DMA缓冲区需对齐(如4字节)且避免缓存一致性问题(若MCU带D-Cache需配置MPU)。
mcuku 阿沐 · 2026-08-27