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

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

3天内不再提示

PWM输出第一个脉冲宽带异常的话题

茶话MCU 来源:ST MCU 信息交流 2020-05-14 09:27 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我们在使用STM32定时器做PWM输出过程中,当借助示波器或逻辑分析仪查看波形时,有时会发现输出的第一个PWM脉冲跟后续的输出脉冲不一样。比方像下面的输出波形,第一个脉冲的高电平要宽于所有其它后续脉冲。

对于这种情况,有些应用是不太在乎的,但有些应用场合可能就不能接受。那这个问题是怎么产生的?有没有办法解决?

产生这个现象的原因简单点说就是在于定时器比较输出模块的工作与定时器计数单元的工作具有相对独立性。使能比较通道的输出功能的操作与使能计数器的操作有个时间差,其长短往往跟用户处理代码有关。

我们知道,STM32的高级定时器或通用定时器,可以大致看成由四个模块组成,分别是主从控制模块、时基单元、输入捕捉模块、输出比较模块。下面截图是STM32F4系列高级定时器TIM1的功能框图的一部分,这里没有将定时器的主从模块截取进来,只保留了时基单元、输入捕捉单元、输出比较单元。

这三个单元既可以相互配合协调工作,也可以各自独立工作。比方说,输出比较单元的工作并不要求时基单元的计数器工作,换言之,即使计数器不被开启计数,输出比较单元依然可以根据默认配置或用户的有关输出配置而发挥作用。

我们不妨结合一个具体实例来看下。假设定时器TIM1的计数模式选择向上计数模式,让通道CH1按照PWM1模式的规则实现PWM输出。配置好ARR和CCR1,极性选择高有效,即OC输出与OCRef参考信号保持同相。

对于定时器的初始化,我们一般会先对时基单元的相关参数做配置,比如时钟源、ARR,PSC等,然后对比较输出功能做配置和使能。当完成比较输出的配置及使能后,即使此时没有使能时基单元的计数器,比较输出单元就发挥作用了,即它会结合比较输出配置和CNT与CCR的比较结果在OC端输出相应电平。

根据上述配置,若CCR大于计数器CNT的值时OC端输出高电平,否则输出低电平。若用户没有专门对CNT寄存器进行赋值,芯片复位后,它的默认值就是0,显然CCR的值要大于此时的CNT的值,自然此时OC端就输出高电平。如果此时计数器还未被开启,这个高电平就会保持到计数器被启动,并延申到后续的PWM输出动作中。即这个高电平会跟第一个PWM脉冲的输出连在一起。若刚好碰到第一个PWM脉冲首先是输出高电平,这就导致第一个脉冲的高电平宽度要宽于后面其它所有PWM脉冲的。

下图第1处乃通道OC功能配置完成被使能的时间点,第2处乃计数器被启动时间点。

在跟上述相同模式和极性条件下,有没有办法消除第一个脉冲的多余宽度呢?

办法是有的。既然OC通道被使能后,其输出由CCR与CNT的比较结果和PWM模式决定,这时我们可以考虑在使能OC通道之前手动将CNT的值进行修改,让它等于ARR或0xffff【若是32位计数器就是0xffffffff】,此时CNT的值不可能会小于用户配置的CCR值,就这样通过改变CCR与CNT的比较结果达到改变OC端输出电平之目的。

比方,如果你用STM32标准库写的话,你可以在下面红圈的那个地方加一句:【arr对应着时基单元中ARR寄存器的值】

参照上面相同定时器配置【向上计数模式、PWM1模式、极性选择高有效】,下面基于Cube库使用STM32F4的TIM1的通道2进一步做个验证测试。

使用CubeMx配置完成生成初始化代码,需添加的用户代码比较简单。如下图所示。其中方框里的延时函数代码是用来模拟比较输出使能与使能计数器两个操作间的间隔,以便观察效果。

基于上述代码,我们通过示波器可以看到第一个脉冲明显宽于其它后续PWM脉冲。【如下图所示】

在上面代码的基础上,我们在使能CH2比较输出功能的代码前添加一句修改CNT寄存器的语句,令其值等于ARR或等于计数器的满量程值。下图中椭圆圈内的代码。【若把CNT值改成等于ARR的值,效果也一样】

然后再进行测试,第一个脉冲也就不再异常了。【如下图所示】

最后小结下,这个现象只有在使能定时器通道的比较输出操作与使能计数器操作存在较为明显的时差时才可能发现,而且它还跟所选择的PWM模式有关,上面只是针对向上计数模式、PWM1模式做了分析和分享,当涉及其它应用模式时可具体问题具体分析,只要弄清原因了也就不难灵活应对。

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

    关注

    116

    文章

    5894

    浏览量

    226605
  • STM32
    +关注

    关注

    2313

    文章

    11195

    浏览量

    374673
  • 定时器
    +关注

    关注

    23

    文章

    3373

    浏览量

    124565

原文标题:PWM输出第一个脉冲宽带异常的话题

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于冷却的话题:手动控制 5V PWM 风扇,通过脚本控制,并通过内核自动控制

    谈谈第一组,并与您起探讨温度调节 PWM 控制的可能性。 那些关心冷却的人可能还会发现以下话题很有趣:VisionFive 2 的热安全性如何? 不要提高期望太高,使用我喜欢的
    发表于 03-18 07:13

    图文学习PWM,怎么输出直流信号?

    PWM脉冲宽度调制的意思,是周期内的高电平时间与周期时间之比,图3-9 所示,它与傅里叶变换有不解之缘。
    的头像 发表于 03-12 18:48 1736次阅读
    图文学习<b class='flag-5'>PWM</b>,怎么<b class='flag-5'>输出</b>直流信号?

    脉冲宽度调制技术详解,如何学习

    脉冲宽度调制(Pulse Width Modulation,简称PWM)是种通过改变脉冲信号的宽度来控制模拟电路的技术。这种技术利用数字信号来控制模拟电路,通过调节
    的头像 发表于 02-02 12:07 554次阅读
    <b class='flag-5'>脉冲</b>宽度调制技术详解,如何学习

    IEEE 802.11af 与空白频谱无线技术的话题

    IEEE 802.11af 与空白频谱无线技术的话题
    的头像 发表于 12-14 15:12 1952次阅读

    如何通过PWM脉冲控制电机?

    领域。 PWM脉冲脉冲宽度调制技术,通过调节脉冲的高低电平时间比例来控制电路的平均电平值,来对
    发表于 11-28 06:58

    案例分享| PPLN驱动的宽带量子合成器:实现超快压缩光脉冲源的关键突破

    (BroadbandQuantumSynthesizer,BQS)便是其中之,旨在推进超快量子光学的前沿,其目的是开发世界上第一个宽带压缩光脉冲封装源,这是对下
    的头像 发表于 11-27 17:11 1407次阅读
    案例分享| PPLN驱动的<b class='flag-5'>宽带</b>量子合成器:实现超快压缩光<b class='flag-5'>脉冲</b>源的关键突破

    Linux 下交叉编译实战:跑起来你的第一个 STM32 程序

    跑起来你的第一个STM32程序。、准备工作在开始之前,需要准备:1、Linux开发环境Ubuntu、Debian或其他主流发行版都可以。2、ARMGCC交叉编译工具
    的头像 发表于 11-24 19:04 1072次阅读
    Linux 下交叉编译实战:跑起来你的<b class='flag-5'>第一个</b> STM32 程序

    文带你读懂“脉冲输入输出模块”

    在自动化生产的世界里,传感器、执行器、控制器每天都在“对话”。可问题是,它们说的语言千奇百怪——有的输出电压信号,有的传输电流信号,还有的发出连串高速脉冲。如果没有“翻译官”,系统就乱了套。 而
    的头像 发表于 11-24 17:10 1235次阅读
    <b class='flag-5'>一</b>文带你读懂“<b class='flag-5'>脉冲</b>输入<b class='flag-5'>输出</b>模块”

    **CW32L012****开发评估板的第一个程序**

    CW32L012****开发评估板的第一个程序 最近以15.99在CW32生态社区入手了这块CW32L012开发评估板,我迫不及待的烧录进电灯程序,看看这块板子是否是正常的,能否满足我后面的学习
    发表于 11-22 00:09

    舵机PWM信号介绍!

    舵机 PWM 信号介绍 PWM(Pulse Width Modulation,脉冲宽度调制)信号是舵机的核心控制方式,其通过脉冲的宽度变化来精确指令舵机
    的头像 发表于 08-22 10:59 2594次阅读

    种基于PWM的电压输出DAC电路设计

    对实际应用中的脉宽调制(PWM)波形的频谱进行了理论分析,指出通过低通滤波器可以把PWM 调制的敷模转换信号解调出来,实现从PWM到DA
    发表于 08-04 14:58

    PWM逆变器的不同调制方法对比

    PWM脉冲宽度调制(Pulse Width Modulation)的简称。由于PWM逆变器的交流侧只能输出不同的电平而非连续的正弦波,因此需要采用
    的头像 发表于 07-16 14:00 4426次阅读
    <b class='flag-5'>PWM</b>逆变器的不同调制方法对比

    comp输出用于tim1刹车,消隐源和pwm输出是不是得是同一个TIM呀?

    那不是定时器的话 怎么能保证COMP1的消隐触发同步呢?假设pwm输出是tim1_ch2,那么我消隐源可以选tim4_oc3?是不是ti
    发表于 06-05 06:10

    comp输出用于tim1刹车,消隐源和pwm输出是不是得是同一个TIM呢?

    那不是定时器的话 怎么能保证COMP1的消隐触发同步呢?假设pwm输出是tim1_ch2,那么我消隐源可以选tim4_oc3?是不是ti
    发表于 05-14 08:14

    经栈桥整流后光耦输出异常,是什么原因?

    使用51单片机做一个简单的过零检测电路,市电经栈桥整流后进入光耦,输出端接上拉电阻 理论上应该得到周期为10ms(市电周期20ms)的脉冲波,但实际得到的如附件所示,波形错误 怀疑栈桥整流有误,于是
    发表于 05-08 15:21