0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

茶话MCU 来源:ST MCU 信息交流 2020-05-14 09:21 次阅读

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    关注

    114

    文章

    5141

    浏览量

    213385
  • STM32
    +关注

    关注

    2266

    文章

    10871

    浏览量

    354778
  • 定时器
    +关注

    关注

    23

    文章

    3237

    浏览量

    114462

原文标题:STM32定时器非对称PWM输出模式应用示例

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    高级定时器PWM输入模式的配置方法

    我们将向大家介绍高级定时器的另一个常见应用——PWM输入模式。在本节课中,我们将先围绕输入捕获模式展开,并重点描述PWM输入
    的头像 发表于 11-08 16:48 1554次阅读
    高级<b class='flag-5'>定时器</b><b class='flag-5'>PWM</b>输入<b class='flag-5'>模式</b>的配置方法

    GD32E230C8T6高级定时器timer0无法正常输出PWM波形的原因?

    原本想用高级定时器的中央对齐计数模式输出SPWM波,但是TIMER0的CH0,CH1等口,都无法正常输出PWM波形,换成普通
    发表于 07-26 06:34

    STM32G4系列芯片定时器的延时输出问题

    有人使用STM32G4系列芯片内部的多个定时器PWM输出输出频率一样,占空比也一样,均为50%。可是,当他中途调整各个
    的头像 发表于 07-01 09:45 1430次阅读
    <b class='flag-5'>STM32</b>G4系列芯片<b class='flag-5'>定时器</b>的延时<b class='flag-5'>输出</b>问题

    如何用STM32定时器实现一个周期输出PWM2的波形?

    请教各位如何用STM32定时器实现一个周期输出PWM2的波形呢(低-高-低-高-低)?万分感谢您的解答!
    发表于 04-03 06:39

    STM32G030定时器16 17和1同步输出如何实现?

    STM32G030系列中只有定时器1 16和17三个定时器可以输出带死区时间互补pwm,我想实现其中两个或者3个同步
    发表于 03-27 06:45

    STM32同一定时器PWM输出定时,会影响我的PWM输出吗?

    求助各位大佬 ,我用定时器2通道1输出PWM 定时器设置为TIM2_PERIODE (1000-1) TIM2_PRESCALER 36,现在还想开启2的中断用
    发表于 03-26 07:23

    如果STM32定时器外接了正交编码,该剩余通道是否能做PWM输出呢?

    其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。
    的头像 发表于 03-21 09:06 1425次阅读
    如果<b class='flag-5'>STM32</b><b class='flag-5'>定时器</b>外接了正交编码<b class='flag-5'>器</b>,该剩余通道是否能做<b class='flag-5'>PWM</b><b class='flag-5'>输出</b>呢?

    G473使用TIM1非对称模式做移相,用TIM8Combined PWM模式做对角的移相与门输出,为什么时序不对?

    G473使用TIM1非对称模式做移相,用TIM8Combined PWM模式做对角的移相与门输出,为啥占空比对了时序不对?
    发表于 03-14 07:49

    stm32主从定时器门控模式,怎么控制在不产生PWM时从定时器cnt不要计数?

    stm32主从定时器,采用门控模式,主定时器用单脉冲模式控制输出。但是我在实验的时候发现其从
    发表于 03-12 07:08

    STM32G030C8T6要输出8~12路PWM,每个定时器可以输出4路,那如何让两个定时器输出PWM同步呢?

    STM32G030C8T6要输出8~12路PWM,每个定时器可以输出4路,那如何让两个定时器
    发表于 03-08 08:19

    使用555定时器的可调双定时器电路

    定时器 IC 555 是最通用和最常用的 IC 之一,因为它的应用范围更广,如 PWM放大器、延迟定时器、开关电路、占空比选择、时钟脉冲发生
    的头像 发表于 02-25 15:16 2004次阅读
    使用555<b class='flag-5'>定时器</b>的可调双<b class='flag-5'>定时器</b>电路

    STM32定时器时间计算方法

    STM32微控制定时器模块在嵌入式系统中非常常见,它被用于产生精确的时间延迟,或者用于实时时钟(RTC)等功能。为了充分利用STM32定时器
    的头像 发表于 12-19 11:31 1.1w次阅读

    stm32一个定时器能同时控制两个灯以不同频率闪烁吗?

    STM32定时器功能强大,**STM32定时器可以同时控制两个灯以不同频率闪烁** 。
    的头像 发表于 12-13 10:43 1993次阅读

    简述STM32定时器的计数模式

    STM32的向上计数模式是指定时器的计数从0开始计数,直到达到自动加载值(TIMx_ARR),然后重新从0开始计数,并产生一个计数溢出事
    的头像 发表于 12-13 10:09 4764次阅读

    基于STM32CUBEMX驱动低压步进电机驱动STSPIN220(3)----定时器中断产生指定数量脉冲

    在步进电机控制过程中,为了实现精确的位置和速度控制,经常需要输出指定数量的脉冲。这就需要使用定时器功能来生成PWM脉冲信号。本文将详细介绍如何利用STM32CUBEMX配置
    的头像 发表于 12-01 15:26 1156次阅读
    基于<b class='flag-5'>STM32</b>CUBEMX驱动低压步进<b class='flag-5'>器</b>电机驱动<b class='flag-5'>器</b>STSPIN220(3)----<b class='flag-5'>定时器</b>中断产生指定数量脉冲