STM32输入捕获

TIM输入捕获:

        IC(Input Capture)输入捕获

        输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR  中,   可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数

        每个高级定时器和通用定时器都拥有4个输入捕获通道

        在高级定时器与通用定时器中,输入捕获电路没有区别,都是一样的,而基本定时器没有入            捕获电路。

        可配置为PWMI模式,同时测量频率和占空比

        这里的PWMI模式是PWM的输入模式,是专门为车辆PWM频率和占空比设计的。可配合主从          触发模式,实现硬件全自动测

 注:对比输出比较,引脚是输出端口,而输入捕获,引脚是输入端口

频率测量:

图中左边频率高,周期短,右边频率低,周期长。

  1. 测频法:在闸门时间T内,对上升沿计次,得到N,则频率fx=N / T   频率是单位时间内完成周期性变化的次数。
  2. 测周法:两个上升沿内,以标准频率fc计次,得到N ,则频率     fx=fc / N 意思是:一次标准频率的周期是1/fc,N次就是N/fc,所以频率就是fc/N.  适合测量低频信号

上面两种测量方法都具备正负一的误差(最后一个周期                         多或少半个周期),只能将计次N增加,减小正负一对N的影响。

  1. 中界频率:测频法与测周法误差相等的频率点
  2. fm=√fc / T
  3. fm是上面两种方法的式子联立,将fx解出来,就是Fm的值。

当待测信号大于中介频率fm时,测频法误差更小,选用测频法更合适。

当待测信号小于中介频率fm时,测周法误差更小,选用测周法更合适。

输入捕获CH1通道详细框图及分析:

1.TI1是滤波器的输入(CH1的引脚),TI1F是滤波后的输出信号,fDTS是滤波器的采样时钟来源

2.下面的CCMR1寄存器里的ICF位可以控制滤波器的参数

3,。 滤波之后的信号经过边沿检测器,捕获上升沿或下降沿,   用这个CCER寄存器里的CC1P位,就可以选择极性了,最终得到了TI1FP1触发信号,通过数据选择器(就是那个梯形的三输入符号)进入通道1后续的捕获电路(就是分频器及下面的寄存器)

4.CC1S位可以对数据选择器进行选择,之后的ICPS位可以配置分频器(1、2、4、8分频),最后CC1E位控制输出使能或失能,如果使能输出,输入端产生指定边沿信号,经过层层电路到达IC1PS就可以让这里的CNT的值转运到CCR来。

5.记得每捕获一次CNT的值都要把CNT清零,以便于下一次的捕获。

当然,这里的硬件电路就可以在捕获之后自动完成CNT的清零工作,完成自动清零工作可以看向至从模式控制器,TI1FP1信号和TI1的边沿信号都可以通向从模式控制器,比如TI1FP1信号的上升沿触发捕获,通过上面的路径,TI1FP还可以同时触发从模式,在从模式里,就有电路,可以自动完成CNT的清零。

注:当然这个图中应该有123步骤一模一样的电路,得到TI1FP2触发信号,连通到通道2的后续电路,这图中并没有画出来。同样,通道2有TI2FP1,连通到通道1的后续,通道二也有TI2FP2,联通到通道2的后续,经过数据选择器,进入后续的捕获电路。

主从触发模式

主从触发模式就是包含主模式,从模式,触发源选择。

  1. 主模式:主模式可以将定时器内部的信号,映射到TRGO引脚,用于触发别的外设,所以这部分叫主模式。

  1. 从模式:从模式就是接收其他外设或者自身外设的一些信号,用于控制自身定时器的运行,也就是被别的信号控制,所以这部分叫从模式。

  1. 触发源选择:触发源选择就是选择从模式的触发源信号源的,可以认为它是从模式的一部分。

触发源选择: 选择指定的一个信号,得到TRGI,TRGI取触发从模式,在从模式列表里,选择一项操作来自动执行。

如果想完成TI1FP1信号自动触发CNT清零,那触发源选择就可以选中这里的TI1FP1,,从模式执行的操作可以选择Reset的操作,这样就可以实现TI1FP1信号自动触发从模式,从模式自动清零CNT,实现硬件全自动测量。

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

注:1.ARR一般设置为最大数65535,那CNT最大也就65535,如果信号频率太低(周期长),CNT计数值可能会溢出。

2还有从模式的触发源选择只有TI1FP1和TI2FP2,没有TI3和TI4的信号,所以想使用从模式自动清零,就只能使用通道1和2对于通道3和4只能手动开启捕获中断手动清零了。

PWMI模式,使用了两个通道调试捕一个引脚,可以调试测量周期和占空比,比输入捕获基本结构多了一个TI1FP2,可以配置为下降沿触发,通过交叉通道,取触发通道2的捕获单元,当上升沿来临CCR1=CNT,CNT=0,CNT继续++,当下降沿来临,CCR2=CNT,然后直至下一个上升沿循环往复。

可以看出:

CCR1是一整个周期的计数值.

CCR2是周期中高电平的计数值.

所以CCR2/CCR1,就是占空比了。

输入捕获对应的函数及用法:

 

  1. 输入捕获的初始化函数(配置1个通道)
  2. 输入捕获初始化函数(快速配置两个通道,例如PWM1模式)
  3. 给输入捕获结构体赋一个初始值
  4. 选择输入触发源TRGI,对应上面主从触发模式图片中的从模式触发源选择
  5. 选择输出触发源TRGO,对应主模式输出的触发源选择。
  6. 选择从模式,对应主从模式图片中从模式部分。

7~10. 分别单独配置通道1、2、3、4的分频器。

11~14. 分别读取四个通道的CCR,且与SetCompare1~4对应,

在输出比较模式下,CCR是只写的,用要SetCompare1~4 写入。

在输入捕获模式下,CCR是只读的,要用GetCapture1~4读出。

配置输入捕获的基本步骤:

  1. RCC开启时钟,把GPIO和TIM的时钟打开。

       2.GPIO初始化,把GPIO配置成输入模式

       3.  配置时基单元,让CNT计数器在内部时钟的驱动下自增运行

        4.配置输入捕获单元,包括滤波器,极性选择,分频器等等参数

        5.选择从模式的触发源,TI1FP1

         6.选择触发后执行的操作,Reset

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值