江协科技STM32:TIM输出比较

输出比较模块的主要功能:输出一定频率和占空比的PWM波形

CC是捕获比较的意思,R是Register,寄存器的意思,CCR捕获比较寄存器它是输入捕获和输出比较共用的

当使用输入捕获,它就是捕获寄存器

当使用输出比较,它就是比较寄存器,在这里,会比较CNT和CCR的值

CNT计数自增,CCR是我们给定的一个值

当CNT大于CCR,小于CCR或等于CCR时,图上就会,然后就可以输出一个电平不断跳变的PWM波形了

这就是输出比较的基本功能

主要学习通用定时器的输出比较功能

输出比较就是用来输出PWM波形,那什么是PWM波形呢

PWM是数字信号,也是由高低电平组成的

使用PWM波形,是用来等效地实现一个模拟信号到输出,也就是控制灯的亮度,数字输出端口控制LED,理论上说,应该只有完全亮和完全灭灭两种状态,怎么实现控制亮度大小呢,那就需要PWM波形实现,我们让LED不断点亮,熄灭,点亮,熄灭,当点亮,熄灭到频率足够大时,LED就不会闪烁,而是呈现出一个中等亮度

当我们调控点亮和熄灭的时间比例时,就能让LED呈现出不同的亮度级别

对于电机调速也是一样,我们以一个很快的频率,给电机通电,断电,通电,断电,电机的速度就能维持在一个中等的速度

这就是PWM的基本思想

当然PWM到应用场景必须是一个惯性系统,就是说LED在熄灭的时候,由于余晖和人眼视觉暂留的现象,LED不会立马被熄灭,而是有一定的惯性,过一小段时间才会熄灭,电机也是,,当电机断电时,电机的转动不会立马停止,而是有一定的惯性,过一会才停,这样具有惯性的系统,才能使用PWM

在使用PWM时有几个重要的参数:

第一个频率,TS代表一个高低电平变换周期的时间,PWM的频率越快,那它等效模拟的信号就越平稳,性能开销也会越大,一般来说PWM的频率都在几K到几十KHz

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

比如占空比为50%,那就是高低电平时间相等的方波

占空比为20%,那就是高电平占20%,低电平占80%

占空比100%,那就是高电平不带变的

占空比0%,那就直接是低电平

这就是占空比

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

第三个分辨率,它等于占空比变化步距

比如有的占空比只能是1%,2%,3%等等,这样以1%的步距跳变,那它的分辨率就是1%

如果是1.1%,1.2,1.3等等这样以0.1%的步距跳变,那它的分辨率就是0.1%

所以这个分辨率就是占空比变化的精细程度,分辨率多高,看你的项目需求,如果是高频率,又要高分辨率,这对硬件电路要求就高了,如果要求不高的话,一般都是1%的分辨率,就够用了

这就是PWM知识点,使用PWM波形,就可以在数字系统等效输出模拟量,就能实现LED控制亮度,电机控速灯功能了

那下面就来分析一下,定时器的输出比较模块是怎么输出PWM波形的

它对应下图这里

左边是CNT和XCR比较的结果,右边就是输出比较电路,最后通过TIM_CH1输出到GPIO引脚上

下面还有三个同样的单元,分别输出到CH2,CH3,CH4

第一个模式是冻结,当CNT=CCR时维持原状态,那CCR和CNT就根本没有用,所以可以理解成CNT和CCR无效,REF保持为原状态,当你正在输出PWM波,突然想暂停一会输出,就可以设置成这个模式,一旦切换为冻结模式后,输出就暂停了

,并且高低电平也维持为暂停时刻的状态,保持不变,这就是冻结模式的作用

这几个有效电平和无效电平,一般是高级定时器里面的一个说法,是和关断,刹车这些功能配合表述的,为了理解方便,可以直接认为,置有效电平就是置高电平,置无效电平就是置低电平

这三个模式就可以用作波形输出了

比如电平反转模式,这个可方便地输出一个频率可调,占空比始终为50%的PWM波形

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

这两个很重要,它们可以用于输出频率和占空比都可调的PWM波形,也是我们主要使用的模式

一般我们用向上计数,所以分析向上计数

也是只看向上计数

两个向上计数条件是一样的,区别就是输出的高低电平反过来了,所以PWM模式2,就是PWM模式1输出的取反,改变PWM模式1和PWM模式2,只是改变了REF电平的极性而已,这就是两个模式的区别

我们使用的话,就使用PWM1并且向上计数这一种模式就行

那这种模式是怎么输出频率和占空比都可调的PWM波形的呢

看这个

然后看看PWM是如何计算的

第一个PWM频率

第二个占空比参数

第三个参数分辨率

然后是外设

先看舵机

舵机内部执行逻辑:

PWM信号输入到控制板,给控制板一个指定的目标角度,然后电位器检测输出轴的当前角度,如果大于目标角度,电机就会反转,如果小于目标角度,电机就会正转

,最终使舵机输出固定在指定角度,这就是舵机内部工作流程

我们只需要知道,输入一个PWM波形,输出轴固定在一个角度就行了

然后现在来看看输入PWM信号要求

直流电机

相关推荐
嵌新程1 小时前
day03(单片机高级)RTOS
stm32·单片机·嵌入式硬件·freertos·rtos·u575
Lin2012301 小时前
STM32 Keil5 attribute 关键字的用法
stm32·单片机·嵌入式硬件
电工小王(全国可飞)2 小时前
STM32 RAM在Memory Map中被分为3个区域
stm32·单片机·嵌入式硬件
maxiumII2 小时前
Diving into the STM32 HAL-----DAC笔记
笔记·stm32·嵌入式硬件
科技热点榜3 小时前
YashanDB:自主原创、行稳致远
科技
美式小田4 小时前
单片机学习笔记 9. 8×8LED点阵屏
笔记·单片机·嵌入式硬件·学习
兰_博5 小时前
51单片机-独立按键与数码管联动
单片机·嵌入式硬件·51单片机
Name_NaN_None5 小时前
Win11 24H2新BUG或影响30%CPU性能,修复方法在这里
科技·电脑·游戏机
时光の尘5 小时前
C语言菜鸟入门·关键字·float以及double的用法
运维·服务器·c语言·开发语言·stm32·单片机·c
ZStack开发者社区6 小时前
替代VMware | 大有期货采用云轴科技ZStack ZSphere虚拟化打造国产化数据中心
科技