STM32 TIM输出比较、PWM波形

单片机学习!

目录

一、输出比较简介

二、PWM简介

三、输出比较通道

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

3.2高级定时器的输出比较部分电路

四、输出模式控制器

五、PWM基本结构

六、PWM参数计算

总结


前言

        文章讲述STM32定时器的输出比较功能,它主要用来输出PWM波形,而PWM波形是驱动电机的必要条件。


一、输出比较简介

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

        库函数中英文缩写:OC(Output Compare)输出比较、IC(Input Capture)输入捕获、CC(Capture/Compare)输入捕获和输出比较的单元。

        输出比较模块最主要的功能就是输出一定频率和占空比的PWM波形。CNT和CCR在下图标记的位置:

        橙色框里就是输出比较电路,红色框里是CNT(时基单元里的计数器),CCR(捕获/比较寄存器)。

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

二、PWM简介

  • PWM(Pulse Width Modulation)脉冲宽度调制。
  • 在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域。
  • PWM参数:    频率 = 1 / TS           占空比 = TON / TS          分辨率 = 占空比变化步距

        PWM波形是一个数字输出信号,是由高低电平组成的一个连续变化的电平信号。

        使用PWM波形是用来等效的实现一个模拟信号的输出。如控制LED亮度大小,就是让LED不断点亮、熄灭、点亮、熄灭,当点亮和熄灭的频率足够大时,LED就不会闪烁了,而是呈现出一个中等亮度。控制点亮和熄灭的时间比例就可以使LED呈现不同的亮度级别。电机调速也是同样的原理,用很快的频率给电机通电、断电、通电、断电,那么电机的速度就能维持在一个中等速度。

        PWM的应用场景必须要是一个惯性系统。

        由上图可以看出,高低电平跳变的数字信号是可以等效为中间紫色虚线所表示的模拟量的,

  • 当Ud电平时间长一点,-Ud电平时间短一点的时候,等效的模拟量就偏向于上面;
  • 当Ud电平时间短一点,-Ud电平时间长一点的时候,等效的模拟量就偏向于下面;

        PWM中几个关键参数:

        TS代表一个高低电平变换周期的时间,周期的倒数就是频率,频率 = 1 / TS,PWM的频率越快,那它等效的模拟信号就约平稳,不过同时性能开销就越大,一般来说PWM的频率在几千到几十千赫兹就足够快了。

        占空比 = TON / TS,TON是高电平的时间,TS是一个周期的时间。占空比就是高电平时间相对于整个周期时间的比例,一般用百分比来表示。

  • 占空比为50%,那就是高低电平时间相等的方波;
  • 占空比为20%,那就是高电平占20%,低电平占80%;
  • 占空比100%,那就是一直是高电平;
  • 占空比0%,那就是一直是低电平。

        占空比决定了PWM等效出来的模拟电压的大小。占空比越大,等效的模拟电压就越趋近于高电平;占空比越小,等效的模拟电压就越趋近于低电平;这个等效关系一般来说是线性的,如高电平5V,低电平0V,50%占空比就等效于中间电压,为2.5V;20%占空比就等效于1/5处的电压,就是1V。

        分辨率 = 占空比变化步距,比如有的占空比只能是1%、2%、3%等等这样以1%的步距跳变,那它的分辨率就是1%;如果可以1.1%、1.2%、1.3%等等这样以0.1%的步距跳变,那它的分辨率就是0.1%。这个分辨率就是占空比变化的精细程度,分辨率的大小需看实际项目需求。高频率和高分辨率的设计对硬件电路要求也较高。

        使用PWM波形,就可以在数字系统等效输出模拟量。可以实现LED控制亮度、电机控速等功能。

三、输出比较通道

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

        上图通用定时器框图中红色框起来的部分对应的就是下图。由黄色框中CNT和CCR比较的结果传入红色框的输出比较电路,最后通过蓝色框中TIM_CH1输出到GPIO引脚上。下方三个是同样的通道,分别输出到CH2、CH3、CH4。

        这部分电路是通用定时器的输出比较部分电路,高级定时器的第四个通道的结构和这部分电路也是基本一样的。

        1.由CNT计数器和CCR1第一路的捕获/比较寄存器比较得出CNT>CCR1或CNT=CCR1时,就会给输出模式控制器传一个信号,输出模式控制器就会改变它输出OC1ref的高低电平。ref是reference的缩写,意思是参考信号。(ETRF输入是定时器的一个小功能)

        2.ref信号可以前往主模式控制器,可以将ref映射到主模式的TRGO输出。也可以前往极性选择,这个是ref的主要去向,给寄存器CC1P写0,信号就走上方支路,信号电平不翻转,就是信号经过不改变;给寄存器CC1P写1,信号就走下方支路,信号通过一个非门取反。信号经过高低电平反转。极性选择就是选择是否要把高低电平反转。

        3.极性选择过后就是输出使能电路,选择要不要输出。最后就是OC1引脚,OC1引脚就是CH1通道的引脚。在引脚定义表可查具体对应哪个GPIO口。

3.2高级定时器的输出比较部分电路

        高级定时器的输出比较部分电路比通用定时器的输出比较部分电路多了红色方框框起来的部分。OC1和OC1N就是两个互补的输出端口,一个输出高电平,另一个就输出低电平。死区发生器则用于互补输出切换时延时一小段时间。

四、输出模式控制器

        输出模式控制器的输入是CNT和CCR的大小关系,输出的是REF的高低电平,可以选择多种模式控制REF输出。这个模式可以通过CC1M寄存器进行配置。具体操作可参考下表:

        1.冻结模式,CNT=CCR时,REF保持为原状态。实际上CNT和CCR就相当于没有用,所以也可以理解为CNT和CCR无效,REF保持为原状态。这个模式比较简单,它根本就不管CNT和CCR谁大谁小,直接REF保持不变,维持上一个状态就行了。冻结模式可用于正在输出PWM波时,突然需要暂停一会儿输出时。冻结模式被切换后,输出就暂停了。并且高低电平也维持为暂停时刻的状态保持不变。

        2.有效电平和无效电平一般是高级定时器里面的,与关断、刹车这些功能配合表述的,描述比较严谨,所以叫有效电平和无效电平。为了方便理解,可以直接认为置有效电平就是置高电平、置无效电平就是置低电平。这三个模式都是当CNT与CCR值相等时,执行操作。

  • 匹配时置有效电平模式:CNT=CCR时,REF置有效电平,也就是高电平。
  • 匹配时置无效电平模式:CNT=CCR时,REF置无效电平,也就是低电平。
  • 匹配时电平翻转模式:CNT=CCR时,电平翻转。

以上这三个模式就可以用做波形输出了。

匹配时电平翻转模式和匹配时置无效电平模式都只是一次性置高电平或置低电平后就结束。这两个模式不适合输出连续变化的波形。如果是定时输出一次性的信号,则可以选择这两个模式。

匹配时电平翻转模式可以方便地输出一个频率可调,占空比始终为50%的PWM波形。当设置CCR为0时,CNT每次更新清0时,就会产生一次CNT=CCR的事件,这就会导致输出电平翻转一次。每更新两次,输出为一个周期。并且高电平和低电平的时间是始终相等的,也就是占空比始终为50%。当改变定时器更新频率时,输出波形的频率也会随之改变。输出波形的频率=更新频率/2,因为更新两次输出才为一个周期。这就是匹配时电平翻转模式的用途。

        3.强制为无效电平和强制为有效电平模式是CNT与CCR无效,REF强制为无效电平或者强制为有效电平。这两个模式和冻结模式有些相似,如果需要暂停波形输出,并且在暂停期间保持低电平或者高电平。就可以设置这两个强制输出电平模式。

        4.PWM模式1和PWM模式2是非常重要的两个模式。它们可以用于输出频率和占空比都可调的PWM波形,是项目中主要使用的模式。

  • 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置无效电平。

PWM模式1和PWM模式2的区别就是输出高低电平反过来了,所以PWM模式2实际上就是PWM模式1输出的取反。改变PWM模式1和PWM模式2,就只是改变了REF电平的极性而已。从上图输出比较通道中可以看到,REF输出之后还有一个极性的配置(图中2部分),所以使用PWM模式1的正极性和PWM模式2的反极性最终的输出是一样的。所以下文介绍其中一种模式:使用PWM模式1的向上计数的模式输出频率和占空比都可调的PWM波形。

五、PWM基本结构

1.时基单元,配置好时基单元,CNT计数器就可以开始不断地自增运行。

2.运行控制。

3.输出比较单元,总共有4路。输出比较单元的最开始是CCR捕获/比较寄存器,CCR可自己设定,CNT不断自增运行,同时CNT和CCR在不断进行比较。CCR之后输出模式控制器以PWM模式1中CNT<CCR时,REF置有效电平,CNT≥CCR时,REF置无效电平为执行逻辑。

        图中右上角的第一个折线图中,蓝色线是CNT的值,黄色线是ARR的值。蓝线CNT从0开始自增,一直增到ARR也就是99之后清0,继续自增。在这个过程中,设置的红色线是CCR,图中CCR设置为30,执行图中PWM模式1的向上计数的逻辑。就得到右上角第二个方波图中绿色线表示的输出波形

        右上角两个图对照来看,最开始CNT<CCR时,置高电平;当CNTCCR时,变为低电平;当CNT溢出清0后,CNT又小于CCR,置高电平;之后CNTCCR时,置低电平。这样一直持续下去,REF的电平就会不断变化,并且它的占空比是受CCR值的调控的。如果CCR的值设置高一些,输出的占空比就变大;CCR的值设置的低一些,输出的占空比就变小。这就是PWM模式的工作流程。这里的REF就是一个频率可调,占空比也可调的PWM波形。

        REF最终在经过极性选择,输出使能,最终通向GPIO口。最终完成PWM波形的输出。

六、PWM参数计算

  • PWM频率:    Freq = CK_PSC / (PSC + 1) / (ARR + 1)
  • PWM占空比:    Duty = CCR / (ARR + 1)
  • PWM分辨率:    Reso = 1 / (ARR + 1)

        PWM频率:PWM的一个周期始终对应着计数器CNT的一个溢出更新周期,所以PWM的频率就等于计数器CNT的更新频率,PWM频率的计算公式就是计数器的更新频率公式。

        PWM占空比:一个周期中CNT是从0一直加到ARR,图中ARR是99,那CNT总共就是计了100个数。PWM波高电平时,CNT是从0一直加到CCR,图中CCR是30,在等于30的瞬间,PWM波形就已经跳变为低电平了。CNT从0到29是高电平,总共是计30个数的时间。所以占空比就是30/100=30%,对应公式 Duty = CCR / (ARR + 1)。

        PWM分辨率:分辨率也就是占空比变化的步距。从图中可以看出,CCR的值因该设置在0到ARR+1这个范围里,CCR=ARR+1时,占空比就正好是100%;若 CCR>(ARR+1) 时,占空比始终是100%,这样设置没有意义。所以CCR的变化范围取决于ARR的值,ARR越大,CCR的范围就越大,对应的分辨率就越大,总结公式为 Reso = 1 / (ARR + 1),公式里定义的分辨率是占空比最小的变化步距,所以这个值越小越好;也可以定义CCR的范围为分辨率,这个值越大越好。这两种定义都是对应占空比变化的越细腻越好。


总结

        以上就是今天要讲的内容,本文仅仅简单介绍了STM32输出比较和PWM的一些内容。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8S中使用helm安装MinIO

注意事项 使用helm部署MinIO分为两部分 helm部署MinIO operator&#xff0c;用来管理tenant&#xff08;K8S集群中只能部署一个&#xff09;helm部署MinIO tenant&#xff0c;真实的MinIO Cluster&#xff08;K8S集群中可以部署多个&#xff09; 使用helm部署到K8S集群&…

网工每日一练(1月15日)

1.某计算机系统由下图所示的部件构成&#xff0c;假定每个部件的千小时可靠度为R&#xff0c;则该系统的千小时的可靠度为 ( D ) 。 2.以下IP地址中&#xff0c;属于网络 201.110.12.224/28 的主机IP是&#xff08; B &#xff09;。 A.201.110.12.224 B.201.110.12.238 C.20…

【文本到上下文 #5】:RNN、LSTM 和 GRU

一、说明 欢迎来到“完整的 NLP 指南&#xff1a;文本到上下文 #5”&#xff0c;这是我们对自然语言处理 &#xff08;NLP&#xff09; 和深度学习的持续探索。从NLP的基础知识到机器学习应用程序&#xff0c;我们现在深入研究了神经网络的复杂世界及其处理语言的深刻能力。 在…

如何快速部署本地训练的 Bert-VITS2 语音模型到 Hugging Face

Hugging Face是一个机器学习&#xff08;ML&#xff09;和数据科学平台和社区&#xff0c;帮助用户构建、部署和训练机器学习模型。它提供基础设施&#xff0c;用于在实时应用中演示、运行和部署人工智能&#xff08;AI&#xff09;。用户还可以浏览其他用户上传的模型和数据集…

pip与pip3的区别

pip 和 pip3 都是 Python 的包管理工具&#xff0c;用于安装第三方库。它们的区别在于&#xff1a; pip 是 Python 2 和 Python 3 通用的包管理工具&#xff0c;它可以安装适用于 Python 2 和 Python 3 的库。pip3 是专门用于 Python 3 的包管理工具&#xff0c;它只能安装适用…

2023.12.30性质

若连通图上各边的权值均不相同&#xff0c;则该图的最小生成树是唯一的。 由k算法&#xff0c;即由边从小到大的顺序构造&#xff0c;如果边权值各不相同&#xff0c;那么构造出来的最小生成树唯一&#xff0c;就是唯一的顺序&#xff0c;从小到大 关于带权无向图的最小生成…

2024年信息安全不完全预测

不需要专家预言就能知道&#xff0c;计算机安全将在2024年出现在新闻中&#xff0c;而且可能不是什么好事。但2024年网络犯罪分子将如何试图突破防御并窃取有价值的数据&#xff0c;值得我们看一看安全专家们的看法和预测。 不需要专家预言就能知道&#xff0c;计算机安全将在…

<Linux> 进程间通信

目录 前言&#xff1a; 一、进程间通信 &#xff08;一&#xff09;进程间通信目的 &#xff08;二&#xff09;进程通信的要求 &#xff08;三&#xff09;进程间通信分类 二、管道 &#xff08;一&#xff09;什么是管道 &#xff08;二&#xff09;基本原理 &#…

SQL性能分析

SQL性能分析 1、SQL执行频率 ​ MySQL 客户端连接成功后&#xff0c;通过 show [session|global] status 命令可以提供服务器状态信 息。通过如下指令&#xff0c;可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次&#xff1a; -- session 是查看当前会话 ; …

20240115如何在线识别俄语字幕?

20240115如何在线识别俄语字幕&#xff1f; 2024/1/15 21:25 百度搜索&#xff1a;俄罗斯语 音频 在线识别 字幕 Bilibili&#xff1a;俄语AI字幕识别 音视频转文字 字幕小工具V1.2 BING&#xff1a;音视频转文字 字幕小工具V1.2 https://www.bilibili.com/video/BV1d34y1F7…

python爬虫实战(10)--获取本站热榜

1. 需要的类库 import requests import pandas as pd2. 分析 通过分析&#xff0c;本站的热榜数据可以直接通过接口拿到&#xff0c;故不需要解析标签&#xff0c;请求热榜数据接口 url "https://xxxt/xxxx/web/blog/hot-rank?page0&pageSize25&type" #本…

多臂老虎机 “Multi-armed Bandits”

将强化学习与机器学习、深度学习区分开的最重要的特征为&#xff1a;它通过训练中信息来评估所采取的动作&#xff0c;而不是给出正确的动作进行指导&#xff0c;这极大地促进了寻找更优动作的需求。 1、多臂老虎机&#xff08;Multi-armed Bandits&#xff09;问题 赌场的老虎…

超简单的node爬虫小案例

同前端爬取参数一样&#xff0c;输入三个参数进行爬取 注意点也一样&#xff1a; 注意分页的字段需要在代码里面定制化修改&#xff0c;根据你爬取的接口&#xff0c;他的业务规则改代码中的字段。比如我这里总条数叫total&#xff0c;人家的不一定。返回的数据我这里是data.r…

适用于动态 IT 环境的服务器流量监控软件

服务器在网络性能中起着至关重要的作用&#xff0c;这意味着保持其最佳容量至关重要。企业需要将 AI、ML 和云技术融入其 IT 中&#xff0c;从而提供充分的敏捷性、安全性和灵活性&#xff0c;在这方面&#xff0c;服务器流量监控已成为当务之急。通过定期监控通信、跟踪流量上…

怿星科技测试实验室获CNAS实验室认可,汽车以太网检测能力达国际标准

2023年12月27日&#xff0c;上海怿星电子科技有限公司测试实验室&#xff08;下称&#xff1a;EPT LABS&#xff09;通过CNAS实验室认可批准&#xff0c;并于2024年1月5日正式取得CNAS实验室认可证书&#xff08;注册号CNAS L19826&#xff09;&#xff0c;标志着怿星科技的实验…

Notepad++编译运行C/C++程序

首先需要先下载一个C语言编译器-MinGW&#xff08;免费的&#xff09; 官网&#xff1a;http://www.mingw.org/&#xff08;加载太慢&#xff09; 我选择MinGW - Minimalist GNU for Windows download | SourceForge.net这个网址下载的 注意安装地址&#xff0c;后续配置环境…

mac上搭建 hadoop 伪集群

1. hadoop介绍 Hadoop是Apache基金会开发的一个开源的分布式计算平台&#xff0c;主要用于处理和分析大数据。Hadoop的核心设计理念是将计算任务分布到多个节点上&#xff0c;以实现高度可扩展性和容错性。它主要由以下几个部分组成&#xff1a; HDFS (Hadoop Distributed Fi…

基于SSM的流浪动物救助站

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

【漏洞复现】Sentinel Dashboard SSRF漏洞(CVE-2021-44139)

Nx01 产品简介 Sentinel Dashboard是一个轻量级的开源控制台&#xff0c;提供机器发现以及健康情况管理、监控、规则管理和推送的功能。它还提供了详细的被保护资源的实际访问统计情况&#xff0c;以及为不同服务配置的限流规则。 Nx02 漏洞描述 CVE-2021-44139漏洞主要存在于…

FPGA时序分析实例篇(下)------底层资源刨析之FDCE和Carry进位链的合理利用

声明&#xff1a; 本文章部分转载自傅里叶的猫&#xff0c;作者猫叔 本文章部分转载自FPGA探索者&#xff0c;作者肉娃娃 本文以Xilinx 7 系列 FPGA 底层资源为例。 FPGA 主要有六部分组成&#xff1a;可编程输入输出单元&#xff08;IO&#xff09;、可编程逻辑单元&#xf…