OC(Output Compare)输出比较
输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形
每个高级定时器和通用定时器都拥有4个输出比较通道
高级寄存器的前3个通道额外拥有死区生成和互补输出功能
CNT:CNT计数器
CCR:捕获/比较x寄存器
当CNT>CCR1,或者CNT=CCR1时,就会给输出模式控制器传递一个信号,会改变它输出oc1ref的高低电平 ,这个ref信号可以前往主模式控制器,不过ref主要去向还是下面一路。
极性选择:就是选择是否要翻转高低电平。给CC1P寄存器写入0,信号就会往上走,使电平信号不翻转;给CC1P寄存器写入1,信号就会往下走,信号通过一个非门取反,输出一个翻转后的信号。
输出使能电路:选择是否要输出。OC1引脚,是CH1通道的引脚
模式 | 描述 |
---|---|
冻结 | CNT=CCR时,REF保持为原状态 |
匹配时置有效电平 | CNT=CCR时,REF置有效电平 |
匹配时置无效电平 | CNT=CCR时,REF置无效电平 |
匹配时电平翻转 | CNT=CCR时,REF电平翻转 |
强制为无效电平 | CNT与CCR无效,REF强制为无效电平 |
强制为有效电平 | CNT与CCR无效,REF强制为有效电平 |
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置无效电平 |
冻结模式:不管CNT和CCR谁大谁小,REF保持不变,维持上一个状态。比如正在输出PWM波,突然想暂停一会儿输出,就可以设置成这个模式,一旦切换为冻结模式,输出就暂停了,并且高低电平也维持在暂停时刻的状态。
为方便理解,可以将有效电平理解为高电平,无效电平理解为低电平。
PWM脉冲宽度调制
在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常用于电机控速等领域
PWM参数:
频率 =
占空比 =
分辨率 = 占空比变化步距
以向上计数,PWM模式1为例
右上角图像:红色线为CCR,蓝色线为CNT,黄色线为ARR,绿色线为输出
参数计算:
PWM频率:Freq = CK_PSC / (PSC + 1) / (ARR + 1)
PWM占空比:Duty = CCR / (ARR + 1)
PWM分辨率:Reso = 1 / (ARR + 1)
舵机简介
舵机是一种根据PWM信号占空比来控制输出角度的装置
输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms
直流电机及驱动简介
直流电机是一种将电能转化为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转。
直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作
TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向