STM32定时器非对称PWM输出模式应用示例

描述

有STM32用户使用STM32F3系列MCU开发产品,想利用片内定时器实现移相全桥的PWM波形输出。具体要求如下,并希望输出下图所示波形:

1、A与B波形的频率及占空比相同,波形错位的时间需可调,如图上半部分所示。

2、A与/A是同频率、同占空比的互补波形,两个波形的高电平之间可插入死区。

3、B与/B的关系同A与/A,如图中下半部分的图示。

STM32

要实现上面的波形,我们可以通过灵活运用比较输出的toggle模式结合DMA来实现,

不过,这对很多人来说,难度可能有点大。

具体到这里,因为他选择了STM32F3系列,而STM32F3/L4/F7/H7等系列的定时器都具备非对称PWM输出模式或组合输出模式,若使用非对称PWM输出模式实现上述输出就比较方便省事。下面一起来看看。

所谓非对称PWM输出模式它是相对基于中心对称计数时的对称PWM输出而言的。当计数模式为中心对齐,某个输出通道利用一个比较寄存器做PWM输出时,其对应的PWM输出波形呈中心对称,如下图所示:

STM32

那这里的非对称PWM输出呢?同样采用中心对齐计数模式,1个通道的输出要用到2个比较寄存器的值进行比较翻转。比方定时器通道3的输出,根据CCR3和CCR4的值分别在向上计数和向下计数过程中做两次比较而产生输出,由于CCR3与CCR4的值往往不一致进而输出非对称的PWM波形。如下图所示:

STM32

关于定时器比较输出的非对称PWM模式,OC1REFC或OC2REFC的输出特征由CCR1和CCR2的值及所选PWM模式决定,同样,OC3REFC或OC4REFC的输出特征由CCR3和CCR4的值和所选PWM模式决定。

STM32

STM32参考手册中在这个地方可能讲得比较简单,我这里再画图示意下。OC1/OC2都使用非对称PWM输出模式。CCR1=3,CCR2=6,ARR=8。注意,采用非对称PWM输出模式一定要使用中心对齐计数模式。

STM32

从上图中我们不难看出,对于OC1REFC和OC2REFC,它们的输出产生了相差,该相差取决于CCR1与CCR2的值。基于这点,我们就可以实现上面的A、B输出的相移问题,即通过修改CCR的值即可自由调整相差。【OCxREFC信号最终还是输出到OCx端的,并支持互补输出。】

STM32

这时我们再开启这两路的互补输出,到此就可以实现客户的输出要求了。

下面我们利用STM32CubeMx神器进行初始化配置。【了解下关键配置就好】

STM32

STM32

配置时钟等,然后生成初始化代码并打开相关工程。添加需要的用户代码。代码很简单,是基于cube HAL库。【开启CH1/CH2及互补通道的PWM输出功能,使能主输出、开启计数器。】

STM32

看下输出结果【未插入死区】:

STM32

我们也可以基于互补通道插入死区,得到带死区的输出结果。

STM32

看到这里,是不是觉得这个非对称PWM模式对实现那些相差可调的驱动波形很方便? 好,关于STM32定时器的非对称PWM功能输出就介绍到这里。当然,它还可以有些其它灵活的用法,有兴趣可以进一步了解并为你所用。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分