STM32定时器的输出比较功能——输出PWM波形

  • 输出比较OC(Output Compare)
  • 输入捕获IC(Input Capture)
  • 输入捕获和输出比较单元CC(Capture / Compare)

输出比较模块的最主要功能:通过比较CNT(时基单元里的计数器,计数自增)和CCR寄存器(比较捕获寄存器,给定值)的关系,来对输出电平进行置1,置0或翻转的操作,用于输出一定频率和占空比的PWM波形

每个高级定时器和通用定时器都拥有4个输出比较通道,且高级定时器的前三个通道额外拥有死区生成和互补输出功能

什么是PWM(Pulse Width Modulation脉冲宽度调制)波形:

  1. 可以通过对一系列脉冲的宽度进行调制,来有效地获得所需要的模拟参量,常应用于电机控速等领域。可以等效实现模拟信号的输出
  2. 呼吸灯:按理来说LED只有完全亮和完全灭两种状态,但通过PWM波形可以调控LED点亮熄灭的频时间比例,就可以让LED呈现不同的亮度级别
  3. 应用场景必须是一个惯性系统
  4. 重要参数:
      • 频率 = 1 / TS。TS指一个高低电平变换周期的时间。频率越快,频率值越小,等效模拟的信号越平稳,性能开销越大。
      • 占空比 = TON / TS。TON指高电平时间,TS是周期时间。高点品之于整个周期时间的比例。占空比决定了PWM等效出来的模拟电压大小,占空比越大,等效的模拟电压就越趋近于高电平
      • 分辨率 = 占空比变化步距。有的步距只能是1%,2%,3%这样以1%的步距跳变,则分辨率就是1%。也就是占空比的精细程度。例如LED的分辨率为1%即说明LED的亮度是1%亮,2%亮这样一直到100%亮

定时器的输出比较模块

 输出模式控制器里的执行逻辑:输入CNT和CCR的大小关系,输出REF的高低电平  

 

  • 冻结状态适用于:正在输出PWM波,突然想暂停一下输出,可以设置这个模式,且高低电平维持暂停时刻状态,保持不变
  • 有效电平 = 高电平,无效电平  = 低电平
  • 匹配时电平翻转模式:用于输出一个频率可调,占空比始终为50%的PWM波形。例如设置CCR = 0,那么每次CNT更新清零的时候都会产生一次CNT = CCR的事件,电平翻转。每更新两次输出为一个周期,且高电平和低电平时间始终相等,即占空比始终为50%。改变定时器更新频率时,输出波形的频率也会随之改变。输出波形的频率 = 更新频率 / 2。

  • 强制为无效电平和强制为有效电平:类比冻结模式,可以在暂停期间保持低电平或者高电平
  • PWM模式1 和 PWM模式2:用于输出频率和占空比都可以调的PWM波形(通过设置CCR和重装值来设定占空比了)。
  • 输出模式可以设置极性,最终输出前也可以设置极性

PWM基本结构(以PWM模式1为例)

 其中:黄线为重装值ARR,控制输出频率;红线为CCR值,决定占空比。配置好时基单元后计数器CNT开始自增,数值达到重装值ARR后溢出清零。将不断变化的计数器CNT和设定的比较器CCR进行比较,逻辑如上图绿字所示,输出变化的高低电平。

参数计算

PWM频率:Freq = CK_PSC / (PSC + 1) / (ARR + 1)。PWM的一个周期始终对应计数器的一个溢出更新周期,故PWM的频率就等于计数器的更新频率

PWM占空比:Duty = CCR / (ARR + 1)。高电平时间 = (CCR > CNT)时间 = CCR值。以上图为例,0~29等于30个数。

PWM分辨率(占空比变化的步距):Reso = 1 / (ARR + 1)。CCR的取值范围是(0,ARR + 1),ARRA越大,CCR的范围越大,对应的分辨率越大

目标:产生一个频率为1KHz,占空比为50%,分辨率为1%的PWM波形

 

posted @ 2023-04-18 21:00  整点薯条拯救一切  阅读(1513)  评论(0编辑  收藏  举报