使用STM32高级定时器生成非对称PWM实现移相控制
参考ST官方手册解释如下:
在不对称模式下,可生成相移可编程的中心对齐的 PWM 信号。对于专用通道,可使用两个 TIMx_CCRx 寄存器(TIMx_CCR1 和 TIMx_CCR2 或者 TIMx_CCR3 和 TIMx_CCR4)编程 相移和脉宽,频率由 TIMx_ARR 寄存器的值确定。因此,可单独在两个通道上通过编程 TIMx_CCMRx 寄存器中的 OCxM 位来选择不对称 PWM 模式:
● OCxM = 1110 时使用不对称 PWM1,此模式下的输出参考特性与 PWM1 模式相同。当 计数器递增计数时,输出参考与 OC1/3REF 相同;当计数器递减计数时,输出参考与 OC2/4REF 相同
● OCxM = 1111 时使用不对称 PWM2,此模式下的输出参考特性与 PWM2 模式相同。当 计数器递增计数时,输出参考与 OC1/3REF 相同;当计数器递减计数时,输出参考与 OC2/4REF 相同
需注意,带中心对齐计数下,生成的PWM频率为向上或向下计数的一半
参考效果如下图
下边是在STM32G431RBT6上的演示效果
选择TIM8的通道一和通道2
配置频率为850HZ
通道1和通道2占空比设置为50%
在代码中添加
用来修改相位,示例中Phase_shift_cnt取值为1000
通过逻辑分析仪测得
与计算结果一致。
作者:晨星️