打印
[应用相关]

MCU是怎样输出PWM波形的

[复制链接]
702|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
feiqi1|  楼主 | 2018-1-8 22:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MCU是怎样输出PWM波形的


在电力电子控制中,PWM几乎是无处不在的,不论是AC/DC,DC/AC,还是DC/DC,都涉及到PWM,PWM具体是什么可以自行百度,网上资料非常多,这里就不再赘述。在电力电子变换里面,PWM波形生成有两种方式,模拟和数字,专用的模拟IC不在此文探讨范围之内,本文主要介绍怎样用MCU来生成PWM。
   在所有的MCU里,都会有Timer定时器,PWM就是通过这个外设生成的,基本的原理可以通过下图来解释。
         

   计数器TIM_CNT对输入时钟进行计数,比如输入时钟是1MHz(50%占空比方波),对时钟的每一个上升沿(或者下降沿)从数字0开始计数,计数到TIM_ARR=999,一共计数1000个,经历的时间是1000*1/1000000= 1ms,也就是1kHz,计数到999之后计数器TIM_CNT归零,重新从0开始计数到999,往复循环,这样就形成了1kHzPWM了。                 
   那怎样做到一定的占空比呢?这很简单,设定一个值TIM_CCR,比如199,计数器TIM_CNT从0计数到199,一共200次计数,在TIM_CNT计数值在0-199,PWM输出引脚输出高电平(可以人为设定),计数器达到199,电平翻转到低电平,之后IM_CNT计数999后归零又恢复到高电平,这样也就形成了200/1000= 20%的PWM了。对这个比较值进行设置就可以形成不同占空比的PWM了,这也是最基本的PWM波形生成方法了,从上面介绍的,可以看出,TIM_ARR的值决定了PWM的频率,TIM_CCR的值决定了PWM的占空比,有了这两个值就可以很容易地生成PWM了。

沙发
androidbus| | 2018-1-8 22:25 | 只看该作者
都是通过定时器实现的。

使用特权

评论回复
板凳
litengg| | 2018-1-8 22:26 | 只看该作者

得根据MCU惊醒区分。

使用特权

评论回复
地板
qiangweii| | 2018-1-8 22:30 | 只看该作者
占空比都能通过TIMER实现。

使用特权

评论回复
5
shashaa| | 2018-1-8 22:30 | 只看该作者
可以使用定时器中断

使用特权

评论回复
6
sourceInsight| | 2018-1-8 22:34 | 只看该作者

PWM都有外设可以实现。

使用特权

评论回复
7
boy1990| | 2018-1-8 22:35 | 只看该作者
或者使用PWM功能实现信号输出。

使用特权

评论回复
8
yiyigirl2014| | 2018-1-9 13:58 | 只看该作者
是个数字硬件电路实现的。

使用特权

评论回复
9
dingbo95| | 2018-1-10 12:40 | 只看该作者
STM32直接用库函数就可以输出PWM,简单

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

424

主题

1616

帖子

1

粉丝