江协科技STM32:TIM输出比较

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

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

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

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

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

49291bb5dcdf4b18bf7556e03e9eacaa.png

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

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

 

 

 

b36992a73edf4cf98ed136ea5b868490.png

6f9144d30758478f82003d3ec8fa6e15.png

bec76f8ea2114d598fe5114ce8721b48.png

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

 

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

a2bf2ecfc4cf4bbf9a075c84468ad47b.png

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

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

d4a69c48202e47c4b23cb2ba7b512c9d.png

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

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

这就是PWM的基本思想

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

 

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

3881d0b0aeeb417ba04427e019cc3f76.png

5b70be1a7e2c46ddb650304daee3b6ec.png

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

 

09c9a0a7a7514500ba80a732250a4670.png

第二个占空比,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波形的

c3b4d85ca09844c6b3b8075c1643687a.png

它对应下图这里

85778aa3692b4e1b9d8ba2f7bdb02f04.png

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

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

 

e6b3a9101551441ebcdf57c0a53fdc76.png

b2446023137241019bb4fede311d4dd5.png

59259e6616044da2ab37242043f87f3f.png

494e0faa62844afaa20b5e2de6ce696f.png

7aa03384528b408f9c24a3d78132bcc1.pngc7092d0967c646cba50ed77a6ab6f289.png

c1e3a3a8ff40437d9686ee475e1c90f3.png

0895a267e6e44d1b97ee8713b07ef424.pngaed0907ec878458c91c336595ba47203.png

1dca723465e5402fb7672f591dd9f883.png

0914dce46d0b4f91b18920c3bbd77ea5.pngb7a7f2f9a1474e1087c2dee09b31b637.png

900874887f10438eb52fca7fb6ed27ff.png

37a5a13c33004832a7153ccaa05a19cf.png

b1c687abce32402f9eced104bc37b9c9.png

86dd78bdacb04ad49da53c1d97b86c16.png

afb1707b16bb405195b83f3034eebac1.png

1dec33140cec4887bd6a04e9a82a3766.png

90807b05452144aa8fb57c1059958f32.png

9263f69980114ae4a8619a6339a24962.png

062992de1a26451e8bd62a2fa25567c8.png

 

f2e6e62bb8ca4122a19dbac50af475fd.png

0e404b3139c94fadadc840287f05b720.png

97706a7fdda34abca439c7c8c013e67d.png

0061762b3b12475cb6592ad1c110f951.png

a8441e3fe14c44ba9656853e89c8e3a1.png

041925374d8e465383a69bac3010c232.png

2ff1ebbf4cda445493943f3ce156a03b.png

67ee056f51954e2e943acab5cc66fe11.png

 

52e4e0263aab4a6b8f1c266a0a6095af.png

be77aff14df7474a93aed1f00403007b.png

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

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

 

a71ed56d3cb74abfb7e59c9fbd056757.png

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

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

 

1d6bdc6b6e8d454083b606b5ce8cc2b9.png

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

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

087f585489b44b30b085aad8c8a07bc4.png

f1fd700b5df24111b4b03e5a2ec0f640.png94eaeebb4a6f400b8d30b67f95af102b.png8f48228616d342bb8fef0addc4afcdf1.png

 

72b46c86c1c54bb48e3fd2f1024b6da7.png3deb06dbc60b456abf113fa5482664d2.png9a3351b697f54465ab4129464f75b4a9.pngfbb505439a2f4984889e685bd84a33d5.png2693fd0e4af043ed991e1f467e51d34c.png

 

22ccbb047e9c4c01bbbb76cc9e926a02.png

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

9387113b35ab4b24800c0cd33adcf866.png

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

94897ca14279455eb0167dd556f58ebd.png

也是只看向上计数

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

 

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

 

 

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

1d31d2a549904fb5afbc9beafa635e93.png

看这个

016257bb06094be8bf2e831182c37ec0.png

 

492405cad61e4b7797dcfa349e71f7fd.png

8dedd1d4811146d1b9a5dbae57e84ce6.png

3853a1e43998412684689556541333da.png

edac201b1ac24e9e9b68c6d7e1e9db81.png

d286e3a9f56742eaae6fd147f5d54d00.png

52ac49a0721345689ac5e32c7228065f.png

1dcaaba7fa0247cc8b8e08724c9a9b14.png

049974171001405099586c50b56f611b.png

8dc0f4da60b241b19ade3baa6ad1261f.png

00746445699b429da2033d6230177bc4.png

 

fd36c772e8d04542a5efc20b27f56eea.png

aae116a514764a168d2ff9c2207f6e57.png

2cf484eda31d4b64b166553a269dd250.png

da0f1a16475948ac850d7312d36afb79.png60e3c7b2f89142148edc29a1f932d10c.png

5be42bcf6f7840c3911db94ed862980c.png

9288a6152bed489ebab690209b105a29.png

 

0285c12569ff442e9e695b7d0150cd1b.png

692ccc7e3267413db6ee6ddb257029db.png

3c0dd220e7eb4fa48cc612d1a83aaa4b.png

522991691aed481dbc0802d8b873285a.png

5004a7fef9e947b1931402682ea0c50d.png

0c726b40d880432d9a8a9ed0cb9766a6.png

db2dd893aa39472c8c2386d2d11bc68b.png

28b9bd1ad66a404c94f5fa21ed46d26a.png

32de03a589ba4bdc809744e18890d2a7.png

b4073eab5d3d4db2b049380aff29f606.png

546b1da043464b5ead7300556fb3a2d1.png

 

d27eeae498fa4d10b30fbab027ee1da9.png

c82c7149d02e46f3a692f24730eb333d.png

f8fbec9a0c984df0b14e4f4fa0330157.png

f620bbce183e4eada3662e9d1f931d7d.png

953a536f887a40f58f83405d54e4c213.png

 

然后看看PWM是如何计算的

第一个PWM频率

53e24429439c4e02b67bc1cc0cde4537.png

15cd3f3d5cb3446eaf4e6bc5bbbf803c.png

a8259e27db7c4fcbb8282a12a1493f8c.pnge1d827d0de5c4686beb4f387fe720c71.png

a1aa5e0979354e5cb0b7f7d3e07cfbf6.png

第二个占空比参数

8310ca05a8be4cbb9e425622771694ce.png

b8b65a7fc0e540c6856157d43816bc01.png

881fb7e05cae4a37a31d3dfe50e3420d.png

d49d789cbcd54295853351cf6e42f492.png

1866511a70bc465f94278229c3948c8a.png

5029d8dc5b5a475a83fc2d92085773dd.png

2c341463b549432c8abab3e22bb96aeb.png

39d553ec8ec0491b9bbaeb5ae22b5665.png

第三个参数分辨率

8bf55117f0f442d887b6ae8e3336b644.png785dd8a0a9344727a2cd37c530a2ebe7.png

5cf3155d79a243f2aab76da4d8fe7680.png

f83858532aa746cfac53169bfbe4a1ef.png

34a0b90fb1ab4399b6ffb2396b38e46f.png

31c1624a6a534078957d511491f0685e.png

dd33e781f4c048f688da260cdfd36630.png

25351f08afd9475c998545a4eeea6bf3.png

 

13d5bdb5c171407f8e8ef51cc625ac02.png

fde40aad310544958f2ef6129b38ff19.png

 

 

然后是外设

96c7df955bf64e18b4d56867a67e5b18.png

130ec922816949f5a27696d08f03d7fc.png

 

 

先看舵机

舵机内部执行逻辑:

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

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

f03a58f43a1448e1b7739d15110f5cd5.png

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

 

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

31f97c09b06544c682215a75f8c863fc.png

ef2c97651cff492aad91033bd4213f1e.png

ae62517d225f4f3fbb576d2afc638409.png

 

f777682ae1c6431faf91b8e84ceb5dac.png

fce5b26d0d9d439e898e6930f03c7172.png

e17c46b26e8149d8a4ededfdd335e392.png

cb33cb97016c4dee9fed7d9d3be19b12.png

 

 

fc32191694224b40a3e8073fae3fe582.png

6faf752d667946b4aa9e150717df87b0.png

cb36daf161074f2ea290b42931bf3951.png

4c328934606f40a4bbc258c8e2e0ad0c.png

23285f495efe4405b447427f6943e507.png

c378e7db167b4951a89fe234170b34c7.png

ef7d4eaf34dd428f9c5cc43ad222d7d6.png

8189f76bee0142408fe25f2871acd49c.png

 

直流电机

7cb98007aea2489fbd5454d5bb5b75d8.png

 

c97d8d839d6d4b74b384f4447e1f0ae1.png

 

 

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值