STM32配置PWM输出时通道极性CH Polarity对输出的影响

配置PWM输出时,通道极性CH Polarity对输出到底会有什么影响,废话不多说,实践出真知,这篇文章实测不同的极性配置对PWM输出的影响。

1、测试平台

使用STM32H732ZGT6的TIM1进行测试。

2、时钟配置

系统时钟配置为550MHz,定时器所在总线的时钟为275MHz,如下图:

3、PWM定时器配置

使用TIM1产生PWM,PWM计数器时钟分频配置为0,不分频,为275MHz;

计数模式为中心对其模式;

计数周期为13750,这样根据时钟频率和计数模式,得到PWM频率为275M/(13750*2)=10kHz。

配置如下:

4、不同的通道极性CH Polarity / CHN Polarity配置对比

PWM通道的模式配置为PWM mode 1,比较值Pulse配置为2750,即计数周期的20%。

不同极性配置后使用示波器测量,示波器通道1黄色线测量的CH,通道2蓝色线测量的互补通道CHN

4.1 CH Polarity High / CHN Polarity High

对于CH通道,计数器计数值小于比较值Pulse时,通道输出电平为H,计数值大于比较值Pulse时,通道输出电平为L,得到正占空比20%;

CHN通道与CH通道输出波形互补。

4.2 CH Polarity Low / CHN Polarity Low

对于CH通道,计数器计数值小于比较值Pulse时,通道输出电平为L,计数值大于比较值Pulse时,通道输出电平为H,得到正占空比80%;

CHN通道与CH通道输出波形互补。

4.3 CH Polarity High / CHN Polarity Low

对于CH通道,计数器计数值小于比较值Pulse时,通道输出电平为H,计数值大于比较值Pulse时,通道输出电平为L,得到正占空比20%;

CHN通道与CH通道输出相同波形。

4.4 CH Polarity Low / CHN Polarity High

对于CH通道,计数器计数值小于比较值Pulse时,通道输出电平为L,计数值大于比较值Pulse时,通道输出电平为H,得到正占空比80%;

CHN通道与CH通道输出相同波形。

5、总结

根据以上测试,定时器计数模式配置为中心对其模式,PWM模式配置为PWM mode 1时,对于CH通道,当计数器计数值小于PWM通道比较值Pulse时,通道输出电平与CH配置极性相同,当计数器计数值大于PWM通道比较值Pulse时,通道输出电平反转(即与CH配置极性相反);对于CHN通道,当其极性配置的与CH极性相同时,其通道输出波形与CH通道输出波形互补,当其极性配置的与CH极性相反时,其通道输出波形与CH通道输出波形相同。

需要注意的是,PWM模式配置为PWM mode 2时刚好相反,即当计数器计数值小于PWM通道比较值Pulse时,通道输出电平与CH配置极性相反,当计数器计数值大于PWM通道比较值Pulse时,通道输出电平反转(即与CH配置极性相同)。如下图:

### STM32 PWM波形输出反相问题解决方案 对于STM32微控制器,在配置PWM输出遇到波形反相的问题,可以通过调整定器的输出比较极性PWM模式来解决这个问题。具体来说: 在设置PWM相关寄存器的过程中,需要特别注意输出比较极性的设定。当此参数被设为`High`,表示输出信号不会发生反相;而将其设为`Low`则意味着输出信号会被反转后再发送出去[^2]。 如果当前观察到PWM波形出现了意料之外的反相现象,则应该检查并修改这一选项至相反的状态尝试解决问题。另外,还需确认所选用的是适合应用需求的PWM工作模式——即PWM Mode 1 或者 PWM Mode 2,这两种模式能够提供更加灵活多变且易于控制的PWM波形特性[^3]。 此外,值得注意的是,经过内部逻辑处理后的OCxREF参考信号会进一步送往极性选择模块以决定最终输出电平是否会进行翻转操作[^4]。因此,除了上述提到的方法外,也可以通过改变该路径中的配置达到纠正目的。 最后,确保已经正确启用了TIMx通道对应的输出功能以及整体PWM输出使能开关,这一步骤同样至关重要。 ```c // 假定使用 TIM1_CH1 进行 PWM 输出, 下面是一个简单的例子展示如何更改极性. void Set_PWM_Polarity(TIM_HandleTypeDef *htim, uint8_t polarity){ if(polarity == POLARITY_HIGH){ // 不反相 __HAL_TIM_SET_COMPARE(htim, TIM_CHANNEL_1, CompareValue); HAL_TIMEx_OCN_SetPolarityLevel(htim,TIM_OCNPOLARITY_HIGH); }else{ // 反相 __HAL_TIM_SET_COMPARE(htim, TIM_CHANNEL_1, Period - CompareValue); HAL_TIMEx_OCN_SetPolarityLevel(htim,TIM_OCNPOLARITY_LOW); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值