[其他ST产品] STM32——TIM输出比较

[复制链接]
7064|61
 楼主| 4c1l 发表于 2024-3-31 14:05 | 显示全部楼层 |阅读模式
TIM输出比较——主要功能——输出PWM波形——》驱动电机的必要条件

一、如何实现LED呼吸灯——LED连续调控亮度???

PWM的功劳

二、PWM驱动舵机

三、PWM驱动直流电机

OC ——output compare输出比较
IC——input capture输入捕获
CC——capture/compare——输入捕获和输出比较的单元
OC(Output Compare)输出比较
输出比较可以通过比较CNT计数器与CCR捕获/比较寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形
764896608fd07a035f.png
每个高级定时器和通用定时器都拥有4个输出比较通道
高级定时器的前3个通道额外拥有死区生成和互补输出的功能——驱动三相无刷电机



CCR Capture/Compare Register——捕获/比较寄存器

输入捕获和输出比较共用

 楼主| 4c1l 发表于 2024-3-31 14:05 | 显示全部楼层
输入捕获和输出比较共用

当使用IC时,是捕获寄存器;当使用OC时,比较寄存器——电路比较CCR与CNT的值,CNT计数自增,CCR是我们给定的值

109606608fd1be2fa2.png

由上图可以读到:有四个输出比较的通道,可以同时输出四路PWM波形,这四个通道有各自的CCR寄存器,但是它们共用一个CNT计数器
197036608fd2b90b92.png
 楼主| 4c1l 发表于 2024-3-31 14:05 | 显示全部楼层
基本定时器最为简单,无输出比较和输入捕获功能

860536608fd3961200.png
 楼主| 4c1l 发表于 2024-3-31 14:05 | 显示全部楼层
PWM波形——数字输出信号,由高低电平组成,连续变化电平信号
function:在数字系统等效实现一个模拟信号的输出

最开始提出的问题:数字输出端口控制的LED,按理来说,只有高低电平——完全亮灭两种状态,如何实现呼吸灯???
回答ANSWER:让LED不断亮灭,其点亮、熄灭的频率足够大时,LED不会闪烁(起码人眼识别不到——余晖、人眼的视觉暂留现象,LED不会立即熄灭,而是过一小会儿再熄灭),其呈现一个中等亮度,通过调控点亮、熄灭的时间比例,使LED呈现不同的亮度级别
电机调速也是类似的原理——让电机不断的通断电(以一个很快的频率),致使电机速度能维持在一个中等速度

PWM秘诀——天下武功,唯快不破
应用场景——惯性系统
使高低电平跳变的数字信号可以  =等效=  模拟量
 楼主| 4c1l 发表于 2024-3-31 14:06 | 显示全部楼层
参数一  ——PWM频率
PWM频率越快,其等效的模拟信号越平稳,但同时性能开销也越大

一般而言PWM频率在几k—几十KHz

参数2  ——  占空比——决定PWM等效出来的模拟电压的大小
占空比越大,等效的模拟电压越趋近于高电平;占空比越小,趋向于低电平

291056608fd57c7f64.png
 楼主| 4c1l 发表于 2024-3-31 14:06 | 显示全部楼层
参数3  ——  分辨率——占空比变化的精细程度
266996608fd68d7639.png
 楼主| 4c1l 发表于 2024-3-31 14:06 | 显示全部楼层
匹配时电平翻转——
function——输出一个频率可调,占空比始终为50%的PWM波形——假设你设置CCR = 0,那CNT每次更新清0时,就会产生CNT = CCR的事件——》导致输出电平翻转一次,即每更新两次,输出为一个周期,输出波形频率 = 更新频率 / 2
273616608fd7610431.png
 楼主| 4c1l 发表于 2024-3-31 14:07 | 显示全部楼层
编程PWM模块主体思想 ——打通上图所示的这些模块,实现PWM输出
1、RCC开启时钟,打开我们需要使用的TIM外设、GPIO外设的时钟

2、配置时基单元

3、配置输出比较单元——CCR的值、输出比较模式、极性选择、输出使能(结构体统一配置)

4、配置GPIO——把PWM对应的GPIO口,初始化为复用推挽输出

5、运行控制——启动CNT计数器
758466608fd84c82ca.png
 楼主| 4c1l 发表于 2024-3-31 14:07 | 显示全部楼层
先来理解外部电路 ,再来理解内部电路
死区生成与互补输出
135156608fd97f25f7.png 两个互补的输出端口,
按理说,我们假设上管导通,下管需立即关断,但由于——器件不理想,上管还没完全断,下管就已经导通了,出现短暂上下管同时导通——电源短路——lead to ——功率损耗、器件发热
为了避免以上问题——死区生成电路:作用机理:在上管关闭时,延迟一段时间,再导通下管


 楼主| 4c1l 发表于 2024-3-31 14:07 | 显示全部楼层
推挽电路——四种模式
上管导通,下管断开——高电平输出
下管导通,上管断开——低电平输出
上管导通,下管导通——电源短路,不允许
上管断开,下管断开——高阻态输出
推挽电路的实际应用
两个推挽电路——H桥电路——实现控制直流电机正反转
3个推挽电路———实现——驱动三相无刷电机
 楼主| 4c1l 发表于 2024-3-31 14:08 | 显示全部楼层
实际控制——对于单片机STM32来控制的话需要两个控制极A/B,且A、B 两个控制极电平相反——互补
897586608fdb7d1539.png
 楼主| 4c1l 发表于 2024-3-31 14:08 | 显示全部楼层
LED呼吸灯
采用正极性接法,使实验现象更为直观——占空比越大,LED越亮;

介绍函数: (我仅仅记录了小部分)
204746608fdcfd9d45.png

配置输出比较 outout compare——用结构体初始化输出比较单元的(master)

四个初始化函数对应四个输出比较单元 / 通道,不同通道所对应的GPIO口也是不一样的
74186608fdd8e498d.png
给输出比较结构体赋默认值
707306608fdee4fe9a.png
仅高级定时器使用,在使用高级定时器输出PWM时,需要调用此函数,使能主输出,否则PWM将不能正常输出

 楼主| 4c1l 发表于 2024-3-31 14:09 | 显示全部楼层
运行时更改参数的函数
876086608fe0048a4c.png


配置CCR的预装功能——影子寄存器——写入的值不会立即生效,而是在更新事件才会生效

467516608fe0591518.png

单独更改输出极性

983576608fe0ce5e65.png
 楼主| 4c1l 发表于 2024-3-31 14:09 | 显示全部楼层
单独修改输出使能参数
143416608fe1e4852f.png
单独更改CCR寄存器值的函数 ——运行时,更改占空比(master)

46306608fe254d47f.png

291026608fe2b7f5b2.png

305996608fe31e1e39.png
 楼主| 4c1l 发表于 2024-3-31 14:10 | 显示全部楼层
默认复用功能——片上外设端口与GPIO的连接关系
730966608fe4f6bb1c.png
配置PA0/PA15

使用复用推挽输出

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   //使用复用推挽输出
 楼主| 4c1l 发表于 2024-3-31 14:10 | 显示全部楼层
 楼主| 4c1l 发表于 2024-3-31 14:11 | 显示全部楼层
普通开漏、推挽输出
137516608fe80c3f5a.png
引脚控制权来自于输出数据寄存器

复用推挽输出——定时器控制引脚,输出数据寄存器被断开,输出控制权转移给片上外设,对于此片上外设引脚连接的就是TIM2的CH1通道,只有将GPIO设置成复用推挽输出,才可以将引脚的输出控制权转移给片上外设,PWM的波形才能通过引脚输出
898276608fe8fb3326.png
 楼主| 4c1l 发表于 2024-3-31 14:11 | 显示全部楼层
程序的参数计算
784266608fea5f37d5.png
        TIM_BaseInitStructure.TIM_Period = 10000 - 1;//周期——ARR自动重装器的值
        TIM_BaseInitStructure.TIM_Prescaler = 7200 - 1;//PSC预分频器的值
        TIM_OCInitStructure.TIM_Pulse = ;//设置CCR寄存器
 楼主| 4c1l 发表于 2024-3-31 14:12 | 显示全部楼层

125876608feb34208a.png
让LED呈现呼吸灯的效果——不断更改CCR的值
 楼主| 4c1l 发表于 2024-3-31 14:12 | 显示全部楼层
引脚重映射 ——PA15——AFIO

283796608fed0b262b.png

853956608fed6840f2.png

引脚重映射配置
500506608fedca7714.png
把PA0——》PA15,可使用部分重映像、完全重映像

325716608fee4497e9.png

154096608feea5a842.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

65

主题

703

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部