目录
一、PWM介绍
Ⅰ.什么是PWM
脉宽调制(PWM,Pulse Width Modulation)
是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
通俗的说,就是控制在一个周期内,控制高电平多长时间,低电平多长时间(前面文章种有说过IO口就只有两种状态,0和1,对应就是0和5V或者0和3.3V)。也就是说通过调节高低电平时间的变化来调节信号、能量等的变化。
Ⅱ.PWM两个核心要点
频率
:每秒钟信号从高电平到低电平再回到高电平的次数,为一个PWM波周期的倒数。
占空比
:指高电平持续时间比一个周期持续的时间。可以通过控制占空比,来控制输出的等效电压。
所以对于方波的话,频率和占空比确定后就可以确定一个波
Ⅲ.PWM工作原理
SMT32F1系列共有8个定时器:高级定时器(TIM1、TIM8);通用定时器(TIM2、TIM3、TIM4、TIM5);基本定时器(TIM6、TIM7)。
STM32的每个通用定时器都有独立的4个通道可以用来作为:输入捕获、输出比较、PWM输出
、单脉冲模式输出等。
STM32的定时器除了TIM6和TIM7(基本定时器)之外,其他的定时器都可以产生PWM输出。其中,高级定时器TIM1、TIM8可以同时产生7路PWM输出。
下图为向上计数模式:
🎈在PWM输出模式下,除了CNT(计数器当前值)、ARR(自动重装载值)之外,还多了一个值CCRx(捕获/比较寄存器值)。
🎈当CNT小于CCRx时,TIMx_CHx通道输出低电平;
🎈当CNT等于或大于CCRx时,TIMx_CHx通道输出高电平。
PWM的一个周期:
🎈定时器从0开始向上计数
🎈当0-t1段,定时器计数器TIMx_CNT值小于CCRx值,输出低电平
🎈t1-t2段,定时器计数器TIMx_CNT值大于CCRx值,输出高电平
🎈当TIMx_CNT值达到ARR时,定时器溢出,重新向上计数…循环此过程
Ⅳ.PWM的工作模式
PWM模式1(向上计数)
:计数器从0计数加到自动重装载值(TIMx_ARR),然后重新从0开始计数,并且产生一个计数器溢出事件
PWM模式2(向下计数)
:计数器从自动重装载值(TIMx_ARR)减到0,然后重新从重装载值(TIMx_ARR)开始递减,并且产生一个计数器溢出事件
Ⅴ.计算频率和占空比
(1)PWM频率:
Fpwm =Tclk / ((arr+1)*(psc+1))
(单位:Hz)
其中,arr 是计数器值,psc 是预分频值
(2)占空比:
duty circle = TIM3->CCR1 / arr
(单位:%)
其中,TIM3->CCR1 用户设定值
(3)实例说明