STM32——TIM输出比较、PWM(十)

一、输出比较及PWM简介

输出比较

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

PWM

•PWM(Pulse Width Modulation)脉冲宽度调制
•在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域
•PWM参数:

频率 = 1 / TS 占空比 = TON / TS 分辨率 = 占空比变化步距

二、PWM的基本结构

时基单元(含 CNT、ARR)------ 提供周期性计数时间轴

时基单元的核心是计数器CNT+ 自动重装值ARR,为 PWM 生成提供固定的周期节奏CNT从 0 开始,随定时器时钟自动向上累加,数到ARR后立即归 0,循环执行0→ARR→0 的计数过程;这一完整计数循环,就是一个 PWM 周期,是后续电平切换的时间基础。

比较器 ------ 执行CNT 与 CCR 的实时比对

比较寄存器CCR预存设定的固定阈值,硬件比较器以定时器时钟为节拍,在 CNT 计数的每一个时刻 ,将实时变化的 CNT 值固定的 CCR 值 做持续、自动的大小比较,实时输出CNT<CCRCNT≥CCR的比对结果,为电平切换提供判定依据。

执行电平切换规则(PWM 生成的核心逻辑)

向上计数为核心规则(图中核心),根据比较器的比对结果,直接控制输出电平的切换:

  • 当比对结果为CNT<CCR 时,输出有效电平
  • 当比对结果为CNT≥CCR 时,输出无效电平;随 CNT 完成 0→ARR→0 的循环,电平按此规则重复切换,形成连续的 PWM 波形。

极性选择 ------反转 / 保持原始 REF 电平

极性选择是原始 REF 波形 做最后一次电平逻辑处理,是可配置的可选环节,核心作用为灵活调整输出电平的有效 / 无效对应关系

  • 选择不反相:最终输出的 PWM 电平与 REF 原始波形完全一致,即 REF 的有效电平 = 最终输出有效电平,REF 的无效电平 = 最终输出无效电平;
  • 选择反相:最终输出的 PWM 电平与 REF 原始波形完全相反,即 REF 的有效电平 = 最终输出无效电平,REF 的无效电平 = 最终输出有效电平。

三、输出比较

输出比较通道(通用)

捕获和比较寄存器是同一个

  1. 输出模式控制器 这是核心决策单元,它接收计数器(CNT)和比较寄存器(CCR1)的比较结果(CNT > CCR1CNT = CCR1),并根据 TIMx_CCMR1 寄存器里的 OC1M[2:0] 位配置,生成原始参考信号 OC1REF。这个信号决定了 PWM 的基础波形。

  2. 信号极性与选择

    • OC1REF 先经过一个反相器,再进入一个由 CC1PTIMx_CCER寄存器位)控制的 2 选 1 多路选择器。
    • CC1P=0 时直接输出 OC1REFCC1P=1 时输出反相后的信号,以此来控制 PWM 输出的极性。
  3. 输出使能电路 最终信号会经过由 CC1ETIMx_CCER寄存器位)控制的输出使能电路。只有当 CC1E=1 时,信号才能通过并最终从 OC1 引脚输出;CC1E=0 时,通道输出会被关闭。OC1 经过复用功能(AF) 路由后,到达具体的 GPIO 口。

  4. 主模式控制器接口 OC1REF 还会被送到主模式控制器,这可以用来触发其他定时器或外设,实现定时器同步等更复杂的功能。

四、舵机、直流电机、驱动芯片

舵机

•舵机是一种根据输入PWM信号占空比来控制输出角度的装置
•输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms

硬件电路

舵机内部能识别PWM的占空比,只需要输入相应的PWM就可以让它旋转指定角度。

直流电机及驱动

•直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转
•直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作
•TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向

  1. 方向控制(AIN1/AIN2 的电平组合)
  • 正转:AIN1=H,AIN2=L → AO1 输出高电平,AO2 输出低电平,电机两端形成正向电压差。

  • 反转:AIN1=L,AIN2=H → AO1 输出低电平,AO2 输出高电平,电机两端形成反向电压差。

  • 制动:AIN1=H,AIN2=H 或 AIN1=L,AIN2=L → AO1 和 AO2 输出相同电平,电机两端无电压差,实现快速刹车。

  • 停止:AIN1=L,AIN2=L 且 PWM=L → 电机无供电,自然停转。

  1. 速度控制(PWMA 的 PWM 占空比)
  • PWM 的占空比越高,电机两端的平均电压越高,转速越快;

  • 占空比越低,平均电压越低,转速越慢;

  • 当 PWM 为低电平时,电机无供电,停止转动。

相关推荐
海阔天空任鸟飞~7 小时前
蓝汛-BT897-添加按键提示音
c语言·单片机·蓝汛
yrx0203077 小时前
stm32单线串口(空闲中断+DMA接收+阻塞式发送)模式控制舵机
stm32·单片机·嵌入式硬件·单线串口
雾削木7 小时前
STM32HAL输入捕获定时器测量PWM频率和占空比
stm32·单片机·嵌入式硬件
FreakStudio7 小时前
一行命令搞定驱动安装!MicroPython 开发有了自己的 “PyPI”包管理平台!
python·stm32·单片机·嵌入式·arm·电子diy
forAllforMe7 小时前
基于STM32+LAN9252的ether CAT 开发环境搭建
stm32·单片机·嵌入式硬件
半空扫地僧一枚8 小时前
10期:转速模式 (Speed Mode) 和 扭矩模式 (Torque Mode)
单片机·嵌入式硬件·汽车
爱上珍珠的贝壳10 小时前
ESP32-S3-CAM:接MAX98357A+喇叭播放音频
嵌入式硬件·音频·esp32-s3·喇叭·max98357a
敬畏_上帝11 小时前
PCtolLCD2002完美版下载以及教程
单片机·嵌入式硬件
学嵌入式的小杨同学11 小时前
STM32 进阶封神之路(五):库函数移植全解析 —— 从底层原理到移植实操(含环境适配 + 报错解决)
vscode·单片机·嵌入式硬件·代理模式·智能硬件·pcb工艺·嵌入式实时数据库
天月风沙12 小时前
幻尔总线舵机测试板BusLinker V2.5 控制代码
单片机·嵌入式硬件·机器人·舵机