完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
高级定时器
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边沿对齐模式: 电机控制: 刹车功能描述(强制关闭输出,功能是防止电机损坏,此时输出为设置的空闲电平): 死区时间寄存器: |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1752 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1611 浏览 1 评论
1052 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1666 浏览 2 评论
1924浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
711浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
560浏览 3评论
583浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
544浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 12:54 , Processed in 0.676464 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号