STM32—TIM输入捕获

1. 输入捕获简介

  • IC(Input Capture)输入捕获
  • 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数
  • 每个高级定时器和通用定时器都拥有4个输入捕获通道
  • 可配置为PWMI模式,同时测量频率和占空比
  • 可配合主从触发模式,实现硬件全自动测量

那右边,就是我们之前讲过的输出比较部分,4个输入捕获和输出比较通道,共用4个CCR寄存器,另外它们的CH1到CH4,4个通道的引脚,也是共用的,所以对于同一个定时器,输入捕获和输出比较,只能使用其中一个,不能同时使用

输入滤波器可以对信号进行滤波,避免一些高频的毛刺信号误触发,边沿检测器,这就和外部中断那里是一样的了,可以选择高电平触发,或者低电平触发,当出现指定的电平时,边沿检测电路就会触发后续电路执行动作

另外这里,它其实是设计了两套滤波和边沿检测电路,第一套电路,经过滤波和极性选择,得到TI1FP1(Tl1 Filter Polarity 1),输入给通道1的后续电路,第二套电路,经过另一个滤波和极性选择,得到TI 1FP2(Tl1 Filter Polarity 2),输入给下面通道2的后续电路,同理,下面T2信号进来,也经过两套滤波和极性选择,得到TI2FP1,和TI2FP2

其中T2FP1,输入给上面,TI2FP2输入给下面,在这里,两个信号进来,可以选择各走各的,也可以选择进行一个交叉,让CH2引脚输入给通道1,或者CH1引脚输入给通道2,那这里为什么要进行一个交又连接呢?

  • 第一个目的,可以灵活切换后续捕获电路的输入,比如你一会儿想以CH1作为输入,一会儿想以CH2作为输入 ,这样就可以通过这个数据选择器,灵活地进行选择
  • 第二个目的,也是它交又的主要目的,就是可以把一个引脚的输入,同时映射到两个捕获单元,这也是PWMI模式的经典结构

输入信号进行滤波和极性选择后,就来到了预分频器,预分频器,每个通道各有一个,可以选择对前面的信号进行分频,可以选择对前面的信号进行分频,分频之后的触发信号,就可以触发捕获电路进行工作了,每来一个触发信号,CNT的值,就会向CCR转运一次,转运的同时,会发生一个捕获事件,这个事件会在状态寄存器置标志位,同时也可以产生中断,如果需要在捕获的瞬间,处理一些事情的话,就可以开启这个捕获中断

1.1频率测量

  • 测频法适合测量高频信号,测频法测量结果更新的慢一些,数值相对稳定
    • 测频法测量的是在闸门时间内的多个周期,它自带一个均值滤波,如果在闸门时间内波形频率有变化,那得到的其实是这一段时间的平均频率,如果闸门时间选为1s,那么每隔1s才能得到一次结果,测量结果是一段时间的平均值,值比较平滑
  • 测周法适合测量低频信号,低频信号,周期比较长,计次就会比较多,有助于减小误差,测周法更新的快,数据跳变也非常快
    • 测周法,它只测量一个周期,就能出一次结果,所以出结果的速度取决于待测信号的频率,所以出结果的速度取决于待测信号的频率,但是由于它只测量一个周期,结果值会受噪声的影响,波动比较大
  • 测频法计次和测周法计次,这个计次数量N,尽量要大一些,N越大,相对误差越小,因为在这些方法中,计次可能会存在正负1误差,
    • 比如测频法,在闸门时间内,比如在最后时间里,可能有一个周期刚出现一半,闸门时间就到了,那这只有半个周期,只能舍弃掉或者当做一整个周期来看,那在这个过程,就会出现多计一个,或者少计一个的情况,这就叫做正负1误差

1.2 输入捕获通道

引脚进来,还是先经过一个滤波器,滤波器的输入是TI1,就是CH1的引脚,输出的TI1F,就是滤波后的信号,fDTS是滤波器的采样时钟来源,下面CCMR1寄存器里的ICF位可以控制滤波器的参数,

那这个滤波器具体是怎么工作的呢?

  • 简单理解,这个滤波器工作原理就是,以采样频率对输公信号进行采样,当连续N个值都为高电平,输出才为高电平,当连续N个值都为低电平,输出才为低电平,如果你信号出现高频抖动,导致连续采样心个值不全都一样,那输出就不会变化,这样就可以达到滤波的效果,采样频率越低,采样个数心越大:滤波效果就越好
  • 那图下面这些描述,就是每个参数对应的采样频率和采样个数,在实际应用中,如果波形噪声比较太,就可以把这个参数设置大些,这样就可以过滤噪声了

滤波之后的信号通过边沿检测器,捕获上升沿或者下降沿,用这个CCER寄存器里的CC1P位,就可以选择极性了,最终得到T1FP1触发信号,通过数据选择器,进入通道1后续的捕获电路

然后经过这里的数据选择器,进入后续捕获部分电路,CC1S位可以对数据选择器进行选择,之后ICPS位,可以配置这里的分频器,可以选择不分频、2分频、4分频、8分频,最后CC1E位,控制输出使能或失能

如果使能了输出,输入端产生指定边沿信号,经过层层电路,到达这里,就可以让这里CNT的值,转运到CCR里面来,另外我们刚才说了,每捕获一次CNT的值,都要把CNT清零一下,以便于下一次的捕获,在这里硬件电路就可以在捕获之后自动完成CNT的清零工作,

如何自动清零CNT呢,这个TI1FP1信号和TI1的边沿信号,都可以通向从模式控制器,比如I1FP1信号的上升沿触发捕获,那通过这里,TI1FP1还可以同时触发从模式,这个从模式里面,就有电路,可以自动完成CNT的清零,所以可以看出,这个从模式就是完成自动化操作的利器

1.3 主从触发模式

主从触发模式有什么用,如何来完成硬件自动化的操作,主从触发模式,就是主模式、从模式和触发源选择这三个功能的简称

  • 其中主模式可以将定时器内部的信号,映射到TRGO引脚,用于触发别的外设,所以这部分叫做主模式,
  • 从模式呢,就是接收其他外设或者自身外设的一些信号,用于控制自身定时器的运行,也就是被别的信号控制
  • 触发源选择,就是选择从模式的触发信号源的,可以认为它是从模式的一部分,触发源选择,选择指定的一个信号,得到TRGI,TRGI去触发从模式,从模式可以在这个列表里,选择一项操作来自动执行

如果想完成我们刚才说的任务,想让T1FP1信号自动触发CNT清零,那触发源选择,就可以选中这里的I1FP1,从模式执行的操作,就可以选择执行Reset的操作,这样T1FP1的信号就可以自动触发从模式,从模式自动清零CNT,实现硬件全自动测量

1.5 输入捕获基本结构

这个结构,我们只使用了一个通道,所以它目前只能测量频率,在右上角这里,是时基单元,我们把时基单元配置好,启动定时器,就会在预分频之后的这个时钟驱动下,不断自增,那这个CNT,就是我们测周法用来计数计时的东西,经过预分频之后这个位置的时钟频率,就是驱动CNT的标准频率fc,这里不难看出,标准频率=72M/预分频系数,

然后下面输入捕获通道1的GPIO口,输入一个这样的方波信号,经过滤波器和边沿检测,选择TI1FP1为上升沿触发,之后输入选择直连的通道,分频器选择不分频,当TI1FP1出现上升沿之后,CNT的当前计数值转运到CCR1里,同时触发源选择,选中T1FP1为触发信号,从模式选择复位操作,这样TI1FP1的上升沿,也会通过上面这一路,去触发CNT清零

当然这里会有个先后顺序,肯定得是先转运CNT的值到CCR里去,再触发从模式给CNT清零,或者是非阻塞的同时转移,CNT的值转移到CCR,同时0转移到CNT里面去

在这里,信号出现一个上升沿,CCR1=CNTT,就是把CNT的值转运到CCR1里面去,这是输入捕获自动执行的,然后CNT=0,清零计数器,这是从模式自动执行的,然后在一个周期之内,CNT在标准时钟的驱动下,不断自增,并且由于之前清零过了,所以CNT就是从上升沿开始,从0开始计数,一直++,直到,下一次上升沿来临,然后执行相同的操作,注意,第二次捕获的时候,这个CNT是不是就是从这里到这里的计数值啊,这个计数值就自动放在CCR1里面

当这个电路工作时,CCR1的值,始终保持为最新一个周期的计数值,这个计数值就是这里的N,然后fc/N,就是信号的频率,所以,当我们想要读取信号的频率时,只需要读取CCR1得到N,再计算fcN,就行了,当我们不需要读取的时候,整个电路全自动的测量,不需要占用任何软件资源

注意事项:

  • 首先是这里CNT的值是有上限的,那CNT最大也只能计65535个数,如果信号频率太低,CNT计数值可能会溢出
  • 另外还有就是,这个从模式的触发源选择,在这里看到,只有TI1FP1和TI2FP2,没有TI3和T4的信号,所以这里如果想使用从模式自动清零CNT,就只能用通道1和通道2,对于通道3和通道4,就只能开启捕获中断,在中断里手动清零了,不过这样,程序就会处于频繁中断的状态,比较消耗软件资源,

1.6 PWMI基本结构

这个PWMI模式,使用了两个通道同时捕获一个引脚,可以同时测量周期和古空比,上面这部分结构,和刚才演示的一样,下面这里多了一个通道,首先,T1FP1配置上升沿触发,触发捕获和清零CNT,正常捕获周期, 这时我们再来一个刊1FP2,配置为下降沿触发,通过交又通道,去触发通道2的捕获单元

最开始上升沿,CCR1捕获,同时清零CNT,之后CNT-直++,然后,在下降沿这个时刻,触发CCR2捕获,所以这时CCR2的值,就是CNT从这里到这里的计数值,就是高电平期间的计数值,CCR2捕获,并不触发CNT清零,CNT继续++,直到下一次上升沿,CCR1捕获周期,CNT清零,这样执行之后,CCR1就是一整个周期的计数值,CCR2就是高电平期间的计数值,我们用CCR2/CCR1,是不是就是占空比了,这就是PWMI模式,使用两个通道来捕获频率和占空比的思路

另外这里,你可以两个通道同时捕获第一个引脚的输入,这样通道2的前面这一部分就没有用到,当然也可以配置两个通道同时捕获第二个引脚的输入,这样我们就是使用TI2FP1和TI2FP2这两个引脚了,这两个输入可以灵活切换。

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值