【自学嵌入式:stm32单片机】TIM输出比较
TIM输出比较
OC(Output Compare)输出比较
- 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形
- 每个高级定时器和通用定时器都拥有4个输出比较通道
- 高级定时器的前3个通道额外拥有死区生成和互补输出的功能
有关PWM波形,详见:https://www.cnblogs.com/qinruiqian/p/19022573
输出比较通道
输出比较通道(高级定时器)

上图是高级定时器前三个通道的输出比较部分电路
OC1和OC1N是互补的输出端口,死区发生器会延迟一段时刻,防止直通短路。
输出比较通道(通用定时器)


如上图,左边就是CNT计数器和CCR1第一路的捕获/比较寄存器,它俩进行比较,当CNT>CCR1,或者CNT=CCR1时,就会给这个输出模式控制器传一个信号,然后输出模式控制器就会改变它输出OC1REF的高低电平,REF信号实际上就是指这里信号的高低电平,REF是reference的缩写,意思是参考信号。


如上图,上面这里还有个ETRF输入,这是定时器的一个小功能,这个REF信号可以前往主模式控制器,可以把这个REF映射到主模式的TRGO输出上去,不过REF的主要去向还是下面这一路,通过下面这一路到达下图这里:

这是一个极性选择,给这个寄存器写0,信号就会往上走,就是信号电平不翻转,输入的什么样,输出还是什么样,写1的话,信号就会往下走,就是信号通过一个非门取反,那输出信号就是输入信号的翻转信号,这就是极性选择,就是选择高低电平是否反转一下。

如上图,最后就是OC1引脚,这个引脚就是CH1通道的引脚
输出比较模式
下表就是输出比较的8种模式,也是输出模式控制器里面的执行逻辑,这些模式可以通过寄存器去配置
| 模式 | 描述 | 
|---|---|
| 冻结 | CNT=CCR时,REF保持为原状态,比如正在输出PWM波,突然想暂停一会儿输出,就可以设置成这个模式 ,一旦切换为冻结模式,输出就暂停了,并且高低电平也维持为暂停时刻的状态,保持不变 | 
| 匹配时置有效电平 | CNT=CCR时,REF置有效电平 ,可以简单理解为置高电平 | 
| 匹配时置无效电平 | CNT=CCR时,REF置无效电平,可以简单理解为置低电平 | 
| 匹配时电平翻转 | CNT=CCR时,REF电平翻转 ,此模式可以输出一个频率可调,占空比始终为50%的PWM波形,比如设置CCR为0,那CNT每次更新清0时,就会产生一次CNT=CCR的事件,这就会导致输出电平翻转一次,每更新两次,输出为一个周期,当改变定时器更新频率时,输出波形的频率也会随之改变,它俩的关系是输出波形的频率=更新频率/2 | 
| 强制为无效电平 | CNT与CCR无效,REF强制为无效电平,暂停PWM波形输出,并且在暂停期间保持低电平 | 
| 强制为有效电平 | CNT与CCR无效,REF强制为有效电平,暂停PWM波形输出,并且在暂停期间保持高电平 | 
| PWM模式1 | 向上计数:CNT<CCR时,REF置有效电平,CNT≥CCR时,REF置无效电平 向下计数:CNT>CCR时,REF置无效电平,CNT≤CCR时,REF置有效电平 | 
| PWM模式2 | 向上计数:CNT<CCR时,REF置无效电平,CNT≥CCR时,REF置有效电平 向下计数:CNT>CCR时,REF置有效电平,CNT≤CCR时,REF置无效电平 | 
PWN模式1,2都可以输出占空比都可调的PWM波形,一般我们都用向上计数,这俩模式大小关系条件一样,但是输出的波形是反过来的
PWM基本结构

和之前内容不同CNT和ARR之间的更新事件的中断申请不需要了,
上图是PWM模式1,其占空比受CCR值调控,CCR高一些,占空比大,CCR低一些,占空比越小
参数计算

- PWM频率: Freq = CK_PSC / (PSC + 1) / (ARR + 1)(也是计数器的更新频率)
- PWM占空比: Duty = CCR / (ARR + 1)
- PWM分辨率: Reso = 1 / (ARR + 1)
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号