你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

经验分享 | 高精度定时器如何实现 PWM 零满占空比的连续切换

[复制链接]
STMCU小助手 发布时间:2025-8-11 14:34

引言 在《高精度定时器如何输出零占空比与满占空比 PWM 波形》一文中,我们分享了在高精度定时器中 PWM 输出零占空比和满占空比的方法,但是在实际的应用中还会存在零占空比和满占空比连续切换的情况,在原有的 PWM 发波方式上,若是采样 up-down count 模式的话要实现这种连续切换会存在一些问题,本文将分析相关问题,并给出更加合适的方案来实现 PWM 零-满占空比的连续切换。

Up count 模式下零-满占空比 PWM 切换 在 STM32G474 的高精度定时器中,up count 模式下,零-满占空比的输出方式以及连续切换可以直接实现,具体参考下图以及说明。注意以下的示例中,比较寄存器和周期寄存器的赋值都需要满足芯片用户手册中对赋值的限制,具体参见 RM0440 中 Period and compare registers min and max values 的说明。

2.1. 边沿对齐模式 PWM 发波配置:

PWM Set source :PER event PWM Reset source:CMPx event (x=1 or 3) PWM 发波动作:

占空比 0%: CMPx = 0 占空比 100%: CMPx > PER 其他占空比: CMPx = M D→0%→100%→0%→… image.png

D→100%→0%→100%→… image.png

2.2. 非边沿对齐模式 PWM 发波配置:

PWM Set source :CMPx event (x=1 or 3) PWM Reset source:CMPy event PWM 发波动作:

占空比 0%:CMPx > PER,CMPy = 0 占空比 100%:CMPx = 0,CMPy > PER 其他占空比:CMPy - CMPx = M D→0%→100%→0%→… image.png

D→100%→0%→100%→… image.png

  1. Up-down count 模式下零-满占空比 PWM 切换 3.1. 常规发波方式存在的问题 按照《高精度定时器如何输出零占空比与满占空比 PWM 波形》一文中的方式,在 up-down count 计数模式下,按照常用的发波方式,PWM 的占空比无法实现零-满连续切换,如下图所示:

PWM 发波配置:

PWM Set source :CMPx event (x=1 or 3) PWM 发波动作:

占空比 0%:CMPx > PER 占空比 100%:CMPx = 0 其他占空比: CMPx = M D→0%→100%→?%→ 0%→… image.png

D→100%→?%→0%→ 100%→… image.png

如图中绿色框内所示,当占空比需要从 100%切换到 0%的时候,需要先输出一个其他占空比的 PWM 波形,然后才能切换到 0%输出,如果直接将 CMPx 的值从 CMPx = 0 修改到CMPx > PER,则后续将没有比较事件产生,PWM 将一直保持 100%占空比输出。这样就造成无法实现连续的切换,没法满足客户某些应用的需求。

3.2. 零-满占空比连续切换方案 针对以上的问题,可以在原有发波方式上再添加一个比较事件,并且利用比较事件之间的优先级来实现对 PWM 的行为控制,具体如下:

PWM 发波配置:

PWM Set source :CMP1 event PWM Reset source:CMP3 event PWM 发波动作:

占空比 0%:CMP1 = 0, CMP3 = 0 占空比 100%:CMP1 = 0, CMP3 > PER 其他占空比:CMP1 = M, CMP3 = 0 D→0%→100%→ 0%→… image.png

D→100%→0%→ 100%→… image.png

当 CMP1 = 0, CMP3 = 0 的情况下,由于 CMP3 事件的优先级比 CMP1 事件的优先级高,所以 CMP3 事件所对应的 Reset 动作生效,让 PWM 输出低电平。

3.3. 零-满占空比连续切换实测波形 50% →100% → 0% → 100% →0%.......→ 0% → 50% image.png

50% → 0% → 100% →0%.......→ 0% →100% → 50% image.png

  1. 小结 针对客户在使用高精度定时器过程中,PWM 输出零-满占空比连续切换波形中遇到的问题,分别对使用 up count 模式和 up down count 模式下,如何实现输出零-满占空比连续切换波形给出了解决方案,up count 模式下无需改变原有配置,通过修改比较寄存器的值即可实现,而 up down count 模式下需要通过另外增加一个比较事件来帮助实现。 ————————————————

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/2501_92678806/article/details/149707671

收藏 评论0 发布时间:2025-8-11 14:34

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版