历史上的今天
返回首页

历史上的今天

今天是:2024年10月28日(星期一)

正在发生

2021年10月28日 | stm32专题二十六:高级定时器介绍

2021-10-28 来源:eefocus

高级定时器


STM32F103有 2 个高级定时器 TIM1 和 TIM8,高级定时器的功能主要有定时、输入捕获、输出比较、互补输出等。


高级定时器简介:


计数器16bit,上 / 下 / 两边 计数,TIM1和TIM8,还有一个重复计数器RCR,独有;


有4个GPIO,其中通道1 ~ 3还有互补输出GPIO;


时钟来自PCLK2,为72M,可实现1~65536分频;


高级定时器和通用定时器的引脚分布:

高级定时器结构框图(分成6个部分):

一、时钟源:


内部时钟(CK_INT);


外部时钟模式1:外部输入引脚;


外部时钟模式2:外部触发输入ETR;


内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器;


下面,我们来分析一下这个时钟源的框图:

1 内部时钟CK_INT:内部时钟 CK_INT 即来自于芯片内部,等于 72M,一般情况下,我们都是使用内部时钟;


2 外部时钟模式1:

(1)时钟信号输入引脚:


当使用外部时钟模式1时,时钟信号来自于定时器的输入通道,共 4个,分别为 TI1 / 2 / 3 / 4,即 TIMx_CH1 / 2 / 3 / 4。


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

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

中文参考手册中提到,通道2可以配置为输出,如果是输入模式,可以选择连接CH1 or CH2,同样的,通道1也可以选择配置成连接CH1 or CH2。


(2)滤波器:


如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用滤波器对信号重新采样,来达到降频或者去除高频干扰的目的,具体的由 TIMx_CCMRx的位 ICxF[3:0]配置。


具体如何滤波?

(3)边沿检测:


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

(4)触发选择:

(5)从模式选择:


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


3 外部时钟模式2

网上关于TI1FP1的描述:


       比如 TI1FP1 与 TI1FP2。说实在的,这个地方参考手册里就没有个明确的表述,让人很费解。但是可以可以推理得出来,二者都是来自同一 TI1 输入通道,经过输入滤波和边沿检测器后所产生的具有相同特征的信号,然后映射到不同的输入捕捉通道,本质上还是同一路信号。


 同理,TI2信号,经过滤波和边沿检测后产生了2路滤波信号,分别是TI2FP1与TI2FP2,它俩也是具有相同特征的信号,只是TI2FP1映射到捕捉通道IC1,TI2FP2映射到捕捉通道IC2。


4 内部触发输入:


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


二、控制器


三、时基

四、输入捕获


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


输入捕获的大概的原理就是:当捕获到信号的跳变沿的时候,把计数器 CNT 的值锁存到捕获寄存器 CCR 中,把前后两次捕获到的 CCR 寄存器中的值相减,就可以算出脉宽或者频率。如果捕获的脉宽的时间长度超过你的捕获定时器的周期,就会发生溢出,这个我们需要做额外的处理。


1 普通脉宽测量:当检测到第一个上升沿时,计数器CNT开始从0计数,又检测到下降沿时产生中断,此时的CNT值被锁存到CCR寄存器中,此时CCR的值就对应高电平的时间。


2 PWM输入测量:一路输入信号(TI1)占用两个捕获通道(IC1 和 IC2)。


输入捕获框图:

(1)输入通道:


需要被测量的信号从定时器的外部引脚 TIMx_CH1/2/3/4 进入,通常叫 TI1 / 2 / 3 / 4。


(2)输入滤波器和边沿检测器:


这一块和外部时钟模式一差不多。那么为什么需要滤波呢?


当输入的信号存在高频干扰的时候,我们需要对输入信号进行滤波,即进行重新采样,根据采样定律,采样的频率必须大于等于两倍的输入信号。比如输入的信号为 1M,又存在高频的信号干扰,那么此时就很有必要进行滤波,我们可以设置采样频率为 2M,这样可以在保证采样到有效信号的基础上把高于 2M 的高频干扰信号过滤掉。


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


(3)捕获通道:


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

这里我们要搞清楚输入通道和捕获通道的区别,输入通道是用来输入信号的,捕获通道是用来捕获输入信号的通道,一个输入通道的信号可以同时输入给两个捕获通道。比如输入通道 TI1 的信号经过滤波边沿检测器之后的 TI1FP1 和 TI1FP2 可以进入到捕获通道IC1 和 IC2,其实这就是 PWM 输入捕获,只有一路输入信号(TI1)却占用了两个捕获通道(IC1 和 IC2)。当只需要测量输入信号的脉宽时候,用一个捕获通道即可。


(4)预分频器(用来降频):


捕获通道 ICx 的输出信号会经过一个预分频器,用于决定发生多少个事件时进行一次捕获。具体的由寄存器 CCMRx 的位 ICxPSC配置,如果希望捕获信号的每一个边沿,则不分频。


(5)捕获寄存器:

五 输出比较:


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


结构框图:

1 比较寄存器:


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


2 死区发生器:


在生成的参考波形 OCxREF 的基础上,可以插入死区时间,用于生成两路互补的输出信号 OCx 和 OCxN,死区时间的大小具体由 BDTR 寄存器的位 DTG[7:0]配置。死区时间的大小必须根据 与输出信号相连接的器件及其特性来调整。下面我们简单举例说明下带死区的PWM 信号的应用,我们以一个板桥驱动电路为例。


为了理解死区发生器,先看一个电机桥式驱动电路:

3 输出控制:

4 输出引脚


输出比较的输出信号最终是通过定时器的外部 IO 来输出的,分别为 CH1 / 2 / 3 / 4,其中前面三个通道还有互补的输出通道 CH1 / 2 / 3N。


输入捕获的应用:


1 测量脉宽或频率

2 PWM输入模式:

输出比较的应用:


PWM输出:


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

PWM边沿对齐模式:

电机控制:


刹车功能描述(强制关闭输出,功能是防止电机损坏,此时输出为设置的空闲电平):

死区时间寄存器:

 

 


推荐阅读

史海拾趣

Bel Power Solutions公司的发展小趣事

在国内市场取得一定成绩后,Bel Power Solutions开始积极拓展国际市场。公司通过与全球知名企业的合作,成功将产品打入国际市场,并赢得了良好的声誉。同时,公司还积极寻求与系统集成商、分销商等建立长期稳定的合作关系,共同开拓市场。这些合作伙伴关系的建立,不仅为公司带来了更多的商业机会,还提升了公司的品牌影响力和市场份额。

CP Technology Inc公司的发展小趣事

CP Technology Inc成立之初,便专注于半导体技术的研发。公司研发团队成功开发出一种高效能、低功耗的芯片,这一创新为公司的快速崛起奠定了基石。随着技术的不断完善和产品的广泛应用,CP Technology Inc逐渐在半导体市场上占据了一席之地。公司通过持续的技术创新和产品迭代,不断满足市场需求,赢得了客户的信赖和支持。

启英泰伦(Chiplntelli)公司的发展小趣事

随着技术的不断进步和市场需求的日益增长,启英泰伦的芯片产品历经了多次迭代。从最初的AI语音芯片,到后来的AI语音Wi-Fi芯片、AI语音BLE芯片,公司形成了系列化的芯片产品布局。这些芯片广泛应用于智能家居、智能家电、智慧照明等领域,为客户提供了更自然、更简单、更智能的人机交互体验。启英泰伦的芯片产品在市场上获得了广泛的认可,服务客户超过5000家,累计装机量突破2000万台。

Boundary Devices公司的发展小趣事

Boundary Devices公司成立于2003年,总部位于美国亚利桑那州。创立之初,公司便专注于嵌入式系统硬件的开发与生产,凭借对技术的深刻理解和市场需求的敏锐洞察,Boundary Devices迅速在行业中崭露头角。其推出的Boundary Devices插座和适配器,因其兼容性强、性能稳定而备受市场青睐。同时,公司与NXP/Freescale建立了紧密的合作关系,共同推进i.MX系列处理器的应用与发展,为公司的后续发展奠定了坚实的基础。

Diamond SA公司的发展小趣事

在电子行业竞争日益激烈的背景下,Diamond SA公司开始寻求通过并购来实现规模扩张和资源整合。他们精心挑选了一些具有潜力的目标企业,通过谈判和交易成功完成了并购。这些并购不仅为Diamond SA公司带来了更多的技术资源和市场份额,还增强了公司的整体竞争力。

EAO公司的发展小趣事

在产品质量方面,EAO公司始终坚持品质至上的原则。公司建立了严格的质量管理体系和检测流程,确保每一件产品都符合高标准的质量要求。同时,EAO公司还注重员工素质的提升和技能培训,确保员工具备专业的技能和知识来保障产品质量。正是这种对品质的坚守和追求,让EAO公司在激烈的市场竞争中赢得了客户的信任和口碑。

请注意,以上故事均为虚构内容,旨在展示EAO公司在电子行业中可能的发展路径和成就。实际情况可能因公司战略、市场环境等因素而有所不同。

问答坊 | AI 解惑

常用运算放大器型号简介

常用运算放大器型号简介.pdf…

查看全部问答>

如何测量有风和无风

研发仪器中要测量风,只是在管道中测量是否有风通过即可。 工作条件是在直径6cm,长15cm的管道中测量有没有风通过,不要求测风速,感应有风通过即可,越灵敏越好。 请大家帮想想法子,我想用超声发送接收传感器,实现起来也干净利落,成本也低,才 ...…

查看全部问答>

手操器电路原理图+C源程序

本帖最后由 paulhyde 于 2014-9-15 09:37 编辑 这个电路和程序可以用啦,但是还有很多地方需要优化  …

查看全部问答>

请问 STM32芯片外部时钟能用有源晶振吗?谢谢

我现在做的一个板子上面用到AD652芯片,也需要外部时钟输入。现在对时钟感到很困惑,希望大家能给点意见。我的想法是: 1.stm32用石英晶振,AD652用有源晶振,但是1-2M的有源晶振很难买。 2.只用有源晶振,通过分频器分别给stm32、AD652提供时钟 ...…

查看全部问答>

ds1302读取只有三个能显示正确,怎么回事,实在检查不出问题所在

Write_Ds1302Byte(0x8f,0); 1。 sec = BCDToDEC(Read_DS1302Byte(SEC_READ));       Delay(100); 2。 min = BCDToDEC(Read_DS1302Byte(MIN_READ));               & ...…

查看全部问答>

移动网络的动态检测

TD-SCDMA 网络的动态检测 我们开发的产品用了TD模块,当网络信号好时,正常用应没关系。当网络信号不好时(没有网络时)连不TD网络。 别人是如何处理这些网络变化的情况的(有网络-->没有网络-->有网络). …

查看全部问答>

keil Debug里面的view为什么用不了?

我是新手,现在输出hello 教材上说Debug理的VIEW能看输出结果,但是我的为什么用不了啊》?…

查看全部问答>

PB订制wince问题?

用PB订制wince5,是不是必须用同时生成的eboot? 用别人的eboot行吗? 为什么我订制完wince后,用PB生成的eboot启动,就停在“Starting eboot ...”不动了。 平台是pxa270,eboot要做什么修改吗?…

查看全部问答>

找不到具有OpenAdapter入口函数的Dll,驱动版本显示是nv4_disp.dll

       我最近在学习WDD的一点开发,根据帮助文档说,所有Directo3D要用到的调用函数都是从相应Dll里的OpenAdapter或者OpenAdapter10接口,一步步导出来的。我在有些人的机器上找到了Dll,比如nvd3dum.dll,  但是有 ...…

查看全部问答>

突然connect不上了?help me

刚开始还用着挺好的,新建了一个工程后,连了好多次,怎么也connect不上。 挺急的,还请大家多帮忙,非常感谢。 Error connecting to the target: Error 0x80001240/-1072 Fatal Error during: Initialization, OCS, Target,  Device d ...…

查看全部问答>