高级定时器理论部分

本文详细介绍了STM32F401CCU6的高级定时器功能,包括不同类型的定时器、计数器配置、时钟源选择、外部时钟模式、输入捕获原理、以及输出比较的死区控制和PWM模式应用。
摘要由CSDN通过智能技术生成

 定时器功能:定时、输出比较、输入捕获、断路输入

定时器分类:基本定时器、通用定时器、高级定时器

通用定时器拥有的功能,高级定时器均有;

高级定时器功能简介

  • 计数器16bit,上/下/两边 计数,TIM1和TIM8,还有一个重复计数器RCR,独有。
  • 有4(7)个GPIO,其中通道1~3还有互补输出GPIO
  • 时钟来自PCLK2,可实现1~65536分频

stm32f401ccu6的GPIO引脚

高级定时器功能框图讲解

 时钟源

  • 内部时钟源CK_INT
  • 外部时钟模式1—外部的GPIO Tix(x=1 2 3 4)
  • 外部时钟模式2—外部的GPIO ETR
  • 内部触发输入—ITRx(x=1 2 3 4)

内部时钟源

  • 内部时钟源来自RCC的TIMx_CLK
  • TIMx_CLK等于多少呢?如何确定?

具体的查看:RCC 专用时钟配置寄存器 (RCC_DCKCFGR)

所有定时器都挂载在总线APB1或APB2上面可在中文手册P52查看

一般总线的时钟决定了外设的时钟,并且一般外设的时钟都不能超过总线的时钟,。但是定时器有所区别

手册P107查看

if APBx Presc =1 则乘上1 为其他则乘上2

APB1=168M/2(分频因子) =84M

APB2=168M/4(分频因子)=42M

这两种总线分频因子都不是1,都必须乘上2.

由于高级定时器是挂载在APB1上面,所以RCC的TIMx_CLK为168M(84M*2)。

经过流程,来到预分频器

外部时钟模式1—外部的GPIO Tix(x=1 2 3 4)

外部时钟1(有点像编码器模式)

①时钟信号输入引脚

1-外部的GPIO TIx,对应:TIMx_CH1/2/3/4

2-TIM_CCMRx 的位 CCxS[1:0]配置,其中 CCMR1 控制 TI1/2, CCMR2 控制 TI3/4

②滤波器

1-如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用滤波器对 ETRP 信号重新采样,来达到降频或者去除高频干扰的目的;

如果采样的信号比较纯净,则配置成0即可。

2-由TIMx_CCMx 的位 ICxF[3:0]配置。

③边沿检测

1-边沿检测的信号来自于滤波器的输出,在成为触发信号之前,需要进行边沿检测,决定是上升沿有效还是下降沿有效。

2-由 TIMx_CCER 的位 CCxP 和 CCxNP 配置。

④触发选择

1-当使用外部时钟模式 1 时,触发源有两个,一个是滤波后的定时器输入 1( TI1FP1)和滤波后的定时器输入 2( TI2FP2)。

2-由 TIMx_SMCR 的位 TS[2:0]配置。

⑤从模式选择

1-选定了触发源信号后,最后我们需把信号连接到TRGI 引脚,让触发信号成为外部时钟模式 1 的输入,最终等于 CK_PSC,然后驱动计数器 CNT 计数。

2-具体的配置TIMx_SMCR 的位 SMS[2:0]为 000 即可选择外部时钟模式 1。

⑥使能计数器

1-经过上面的 5 个步骤之后, 最后我们只需使能计数器开始计数,外部时钟模式 1 的配置就算完成。

2-使能计数器由 TIMx_CR1 的位 CEN 配置。

外部时钟2

①时钟信号输入引脚

当使用外部时钟模式 2 的时候,时钟信号来自于定时器的特定输入通道 TIMx_ETR,只有 1 个。

②外部触发极性

1-来自 ETR 引脚输入的信号可以选择为上升沿或者下降沿有效。

2-具体的由 TIMx_SMCR的位 ETP 配置。

③外部触发预分频器

1-由于 ETRP 的信号的频率不能超过 TIMx_CLK( 180M)的 1/4,当触发信号的频率很高的情况下,就必须使用分频器来降频。

2-具体的由 TIMx_SMCR 的位 ETPS[1:0]配置。

④滤波器

1-如果 ETRP 的信号的频率过高或者混杂有高频干扰信号的,需要使用滤波器对 ETRP 信号重新采样,来达到降频或者去除高频干扰的目的。

如果采样的信号比较纯净,则配置成0即可。

2-具体的由 TIMx_SMCR 的位 ETF[3:0]配置,其中的fDTS 是由内部时钟 CK_INT 分频得到,具体的由TIMx_CR1 的位CKD[1:0]配置。

⑤从模式选择

1-经过滤波器滤波的信号连接到 ETRF 引脚后,触发信号成为外部时钟模式 2 的输入,最终等于 CK_PSC,然后驱动计数器 CNT 计数。

2-具体的配置 TIMx_SMCR 的位 ECE 为 1即可选择外部时钟模式 2。

⑥使能计数器

1-经过上面的 5 个步骤之后, 最后我们只需使能计数器开始计数,外部时钟模式 2 的配置就算完成。

2-使能计数器由 TIMx_CR1 的位 CEN 配置

内部触发输入

1-内部触发输入是使用一个定时器作为另一个定时器的预分频器。硬件上高级控制定时器和通用定时器在内部连接在一起,可以实现定时器同步或级联。

2- 由TIMx_SMCR 的位 TS[2:0]配置。

内部触发连接

TIM1为TIM2提供时钟

控制器

1-控制器就是用来控制的,发送命令的

2-CR1、CR2、SMCR、CCER,主要学习这几个寄存器即可。

输入捕获的作用和原理

输入捕获的大概的作用就是

输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获,常用的有测量输入信号的脉宽和测量 PWM输入信号的频率和占空比这两种。

输入捕获的大概的原理就是

当捕获到信号的跳变沿的时候,把计数器 CNT 的值锁存到捕获寄存器 CCR 中,把前后两次捕获到的 CCR 寄存器中的值相减,就可以算出脉宽或者频率。

如果捕获的脉宽的时间长度超过你的捕获定时器的周期,就会发生溢出,这个我们需要做额外的处理。

①输入通道

当使用需要被测量的信号从定时器的外部引脚TIMx_CH1/2/3/4 进入,通常叫 TI1/2/3/4,在后面的捕获讲解中对于要被测量的信号我们都以 TIx 为标准叫法

根据PWM的,只能选择输入通道为TI1和TI2,因为只有这两个输入通道能使用TI1FP1和TI2FP2(可以作为主触发,使用从模式控制器)。

②输入滤波和边沿检测

当输入的信号存在高频干扰的时候,我们需要对输入信号进行滤波,即进行重新采样,

根据采样定律,采样的频率必须大于等于两倍的输入信号。

比如输入的信号为1M,又存在高频的信号干扰,那么此时就很有必要进行滤波,我们可以设置采样频率为2M,这样可以在保证采样到有效信号的基础上把高于2M的高频干扰信号过滤掉。

滤波器的配置由CR1寄存器的位CKD[1:0]和CCMR1/2的位ICxF[3:0]控制。

从ICxF位的描述可知,采样频率fSAMPLE可以由fcK_INT和fprs分频后的时钟提供,其中是fcK_INT内部时钟,fprs是fcK_INT经过分频后得到的频率,分频因子由CKD[1:0]决定,可以是不分频,2分频或者是4分频。

边沿检测器用来设置信号在捕获的时候是什么边沿有效,可以是上升沿,下降沿,或者是双边沿,具体的由CCER寄存器的位CCxP和CCxNP决定。

③捕获通道

捕获通道就是图中的IC1/2/3/4,每个捕获通道都有相对应的捕获寄存器CCR1/2/3/4,当发生捕获的时候,计数器CNT的值就会被锁存到捕获寄存器中。

这里我们要搞清楚输入通道和捕获通道的区别;

输入通道是用来输入信号的,捕获通道是用来捕获输入信号的通道,一个输入通道的信号可以同时输入给两个捕获通道。

比如:输入通道TI1的信号经过滤波边沿检测器之后的TI1FP1和TI1FP2可以进入到捕获通道IC1和IC2,其实这就是我们后面要讲的PWM输入捕获,只有一路输入信号(TI1)却占

用了两个捕获通道(IC1和IC2)。再经过两种捕获、比较寄存器

当只需要测量输入信号的脉宽时候,用一个捕获通道即可。

输入通道和捕获通道的映射关系具体由寄存器CCMRx的位CCxS[1:0]配置。

TIMx_CCCMR1

TIMx_CCCMR2

④预分频器

1-ICx 的输出信号会经过一个预分频器,用于决定发生多少个事件时进行一次捕获。

2-具体的由寄存器 CCMRx 的位 ICxPSC 配置,如果希望捕获信号的每一个边沿,则不分频。

⑤捕获寄存器

经过预分频器的信号ICxPS是最终被捕获的信号

当发生捕获时(第一次),计数器CNT的值会被锁存到捕获寄存器CCR中,还会产生CCxI中断,相应的中断位CCxIF(在SR寄存器中)会被置位,通过软件或者读取CCR中的值可以将CCxIF清0。

如果发生第二次捕获(即重复捕获:CCR寄存器中已捕获到计数器值且CCxIF标志已置1),则捕获溢出标志位CCxOF(在SR寄存器中)会被置位,CCxOF只能通过软件清零。

1、测量脉宽和频率

2、PWM输入模式

根据举例的PWM的输入模式时序可以看出来,将TIxFP1选择成主触发;

注意事项,开始时IC1和IC2均为0,当检测到下降沿的时候,此时IC2写入2,最后结束一个周期时检测到上升沿IC1写入4,但是实际上周期为5,占空比为3.

原因出在开始计数时为1,应该每个得到的值都要+1.

 输出比较

输出比较的作用

  • 输出比较就是通过定时器的外部引脚对外输出控制信号,有冻结、将通道X(x=1,2,3,4)设置为匹配时输出有效电平、将通道X设置为匹配时输出无效电平、翻转、强制变为无效电平、强制变为有效电平、PWM1和PWM2这八种模式,具体使用哪种模式
  • 由寄存器CCMRx的位OCxM[2:0]配置。
  • 其中PWM模式是输出比较中的特例,使用的也最多。

①输出比较寄存器

比较寄存器

当计数器CNT的值跟比较寄存器CCR的值相等的时候,输出参考信号OCxREF的信号的极性就会改变,其中OCxREF=1(高电平)称之为有效电平,OCxREF=0(低电平)称之为无效电平,并且会产生比较中断CCxI,相应的标志位CCxIF(SR寄存器中)会置位。然后OCxREF再经过一系列的控制之后就成为真正的输出信号OCx/OCxN。

②死区发生器

在生成的参考波形OCxREF的基础上,可以插入死区时间,用于生成两路互补的输出信号OCx和OCxN,死区时间的大小具体由BDTR寄存器的位DTG[7:0]配置。死区时间

的大小必须根据与输出信号相连接的器件及其特性来调整。下面我们简单举例说明下带死区的PWM信号的应用,我们以一个板桥驱动电路为例。

带死区插入的半桥驱动电路

带死区插入的互补输出波形图

③输出控制高级定时器功能框图讲解

④输出引脚输出比较的应用

在输出比较的输出控制中,参考信号OCxREF在经过死区发生器之后会产生两路带死区的互补信号OCx_DT和OCxN_DT(通道1~3才有互补信号,通道4没有,其余跟通道1~3一样),这两路带死区的互补信号然后就进入输出控制电路,如果没有加入死区控制,那么进入输出控制电路的信号就直接是OCxREF。

进入输出控制电路的信号会被分成两路,一路是原始信号,一路是被反向的信号,具体的由寄存器CCER的位CCxP和CCxNP控制。经过极性选择的信号是否由OCx引脚输出到外部引脚CHx/CHxN则由寄存器CCER的位CxE/CxNE配置。如果加入了断路(刹车)功能,则断路和死区寄存器BDTR的MOE、OSSI和OSSR这三个位会共同影响输出的信号。

④输出引脚

输出比较的输出信号最终是通过定时器的外部IO来输出的,分别为CH1/2/3/4,其中前面三个通道还有互补的输出通道CH1/2/3N。更加详细的IO说明还请查阅相关的数据手册。

输出比较的应用

1-输出比较模式总共有 8 种,常用的是PWM模式。

2-由寄存器 CCMRx 的位 OCxM[2:0]配置。

PWM输出模式

PWM 输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。

PWM输出模式—分类

有效:高电平;无效:低电平

边沿对齐 VS 中心对齐

1-根据CNT的计数方向,PWM波形分成边沿对齐和中心对齐两种。边沿对齐主要用于直流电机,中心对齐主要用于交流电机。

2-边沿对齐时,CNT只工作在递增或者递减。

3-中心对齐时,CNT工作在递增和递减。

PWM1边沿对齐模式的波形

PWM1中心对齐模式的波形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值