【STM32】TIM定时器输出比较

1 输出比较

1.1 输出比较简介

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

主要是用来输出PWM波形的,PWM波形又是驱动电机的必要条件。

这个CCR是共用的,当使用输入捕获时,它就是捕获寄存器;当使用输出比较时,它就是比较寄存器。在输出比较这里,这块电路会比较CNT和CCR的值,CNT计数自增,CCR是我们给定的一个值,当CNT大于CCR、小于CCR、等于CCR时,输出就会置1,置0,置1,置0,这样就可以输出一个电平不断跳变的PWM波形了。

1.2 PWM简介

PWM(Pulse Width Modulation)脉冲宽度调制

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

PWM参数:

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

1.3 输出比较通道

通用定时器的输出比较部分电路

对应的是

 最后通过TIMx_CH1输出到GPIO引脚上。

左边是CNT计数器和CCR1第一路的捕获/比较寄存器;它俩比较,当CNT > CCR1 或者 CNT = CCR1时,就会给输出模式控制器传一个信号,然后输出模式控制器就会改变它输出OC1REF(reference参考信号)的高低电平;接下来可以把OC1REF映射到主模式的TRGO输出上去;不过REF的主要去向还是走下面。

这是一个极性选择,给这个寄存器写0,信号就会往上走,就是信号电平不反转;写1的话,信号就会往下走,信号会通过一个非门取反,输出的信号就会发生反转。最后就是OC1引脚,这个引脚是CH1通道的引脚,在引脚定义中就可以具体知道是哪个GPIO了。

输出模式控制器的工作:输出比较模式,通过寄存器来配置。

模式

描述

冻结

CNT=CCR时(无效),REF保持为原状态

匹配时置有效电平

CNT=CCR时,REF置有效电平(高电平),一次性的

匹配时置无效电平

CNT=CCR时,REF置无效电平(低电平),一次性的

匹配时电平翻转

CNT=CCR时,REF电平翻转

强制为无效电平

CNTCCR无效,REF强制为无效电平。在暂停期间保持高电平

强制为有效电平

CNTCCR无效,REF强制为有效电平。在暂停期间保持低电平

PWM模式1

向上计数:CNT<CCR时,REF置有效电平,CNTCCR时,REF置无效电平

向下计数:CNT>CCR时,REF置无效电平,CNTCCR时,REF置有效电平

PWM模式2

向上计数:CNT<CCR时,REF置无效电平,CNTCCR时,REF置有效电平

向下计数:CNT>CCR时,REF置有效电平,CNTCCR时,REF置无效电平

(1)冻结模式:输出暂停;

(2)匹配时置有效电平、匹配时置无效电平、匹配时电平翻转:有效/无效电平一般是高级定时器的说法;简单理解有效电平是高电平,无效电平是低电平。

(3)PWM模式

PWM模式2是PWM模式1的取反。

1.4 PWM基本结构

 左上角是时基单元和控制部分,输出PWM暂时不需要中断。下面就是输出比较单元了,总共有4路。输出比较单元的最开始,是CCR捕获/比较寄存器,CCR是我们自己设定的,CNT不断自增运行,同时它俩还在不断比较,后面是输出模式控制器(PWM模式1)。

蓝色线是CNT的值,黄色线是ARR的值,CNT(蓝色线)从0开始自增,一直增到ARR的值,之后清零继续自增。在这个过程中再设置一条红线(CCR的值),之后再执行【CNT<CCR时,REF置有效电平;CNT≥CCR时,REF置无效电平】,下面绿色部分是输出。

CNT<CCR时,REF置有效电平;CNT≥CCR时,REF置无效电平。并且它的占空比是受CCR值调控的;如果CCR设置高一些,输出占空比就大一些。

1.5 参数计算

PWM频率:  Freq = CK_PSC / (PSC + 1) / (ARR + 1)

对应着计数器的一个溢出更新周期,PWM的频率等于计数器的更新频率。

PWM占空比:  Duty = CCR / (ARR + 1)

PWM分辨率:  Reso = 1 / (ARR + 1)

输出一个频率为1KHz,占空比可以任意调控,切分辨率为1%的PWM波形

Reso = 1 / (ARR + 1) = 1% =====》ARR = 99

Duty = CCR / (ARR + 1) = CCR / 100  =====》 CCR = [0, 100]

Freq = CK_PSC / (PSC + 1) / (ARR + 1) = 1000 =====》 CK_PSC / (PSC + 1) = 100000

1.6 舵机简介

舵机是一种根据输入PWM信号占空比来控制输出角度的装置

输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms

大概的执行逻辑:PWM信号输入到控制板,给控制板一个指定的目标角度,然后电位器会检测输出轴的当前角度;如果大于目标角度,电机就会反转;否则正转。最终使输出轴固定在指定角度。

1.6.1 舵机硬件电路

1.7 直流电机

直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转

直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作

TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向

1.7.1 硬件电路

看图和引脚说明,很清晰。

STBY引脚是待机控制引脚。如果接GND,芯片就不工作,处于待机状态;如果接逻辑电源VCC,芯片就正常工作。

看手册

强置输出模式:CNT和CCR无效,REF强制为高和低的那两种模式

输出比较模式:CNT=CCR时,REF冻结、置高、置低、反转那四种模式

PWM 模式:CNT > CCR或者CNT < CCR时,REF置高或者置低的那两种模式。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/247195.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五、分支和循环

目录 1. if 语句 1.1 if 1.2 else 1.3 分支中包含多条语句 1.4 嵌套 if 1.5 悬空 else 问题 2. 关系操作符 3. 条件操作符 4. 逻辑操作符&#xff1a; &&&#xff0c;|| &#xff0c;&#xff01; 4.1 逻辑取反运算符 &#xff01; 4.2 与运算符 &&…

Sunshine+Moonlight+Android手机串流配置(局域网、无手柄)

目录 前言Sunshine&#xff08;服务端&#xff09;ApplicationConfigurationGeneralAdvance Moonlight&#xff08;客户端&#xff09;配对打开虚拟手柄串流按键调整退出串流 原神&#xff0c;启动&#xff01; 前言 写这篇文章单纯是因为搜来搜去没有很符合我需求的教程&#…

【SpringBoot】Minio——文件上传与下载

目录结构 下载和启动MinioSpringBoot测试文件上传总结扩展 下载和启动Minio minio下载地址 下载安装 新建一个文件夹&#xff0c;把下载的文件拖过来&#xff0c;并新建一个data目录 进入cmd运行下面命令 出现下面的情况就是配置好了&#xff0c;可以访问本地网站进入 我们的m…

语义分割 DeepLab V1网络学习笔记 (附代码)

论文地址&#xff1a;https://arxiv.org/abs/1412.7062 代码地址&#xff1a;GitHub - TheLegendAli/DeepLab-Context 1.是什么&#xff1f; DeepLab V1是一种基于VGG模型的语义分割模型&#xff0c;它使用了空洞卷积和全连接条件随机&#xff08;CRF&#xff09;来提高分割…

深入微服务架构 | 微服务与k8s架构解读

微服务项目架构解读 ① 什么是微服务&#xff1f; 微服务是指开发一个单个小型的但有业务功能的服务&#xff0c;每个服务都有自己的处理和轻量通讯机制&#xff0c;可以部署在单个或多个服务器上。 微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。也就是说&…

JWT令牌的获取与过滤器Filter的使用

JWT&#xff0c;全称JSON Web Token&#xff08;JSON Web令牌&#xff09;&#xff0c;是一个开放标准 (rfc7519)。它定义了一种紧凑的、自包含的方式&#xff0c;以JSON对象的形式安全地在各方之间传输信息。这种信息可以被验证和信任&#xff0c;因为它是通过数字签名实现的。…

MySQL笔记-第02章_MySQL环境搭建

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第02章_MySQL环境搭建1. MySQL的卸载步骤1&#xff1a;停止MySQL服务步骤2&#xff1a;软件的卸载步骤3&#xff1a;残余文件的清理步骤4&am…

用户态和内核态

实际上任何Linux发行版(Centos/RedHat....)&#xff0c;其系统内核都是Linux。我们的应用都需要通过Linux内核与硬件交互。为了避免用户应用导致冲突甚至内核崩溃&#xff0c;用户应用与内核是分离的&#xff1a; 进程的寻址空间会划分为两部分&#xff1a;内核空间、用户空间。…

单细胞测序并不一定需要harmony去除批次效应

大家好&#xff0c;今天我们分享的是单细胞的学习教程https://www.singlecellworkshop.com/analysis-tutorial.html 教程的作者使用了四个样本&#xff0c;但是没有使用harmony或者其他方法去整合 去除批次效应。 主要内容&#xff1a; SCTransform流程代码及结果 harmony流程…

基恩士软件的基本操作(六,KV脚本的使用)

目录 什么是KV脚本&#xff1f; KV脚本有什么用&#xff1f; 怎么使用KV脚本&#xff08;脚本不能与梯形图并联使用&#xff09;&#xff1f; 插入框脚本&#xff08;CtrlB&#xff09; 插入域脚本&#xff08;CtrlR&#xff09; 区别 脚本语句&#xff08;.T是字符串类…

python pyaudio实时读取音频数据并展示波形图

python pyaudio实时读取音频数据并展示波形图 下面代码可以驱动电脑接受声音数据&#xff0c;并实时展示音波图&#xff1a; import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation import pyaudio import wave import os import op…

数据的力量:Web3 游戏运营指南

在充满活力的 Web3 游戏行业中&#xff0c;市场的起伏不定为开发者带来了挑战和机遇。利用数据的能力对于游戏开发者来说至关重要&#xff0c;能够实时监控游戏内的经济状况并分析玩家行为。这些功能可以帮助项目方获得宝贵的智慧洞察&#xff0c;优化游戏设计&#xff0c;提高…