您的位置 首页 模拟

STM32F103系列单片机中的定时器作业原理解析

STM32F103系列单片机中的定时器工作原理解析-STM32F103系列的单片机一共有11个定时器,其中:

2个高级定时器

4个普通定时器

2个基本定时器

2个看门狗定时器

1个系统嘀嗒定时器

STM32F103系列的单片机一共有11个守时器,其间:

2个高档守时器

4个一般守时器

2个根本守时器

2个看门狗守时器

1个体系嘀嗒守时器

出去看门狗守时器和体系滴答守时器的八个守时器列表;

8个守时器分红3个组;

TIM1和TIM8是高档守时器

TIM2-TIM5是通用守时器

TIM6和TIM7是根本的守时器

这8个守时器都是16位的,它们的计数器的类型除了根本守时器TIM6和TIM7都支撑向上,向下,向上/向下这3种计数形式

STM32F103系列单片机中的守时器作业原理解析

计数器三种计数形式

向上计数形式:从0开端,计到arr预设值,发生溢出事情,回来从头计时

向下计数形式:从arr预设值开端,计到0,发生溢出事情,回来从头计时

中心对齐形式:从0开端向上计数,计到arr发生溢出事情,然后向下计数,计数到1今后,又发生溢出,然后再从0开端向上计数。(此种技能办法也可叫向上/向下计数)

根本守时器(TIM6,TIM7)的主要功用:

只需最根本的守时功用,。根本守时器TIM6和TIM7各包括一个16位主动装载计数器,由各自的可编程预分频器驱动

通用守时器(TIM2~TIM5)的主要功用:

除了根本的守时器的功用外,还具有丈量输入信号的脉冲长度( 输入捕获) 或许发生输出波形( 输出比较和PWM)

高档守时器(TIM1,TIM8)的主要功用:

高档守时器不光具有根本,通用守时器的一切的功用,还具有操控交直流电动机一切的功用,你比方它能够输出6路互补带死区的信号,刹车功用等等

通用守时器的时钟来历;

a:内部时钟(CK_INT)

b:外部时钟形式1:外部输入脚(TIx)

c:外部时钟形式2:外部触发输入(ETR)

d:内部触发输入(ITRx):运用一个守时器作为另一个守时器的预分频器

通用守时期内部时钟的发生:

从截图能够看到通用守时器(TIM2-7)的时钟不是直接来自APB1,而是经过APB1的预分频器今后才抵达守时器模块。

当APB1的预分频器系数为1时,这个倍频器就不起作用了,守时器的时钟频率等于APB1的频率;

当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,守时器的时钟频率等于APB1时钟频率的两倍。

主动装在寄存器arr值的核算:

Tout= ((arr+1)*(psc+1))/Tclk;

Tclk:TIM3的输入时钟频率(单位为Mhz)。

Tout:TIM3溢出时刻(单位为us)。

计时1S,输入时钟频率为72MHz,参加PSC预分频器的值为35999,那么:

((1+psc )/72M)*(1+arr )=((1+35999)/72M)*(1+arr)=1秒

则可核算得出主动窗装载寄存器arr=1999

通用守时器PWM作业原理

以PWM形式2,守时器3向上计数,有用电平是高电平,守时器3的第3个PWM通道为例:

守时器3的第3个PWM通道对应是PB0这引脚,三角极点的值便是TIM3_ARR寄存器的值,上图这条红线的值就TIM3_CCR3

当守时器3的计数器(TIM3_CNT)刚开端计数的时分是小于捕获/比较寄存器(TIM3_CCR3)的值,

此刻PB0输出低电平,跟着计数器(TIM3_CNT)值渐渐的添加,

当计数器(TIM3_CNT)大于捕获/比较寄存器(TIM3_CCR3)的值时,这时PB0电平就会翻转,输出高电平,计数器(TIM3_CNT)的值持续添加,

当TIM3_CNT=TIM3_ARR的值时,TIM3_CNT从头回到0持续计数,PB0电平翻转,输出低电平,此刻一个完好的PWM信号就诞生了。

PWM输出形式;

STM32的PWM输出有两种形式:

形式1和形式2,由TIMx_CCMRx寄存器中的OCxM位确认的(“110”为形式1,“111”为形式2)。差异如下:

110:PWM形式1,在向上计数时,一旦TIMx_CNT

在向下计数时,一旦TIMx_CNT》TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有用电平(OC1REF=1)。

111:PWM形式2-在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为有用电平,否则为无效电平。

由以上可知:

形式1和形式2正好互补,互为相反,所以在运用起来不同也并不太大。而从计数形式上来看,PWM也和TIMx在作守时器时相同,也有向上计数形式、向下计数形式和中心对齐形式

PWM的输出管脚:

不同的TIMx输出的引脚是不同(此处规划管脚重映射)

TIM3复用功用重映射:

注:重映射是为了PCB的规划便利。值得一提的是,其分为部分映射和悉数映射

PWM输出频率的核算:

PWM输出的是一个方波信号,信号的频率是由TIMx的时钟频率和TIMx_ARR这个寄存器所决议的

输出信号的占空比则是由TIMx_CRRx寄存器确:

占空比=(TIMx_CRRx/TIMx_ARR)*100%

PWM频率的核算公式为:

其间

F便是PWM输出的频率,单位是:HZ;

ARR便是主动重装载寄存器(TIMx_ARR);

PSC 便是预分频器(TIMx_PSC);

72M便是体系的频率;

STM32 高档守时器PWM的输出

一路带死区时刻的互补PWM的波形图

STM32F103VC这款单片机一共有2个高档守时器TIM1和TIM8

这2个高档守时器都能够一起发生3路互补带死区时刻的PWM信号和一路独自的PWM信号,

具有刹车输入功用,在紧迫的情况下这个刹车功用能够堵截PWM信号的输出

还具有支撑针对定位的增量(正交)编码器和霍尔传感器电路

高档操控守时器(TIM1 和TIM8) 由一个16位的主动装载计数器组成,它由一个可编程的预分频器驱动

它合适多种用处,包括丈量输入信号的脉冲宽度( 输入捕获) ,或许发生输出波形(输出比较、PWM、嵌入死区时刻的互补PWM等)。

运用守时器预分频器和RCC时钟操控预分频器,能够完成脉冲宽度和波形周期从几个微秒到几个毫秒的调理。

高档操控守时器(TIM1 和TIM8) 和通用守时器(TIMx) 是彻底独立的,它们不同享任何资源

死区时刻

H桥电路为防止由于关断推迟效应形成上下桥臂直通,有必要设置死区时刻

死区时刻可有用地防止推迟效应所形成的一个桥臂未彻底关断,而另一桥臂又处于导通状况,防止直通炸开关管。

死区时刻越大,电路的作业也就越牢靠,但会带来输出波形的失真以及下降输出功率。

死区时刻小,输出波形要好一些,可是会下降体系的牢靠性,一般这个死区时刻设置为us级

元器件死区时刻是不能够改动的,它主要是取决于元器件的制造工艺和资料!

原则上死区时刻当然越小越好。设置死区时刻的意图,其实说白了便是为了电路的安全。最佳的设置办法是:在确保安全的前提下,设置的死区时刻越小越好。以不炸功率管、输出不短路为意图。

STM32死区时刻探求

设置寄存器:便是刹车和死区操控寄存器(TIMx_BDTR)

这个寄存器的第0—7位,这8个位便是用来设置死区时刻的,运用如下:

以TIM1为例阐明其频率是怎么发生的。

守时器1适中发生道路:

体系时钟-》 AHB预分频 -》 APB2预分频 –》 TIM1倍频器–》 发生TIM1的时钟体系

流程图看能够看出,要想知道TIM1的时钟,就的知道体系时钟,AHB预分频器的值,还有APB2预分频器的值,只需知道了这几个值,即可算出TIM1的时钟频率?

这些值从何来,在“SystemInit()”这个时钟的初始化函数中现已给咱们答案了,在这个函数中设置的体系时钟是72MZ,AHB预分频器和APB2预分频器值都是设置为1,由此可算出:TIM1时钟频率:

72MHZ了,TDTS=1/72MHZ=13.89ns

Tdtg死区时刻步进值,它的值是守时器的周期乘以相应的数字得到的

下面看看官方给的公式怎么运用,如下:

DTG[7:5]=0xx=》DT=DTG[6:0]×Tdtg,Tdtg=TDTS

首先由DTG[7:5]=0xx能够知道的是:DTG的第7位有必要为0,剩下的0~6这7位可装备死区时刻,假设TIM1的时钟为72M的话,那么由公式Tdtg=TDTS可核算出:TDTS=1/72MHZ=13.89ns。

有了这个值,然后经过公式DT=DTG[6:0]×Tdtg即可核算出DT的值。

假设DTG的第0~6位均为0的话,DT=0

假设DTG的第0~6位均为1的话,DT=127*13.89ns=1764ns

假设TIM1的时钟为72M的话,

公式1可设置的死区时刻0~1764ns,也便是说:

假设你的项目需求输出的PWM信号要求的死区时刻是0——1764ns的时分你就能够用公式1

相同可核算出4个公式的死去区间,如下:

公式1:DT=0~1764ns

公式2:DT=1777.9ns~3528.88ns

公式3:DT=3555.84ns~7000.56ns

公式4:DT=7111.68ns~14001.12ns

怎么设置死区时刻:

假设咱们规划了一个项目要求输出的PWM信号中参加一个3us的死区时刻由于3us这个值在第二个公式决议的死区规模之内所以挑选第二个公式。3000/(13.89*2)=108,

所以DTG[5:0]=108-64=44

所以DTG=127+44+32=203=0XCB,TIM1-》BDTR|=0Xcb

这儿为什么要在加上一个32那?在公式2中DTG的第5位是一个X,也便是说这一位能够设置为高电平,也能够设置为低电平,在这儿咱们将这一位设置为了高电平,一切要在加上一个32.如此而已!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/346942.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部