输出比较简介
OC(Output Compare)输出比较可以通过比较CNT和CCR寄存器值的关系,对输出电平进行置0、置1或反转的操作,用于输出一定频率和占空比的PWM波形。
IC Input Compare 输入捕获;CC Capture/Compare 输入捕获和输出比较的单元
输入捕获和输出比较是共用寄存器的。当使用输入捕获时,就是捕获寄存器,当使用输出比较时,就是比较寄存器。通用计数器四个通道有各自的CCR寄存器,但共用一个CNT计数器。高级定时器的前三个输出比较还额外具有死区生成和互补输出的功能,是用于驱动三相无刷电机等类似功能的。本篇先讲述通用定时器功能。
左边是CNT和CCR比较的结果,右边是输出比较电路,最后通过TIM_CH1输出到GPIO引脚上,下面还有三个同样的单元,分别输出到CH2、 CH3、 CH4。左边是CNT计数器和CCR第一路的捕获/比较寄存器,它俩进行比较,当CNT>CCR1,或者CNT=CCR1时,就会给输出模式控制器传一个信号,然后输出模式控制器就会改变它输出OC1REF的高低电平。
REF信号实际上就是指信号的高低电平,reference。 参考信号ETRF输入,这是定时器的一个小功能,一般不用,需要了解。REF信号可以前往主模式控制器,REF映射到主模式的TRGO输出上去,不过REF的主要去向还是下面这一路。
CC1P是一个极性选择,对进来的信号进行1翻转或0不翻转。输出使能电路,选择要不要输出,最后就是OC1引脚,也就是CH1通道的引脚。接下来还要看输出模式控制器,具体是怎么工作的。什么时候给REF高电平,什么时候给REF低电平。
输出比较模式
输出比较的8种模式,也就是输出模式控制器里面的执行逻辑。模式控制器的输入是CNT和CCR的大小关系,输出是REF的高低电平,里面可以选择多种模式来更加灵活地控制REF输出,这个模式可以通过寄存器OC1M[2:0]来进行配置,需要哪个模式就选哪个模式。
冻结模式:维持原状态,此刻CNT和CCR就根本没有用。
匹配时置有效电平、置无效电平、和匹配时电平翻转模式:这个有效电平和无效电平,一般时高级定时器里面的说法,是和关断、刹车这些功能配合表述的,它说的比较严谨,所以叫有效电平和无效电平。 为了方便理解,可以直接认为,置有效电平就是置高电平,置无效电平就是置低电平,这三个模式都是CNT=CCR时执行操作。
这些模式就可以用作波形输出,比如相等时电平翻转这个模式,可以方便地输出一个频率可调,占空比始终为50%的PWM波形。两个相等时置高电平和低电平,是一次性的,置完高或低电平后,就不管事了。
强制为无效电平和强制为有效电平:相当于冻结模式下可以自主选择高低电平。
PWM1模式和PWM2模式
主要使用的模式。可以用于输出频率和占空比都可调的PWM波形,使用PWM模式与极性中的一种就可以了。此处使用PWM模式1,并且是向上计数。
PWM基本结构
PWM频率 Freq=CK_PSC/(PSC+1)/(ARR+1);
PWM占空比: Duty=CCR/(ARR+1)
PWM分辨率: Reso=1/(ARR+1)
把框里的东西去掉,就跟通用定时器的电路是一样的。
框里电路的作用:需要结合外部电路理解如果有三个H桥电路这样的推挽电路,就可以用于驱动三相无刷电机了。对于这个电路,如果直接用单片机来控制,那就需要两个控制极,并且这两个控制极电平是相反的,也就是互补,因为上管导通,下管就必须断开,同理下管导通,上管必须断开,那就知道了外围电路的需求。
再来理解内部电路结构,首先OC1和OC1N是两个互补的输出端口,分别控制上管和下管的导通和关闭,然后是在切换上下管导通状态时,如果在上管关断的瞬间,下管立刻打开。可能会由于器件的不理想,上管还没有完全关断,下管就已经导通了,出现了短暂的上下管同时导通的现象。这会导致功率损耗,引起器件发热,所以在这里为了避免这个问题,就有了死区生成电路,它会在上管关闭的时候,延迟一小段时间,再导通下管,下管关闭的时候,延迟一小段时间,再导通上管,这样就可以避免上下管同时导通的现象了。
PWM简介

PWM应用场景必须是一个惯性系统,低电平时器件并不会立马停止,而是有一定的惯性,过一会才会停。高低电平跳变的数字信号,可以等效为中间虚线所表示的模拟量的。PWM频率越高,那它等效模拟的信号就越平稳,同时性能开销就越大,一般PWM的频率在几KHz到几十KHz。如果占空比只能以1%,2%,3%等这样以1%的步距跳变,那它的分辨率是1%,分辨率就是占空比变化的精细程度。按照项目需求设定PWM的频率和分辨率。