TIM输出比较
1. 输出比较简介
OC(Output Compare)输出比较。
输出比较可以通过CNT(CNT计数器)与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形。
CNT计数器是正向计数器。它只能正向累加。
CCR是捕获/比较寄存器,通常是我们给的一个固定值,正如其名,捕获数值后比较数值,这样就可以捕获CNT的数值并进行比较,看是大了、等于还是小了。
TIM输出比较就是这样来决定置1、置0或翻转输出电平。
每个高级定时器和通用定时器都拥有4个输出比较通道。
高级定时器的前三个通道额外拥有死区生成和互补输出的功能。
2. 通用定时器
使用输入捕获时,CCR是作为捕获寄存器;使用输出比较时,CCR是作为比较寄存器。
3. PWM简介
PWM(Pulse Width Modulation)是脉冲宽度调制。
在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域。
PWM参数:
- 频率
- 占空比 =
- 分辨率 = 占空比变化步距
当上面电平时间长一点,下面的短一点的时候,上面的模拟量占主导;反之则是下面的模拟量占主导。
是高电平的时间,是一个时钟周期的时间。为占空比,指的是高电平时间占整个周期的比例。用百分比表示。
占空比决定了等效的模拟电压的大小。占空比越大,等效的模拟电压就趋近于高电平;越小,等效的模拟电压就趋近于低电平。
电机工作也是一个惯性系统。所以直流电机也是可以用PWM调速的。
下图是
输入是CNT(CNT计数器)与CCR寄存器值的关系,输出是REF的高低电平。
4. 输出比较模式
模式 | 描述 |
---|---|
冻结 | CNT=CCR时,REF保持为原状态(可用于定速巡航) |
匹配时置有效电平 | CNT=CCR时,REF置有效电平 |
匹配时置无效电平 | CNT=CCR时,REF置无效电平 |
匹配时电平翻转 | CNT=CCR时,REF电平翻转 |
强制为无效电平 | CNT与CCR无效,REF强制为无效电平(可用于暂停波形输出) |
强制为有效电平 | CNT与CCR无效,REF强制为有效电平(可用于暂停波形输出) |
PWM模式1 | 向上计数:CNT<CCR时,REF置有效电平, CN>=CCR时,REF置无效电平;向下计数:CNT>CCR时,REF置无效电平, CN<=CCR时,REF置有效电平 |
PWM模式2 | 向下计数:CNT<CCR时,REF置无效电平, CN>=CCR时,REF置有效电平;向下计数:CNT>CCR时,REF置有效电平, CN<=CCR时,REF置无效电平 |
改变PWM模式1和2,只是改变了REF电平的极性。使用PWM1的正极性和PWM2的反极性是一样的效果。
5. PWM基本结构
蓝色线是CNT的值,黄色线是ARR的值,蓝色线从0开始自增,一直增到ARR,也就是99,之后清零继续自增。
红色线就是CCR,是我们预设的值。绿色线是电平大小。
当CNT<CCR时,置高电平;CNT>=CCR时,置低电平。CNT溢出时,清零,重新置高电平。
进一步分析,我们发现,电平的占空比是受CCR的值影响的。如果我们的CCR设置的低一些,占空比就小一些;如果CCR设置的高一些,占空比就大一些。
REF是一个频率可调,占空比也可调的PWM波形。最终 经过极性选择、输出使能,通向GPIO口。
6. 参数计算
我们回到节5的图。
- PWM频率:
- 占空比:
- 占空比变化步距:
我们按高电平第一次回落的点算,此时占空比为
CCR的范围取决于ARR,因为CCR去到和ARR差不多甚至相等的时候,占空比就是百分之百,这样便失去了意义。所以CCR需要始终小于ARR。
变化步距是越小越好的,CCR越大越好。这样代表其变化越细腻。
7. 输出比较通道(高级)
为了更好地切换MOS管开关状态,有了死区生成电路。
8. 舵机简介
舵机是一种根据输入PWM信号占空比来控制输出角度的装置。
输入PWM信号要求:周期为20ms,高电平宽度为0.5ms-2.5ms。
PWM在此图中是当一个通信协议来用。
9. 舵机硬件电路
PWM信号线直接接到STM32引脚上就可以,比如PA0。舵机内部有驱动电路。