1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
高级定时器
基本框图 时钟源 高级控制定时器有4个时钟源可选: 1.内部时钟源CK_INT。 2.外部时钟模式1:外部输入引脚TIx(x=1,2,3,4)。 3.外部时钟模式2:外部触发输入ETR 4.内部触发输入(ITRx) 内部时钟源(CN_INT) 内部时钟CN_INT即来自芯片内部,等于72MHz,一般情况下,我们都是使用内部时钟。 外部时钟模式1 1:时钟信号输入引脚 当使用外部时钟模式1的时候,时钟信号来自于定时器的输入通道,总共有2个,分别为TI1FP1和TI2FP2. 2:滤波器 如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用滤波器对信号重新采样,来达到降频或去除高频干扰的目的。 3:边沿检测 边沿检测的信号来自滤波器的输出,在成为触发信号之前,需要进行边沿检测,决定是上升沿有效,还是下降沿有效。 4:触发选择 当使用外部触发模式1时,触发源有2个,一个是滤波后的定时器输入1(TI1FP1)和滤波后的定时器输入2(TI2FP2)。 5:从模式选择 选定了触发源信号后,最后我们需要把信号连接到TRGI引脚,让触发信号成为外部时钟模式1的输入,最终等于CK_PSC,然后驱动计数器CNT计数。 6:使能计数器 经过上面5个步骤后,最后我们只需要使能计数器开始计数,外部时钟模式1的配置就算完成。 外部时钟模式2 1:时钟信号输入引脚 当使用外部时钟模式2的时候,时钟信号来自于定时器的特定输入通道TIMx_ETR,只有1个。 2:外部触发极性 来自ETR引脚输入的信号可以选择为上升沿有效或者下降沿有效。 3:外部触发预分频器 由于ETRP(经过触发极性选择后的ETR信号)的信号频率不能超过TIMx_CLK(72MHz)的1/4,当触发信号的频率很高的情况下,就必须使用分频器来降频。 4:滤波器 如果ETRP的信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用滤波器对ETRP信号重新采样,来达到降频或者去除高频干扰的目的。 5:从模式选择 经过滤波器滤波的信号连接到ETRF(ETR信号经过极性选择和滤波后的信号)引脚后,触发信号成为外部时钟模式2的输入,最终等于CK_PSC,然后驱动计数器CNT计数。 6:使能计数器 经过上面5个步骤之后,最后我们只需要使能计数器开始计数,外部时钟模式2的配置就算完成。 内部触发输入 内部触发输入是使用一个定时器作为另一个定时器的预分频器。硬件上高级控制定时器和通用定时器在内部连接在一起,可以实现定时器同步或级联。 主模式的定时器可以对从模式定时器执行复位、启动、停止或提供时钟。 控制器 高级控制定时器控制包括触发控制器、从模式控制器以及编码器接口。 **触发控制器**:用来针对片内外设输出触发信号,如果为其他定时器提供时钟和触发DAC/ADC转换。 **从模式控制器**:可以控制计数器复位、启动、递增/递减、计数。 **编码器接口**:针对编码器计数而设计。 时基部分 高级控制定时器时基单元功能包括4个寄存器,分别是:计数器寄存器(CNT)、预分频寄存器(PSC)、自动重载寄存器(ARR)、重复计数器(RCR)。 其中,重复计数器是高级定时器独有的,通用定时器和基本定时器都没用。 计数器寄存器、预分频寄存器、自动重载寄存器都是16位有效。重复寄存器是8位有效。 预分频PSC 预分频PSC,有一个输入时钟CK_PSC和一个输出时钟CK_CNT。输入时钟CK_PSC就是时钟源的输出,输出CK_CNT则是用来驱动计数器CNT计数。 fck_cnt = fck_psc/(PSC[15:0]+1) //因为计数是从0开始,所以要加1,可以实现1至65536分频 计数器CNT 高级定时器的计数器有3种计数模式,分别是:递增计数模式、递减计数模式和递增/递减(中心对齐)计数模式。 **递增计数模式**: 计数器从0开始计数,每来一个CK_CNT脉冲计数器就增加1,直到计数器的值与自动重载寄存器ARR值相等,然后计数器又从0开始计数并生成计数器上溢事件,计数器总是如此循环计数。 如果禁用重复计数器,在计数器生成上溢事件就马上生成更新时间(UEV); 如果使能重复计数器,每生成一次上溢事件重复计数器内容就减1,知道重复计数器内容为0时才会生成更新事件。 **递减计数模式**: 计数器从自动重载寄存器ARR值开始计数,每来一个CK_CNT脉冲计数器就减1,直到计数器值为0,然后计数器又从自动重载寄存器ARR值开始递减并生成计数器下溢事件,计数器总是如此循环计数。 如果禁用重复计数器,在计数器生成下溢事件就马上生成更新时间(UEV); 如果使能重复计数器,每生成一次下溢事件重复计数器内容就减1,知道重复计数器内容为0时才会生成更新事件。 **中心对齐模式**: 计数器从0开始递增计数,直到计数置等于(ARR-1)值生成计数器上溢事件,然后从ARR值开始递减计数直到1生成计数器下溢事件。然后又从0开始计数,如此循环。每次发生计数器上溢或下溢事件都会生成更新事件。 自动重载寄存器ARR 自动重载寄存器ARR用来存放与计数器CNT比较的值,如果二个值相等就递减重复计数器,可以配置重载影子寄存器功能,如果重载影子寄存器位(ARPE)置1,自动重载影子寄存器有效,只有在事件更新时才把自动重载寄存器的值赋给影子寄存器。如果ARPE位为0,则修改了自动重载寄存器值马上有效。 重复计数器RCR 在基本/通用定时器发生上溢/下溢事件时直接就生成更新时间,但对于高级定时器却不是这样,高级控制定时器在硬件结构上多出了重复计数器,在定时器发生上溢或下溢事件是递减重复计数器的值, **只有重复计数器为0时才会生成更新事件。在发生N+1个上溢或下溢事件(N为RCR的值)时产生更新事件。 输入捕获 输入捕获可以对输入的信号的上升沿、下降沿或者双边沿进行捕获,常用的有测量输入信号的脉宽和测量PWM输入信号的频率和占空比这二种。 输入捕获的大概的原理就是:当捕获到信号的跳变沿的时候,把计数器CNT的值锁存到捕获寄存器CCR种,把前后两次捕获到的CCR寄存器的值相减,就可以算出脉宽或频率。如果捕获到的脉宽的时间长度超过你的捕获定时器的周期,就会发生溢出,这个时候,我们需要做一些额外的处理。 1:输入通道 需要被测量的信号从定时器的外部引脚TIMx_CH1/2/3/4进入,通常叫TI1/2/3/4。 2:输入滤波和边沿检测器 在输入的信号存在高频干扰的时候,我们需要对输入信号进行滤波,即进行重新采样,根据采样定律,采样的频率必须大于等于2倍的输入信号。比如输入的信号为1M,又存在高频的信号干扰,那么此时就很有必要进行滤波,我们可以设置采样频率为2M,这样可以在保证采样到的有效信号的基础上把高于2M的高频干扰信号过滤掉。 滤波器的配置由CR1寄存器的为CKD[1:0]和CCMR1/2的为ICxF[3:0]控制。从ICxF位的描述可知,采样频率fsample可以由fck_int和fdts分频后的时钟提供,其中fck_int是内部时钟,fdts是fck_int经过分频后得到的频率,分频因子可以由CKD[1:0]决定,可以是不分频、2分频或者4分频。 边沿检测器用来设置信号在捕获的时候是什么边沿有效,可以是上升沿,下降沿或者双边沿。 3:捕获通道 捕获通道就是图中的IC1/2/3/4,每个捕获通道都有相对应的捕获寄存器CCR1/2/3/4,当发生捕获的时候,计数器CNT的值就会被锁存到捕获寄存器种。 这里我们要搞清楚输入通道和捕获通道的区别:输入通道是用来输入信号的,捕获通道是用来捕获输入信号的通道,一个输入通道的信号可以同时输入给两个捕获通道。 比如输入通道TI1的信号经过滤波边沿检测器之后的TI1FP1和TI1FP2可以进入捕获通道IC1和IC2,其实这就是我们后面要讲的PWM输入捕获,只有一路输入信号(TI1)却占用了两个捕获通道(IC1和IC2)。当只需要检测输入信号的脉宽的时候,用一个捕获通道即可。 4:预分频器 ICx的输出信号会经过一个预分频器,用于决定发生多少个事件时进行一次捕获。 5:捕获寄存器 经过预分频器的信号ICxPS是最终被捕获到的信号,当发生捕获时(第一次),计数器CNT的值会被锁存到捕获寄存器CCR中,还会产生CCxI中断,相应的中断位CCxIF(在SR寄存器中)会被置位,通过软件或者读取CCR中的值可以将CCxIF清0.如果发生第二次捕获(即重复捕获:CCR寄存器中已捕获到的计数器值且CCxIF标志已置1),则捕获溢出标志位CCxOF(在SR寄存器中)会被置位,CCxOF只能通过软件清零。 输出比较 输出比较就是通过定时器的外部引脚对外输出控制信号,有冻结、将通道x(x=1,2,3,4)设置为匹配时输出有效电平、将通道x设置为匹配时输出无效电平、翻转、强制为无效电平、强制为有效电平、PWM1和PWM2这8种模式。 1:比较寄存器 当计数器CNT的值跟比较寄存器CCR的值想等的时候,输出参考信号OCxREF的信号的极性就会改变,其中OCxREF=1(高电平)称为有效电平,OCxREF=0(低电平)称为无效电平,并且会产生比较中断CCxI,相应的标志位CCxIF(SR寄存器中)会置位。然后OCxREF再经过一系列的控制之后就会成为真正的输出信号OCx/OCxN。 2:死区发生器 在生成的参考波形OCxREF的基础上,可以插入死区时间,用于生成两路互补的输出信号OCx和OCxN,死区时间的大小具体由BDTR寄存器的位DTG[7:0]配置。死区时间的大小必须根据与输出信号相连接的器件即特性来调整。 下面以一个带死区的PWM信号的应用来举例说明: 在这个半桥驱动电路中,Q1导通,Q2截止,此时我想让Q1截止Q2导通,肯定是要先让Q1截止一段时间之后,再等一段时间才让Q2导通,那么这段等待的时间就成为死区时间,因为Q1关闭需要时间(由MOS管的工艺决定),如果Q1关闭之后,马上打开Q2,那么此时一段时间内相当于Q1和Q2都导通了,这样电路会短路。 上图带死区插入的互补输出图,其中死区时间要根据MOS管的工艺来调节。 3:输出控制 在输出比较的输出控制中,参考信号OCxREF在经过死区发生器之后会产生两路带死去的互补信号OCx_DT和OCxN_DT(通道13才有互补信号,通道4没有,其余跟通道13一样),这两路带死区的互补信号然后就进入输出控制电路,如果没有加入死区控制,那么进入输出控制电路的信号就直接是OCxREF。 进入输出控制电路的信号会被分为两路,一路是原始信号,一路是被反向的信号。 如果加入了断路(刹车)功能,则断路和死区寄存器BDTR的MOE、OSSI和OSSR这三个位会共同影响输出的信号。 4:输出引脚 输出比较的输出信号最终是通过定时器的外部IO来输出的,分别位CH1/2/3/4,其中前面3个通道还有互补的输出通道CH1N/CH2N/CH3N。 断路功能 短路功能就是电机控制的刹车功能,使能断路功能时,根据相关控制位状态修改输出信号电平。在任何情况下,OCx和OCxN都不能同时为有效电平,这关系到电机控制常用的H桥电路结构原因。 断路源可以是时钟故障事故,由内部复位时钟控制器中的始终安全系统(CSS)生成,也可以是外部断路输入IO,二者是或运算关系。 系统复位启动都默认关闭断路功能,将断路和死区寄存器(TIMx_BDTR)的BKE位置1,使能断路功能,可以通过TIMx_BDTR寄存器的BKP位设置断路输入引脚的有效电平,设置成1时输入BRK为高电平有效,否则低电平有效。 发送断路时,将产生以下效果: 1:TIMx_BDTR寄存器中主输出模式使能(MOE)位被清零,输出处于无效、空闲或复位状态。 2:根据相关控制位状态控制输出通道引脚电平:当使能通道互补通道时,会根据情况自动控制输出通道电平。 3:将TIMx_SR寄存器中的BIF位置1,并可产生中断和DMA传输请求。 4:如果TIMx_BDTR寄存器的自动输出使能(AOE)位置1,则MOE位会在发生下一个UEV事件时自动再次置1。 断路时,将产生以下效果: 1:TIMx_BDTR寄存器中主输出模式使能(MOE)位被清零,输出处于无效、空闲或复位状态。 2:根据相关控制位状态控制输出通道引脚电平:当使能通道互补通道时,会根据情况自动控制输出通道电平。 3:将TIMx_SR寄存器中的BIF位置1,并可产生中断和DMA传输请求。 4:如果TIMx_BDTR寄存器的自动输出使能(AOE)位置1,则MOE位会在发生下一个UEV事件时自动再次置1。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1817 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1103 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
739 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1692 浏览 2 评论
1951浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
756浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
586浏览 3评论
605浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
568浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 20:42 , Processed in 0.769667 second(s), Total 48, Slave 42 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号