****TIM输出比较(TB6612&PWM初遇)

363 阅读5分钟

1.输出比较

介绍:OC(Output Compare)输出比较

  • 输出比较可以通过比较CNT和CCR(捕获/比较寄存器)的关系,来对输出电平进行置1,置0或反转的操作,用于输出一定频率或占空比的PWM波形
  • 每个高级定时器和通用定时器都拥有4个输出比较通道
  • 高级定时器的前3个通道额外拥有死区生成和互补输出的功能

2.PWM简介

image.png

PWM可以实现由数字转模拟

  • 必须是在具有惯性的系统中
    • Ts代表一个高低电平变换周期的时间,周期的倒数就是频率
    • Ton代表高电平的时间,Ts代表一个周期的时间
    • 占空比决定了PWM等效出来的模拟电压的大小,占空比越大,等效模拟电压越趋近高电平

3.输出比较通道线路图

1.通用定时器

image.png

  • 左边就为,CNT和CCR1第一路输出比较寄存器进行比较,当CNT>=CCR1时,就会给输出模式控制器一个信号,然后 输出模式控制器就会改变oc1re(oc1reference参考信号),然后REF信号,第一种可以走上面一路,映射到主模式控制器,TRGO上;第二种,主要还是去下一路,这是一个极性选择
    • 当置0时,电平不反转,进来啥样,出去啥样
    • 值1 时,电平反转
  • 上面的ETRF没用
输出比较模式

image.png

  • 冻结模式:CNT,CRR无效,REF保持原状态。可用于,当正在输出PWM波,突然像暂停一会输出,就可以设为这个模式
  • 匹配时电平反转:可以设置为占空比为50%的PWM波
  • 主要使用PWM模式1和PWM模式2,设置灵活,有两个极性选择

2.高级定时器(仅作了解)

image.png

  • TIM1 是一个高级定时器,支持更复杂的功能,如死区时间生成、PWM 输出、互补输出等。这使得 TIM1 更适合用于控制电机和其他需要精确时间控制的应用。
  • TIM1 的输出比较模式
    • TIM1 支持多种输出比较模式,包括 PWM 输出、单脉冲模式、互补输出等。
    • TIM1 可以配置为在计数器达到比较值时产生中断或改变输出引脚的状态。
    • TIM1 还支持死区时间生成,这对于控制 H 桥电路(如电机驱动)非常重要。
  • TIM1 支持互补输出,这意味着它可以同时控制两个输出引脚(如 PWM 输出的高侧和低侧),并在它们之间生成死区时间。这对于电机控制和其他需要精确控制的应用非常重要。
  • 其他定时器 不支持互补输出功能。

4.向上计数模式和向下计数模式以及中央对其模式的区别

屏幕截图 2024-11-15 230622.png

  • 一般都使用线上计数模式,也即计数值< CCR时,有效

5.PWM基本结构

image.png

  • 仍然使用时基单元,但是时基单元后的申请中断不需要

  • 右上图:蓝色线是CNT ,红色线是CCR,黄色线是ARR
    绿色线是输出。 PWM占空比受CCR值变化,CCR设置值高,占空比就高,反之亦然。

参数计算

image.png

  • CK_PSC=72MHz;
  • PSC:预分频系数
  • ARR:自动重装计数器

详细参数介绍:TIM定时器定时中断 1.TIM简介 为什么在72MHz计数时钟下可以实现最大59.65s的定时? 72M/65536/ - 掘金 (juejin.cn)

6.外设

1.舵机

image.png

image.png

  • 舵机使用:先看手册看舵机的高电平对应时间,比如这个就是(500 ~ 2500us),而我们通常使用的舵机,一般使用50HZ(周期20ms)的PWM控制。因此便可以的出占空比是 (500~2500)us/20ms==2.5%12.5%的占空比对应0180度

image.png

2.直流电机

image.png

image.png

VM电压和电机的额定电压保持一致,如是5V的电机,就接5V VCC逻辑电平输入端要和控制器(stm32)的电源保持一致 输入:PWMA 、AIN2、 AIN1 输出AO1、AO2,控制一个电机 输入:PWMB 、BIN2、 BIN1 输出BO1、BO2,控制一个电机 STBY引脚,是待机控制引脚,接GND,芯片处于待机状态,接逻辑电源VCC,芯片正常工作。如不需要待机模式,直接接Vcc3.3V,如果需要可以任意接一个GPIO,给高低电平就可以控制。

STBY低电平待机,高电平工作 IN1 IN2 高电平 PWM高或低 STBY高 OA1 OA2低电平 制动 IN1 IN2 低电平 PWM高 STBY高 OA1 OA2低电平 停止

IN1 低电平 IN2 高电平 PWM高 OA1 低电平 OA2高电平 反转 IN1 低电平 IN2 高电平 PWM低 OA1 低电平 OA2低电平 制动

电机转还是制动取决于PWM,PWM高或低,电机转或制动

6.代码

1.PWM驱动LED呼吸灯

  • 第一步RCC开启时钟
  • 第二步 配置时基单元
  • 第三步 配置输出比较单元
  • 第四步 配置GPIO,把pwm对应的gpio口,初始化为**复用推免输出 **
  • 第五步,运行控制,启动计数器
重映射(采用AFIO函数)

image.png