目录

一、输入捕获简介

1.输入捕获与输出比较对比

2.频率测量   

二、输入捕获电路详解

1.主从触发模式

2.输入捕获基本结构

 3.PWMI基本结构


一、输入捕获简介

        IC(Input Capture)输入捕获

        输入捕获的功能描述: 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,(就是输入引脚电平跳变的瞬间将CNT的值锁存到CCR中)。

        输入捕获的作用:可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数。

  • 每个高级定时器和通用定时器都拥有4个输入捕获通道,输入捕获电路中,通用定时器和高级定时器没有区别,都一样,基本定时器也没有输入捕获功能。
  • 可配置为PWMI模式,同时测量频率和占空比
  • 可配合主从触发模式,实现硬件全自动测量

        输入捕获对应的部分如下面两个图所示:输入捕获就是左边一部分电路,右边就是输出比较部分,四个输入捕获和输出比较通道共用四个CCR寄存器,另外他们的CH1到CH4 的4个通道的引脚也是共用的,所以对于同一个定时器输入捕获和速度比较只能使用其中一个不能同时使用。

        对应这个定时器的结构图,就是这四个是边沿信号输入引脚,一旦有边沿,比如说上升沿,那这一块输入滤波和边缘检测电路就会检测到这个上升沿,让输入捕获电路产生动作,所以这一块的作用和外部中断差不多,都是检测电平跳变,然后执行动作,只不过外部中断执行的动作是向cpu申请中断,而这里电路执行的动作就是控制后续电路,让当前CNT的值所存到CCR寄存器中。

1.输入捕获与输出比较对比

  • 输出比较就是输出比较,引脚是输出端口。
  • 输入捕获中引脚是输入端口,输出比较是根据CNT和CCR的大小关系来执行输出动作,输入捕获是接收到输入信号,执行CNT锁存到CCR的动作,这就是输入捕获的执行流程和与输出比较的区别。

2.频率测量   

        如下图所示:越往左频率越高,越往右频率越低,这里信号都是只有高低电平的数字信号,对于STM32测频率而言,它也是只能测量数字信号的,如果你需要测量一个正弦波,那还需要搭建一个信号预处理电路,最简单的就是用运放搭一个比较器,把正弦波转换为数字信号,再输入给STM32就行了,如果测量的信号电压非常高,那还要考虑一下隔离的问题,比如用一些隔离放大器,电压互感器等软件隔离高压端和低压端,以保证电路的安全。

  • 第一中方法适合高频的。
  • 第二种适合低频的。
  • 第三中中界频率是把前面两个的N相等,然后靠相等推出来的。

        在这几个方法中,N越大,误差越小,但是都容易出现同一个问题,就是计次可能存在正负一的误差,就是计数计一半的时候,时间到了,这个时候要么多加一个周期,要么扔掉计数的半个周期,因此N值最好打一点,这样误差就小了。


二、输入捕获电路详解

     从左到右来看,最左边是四个通道的引脚,参考引脚定义表,就能知道这个引脚是复用在了哪个位置。然后引脚进来,这里有一个三输入的异或门,这个异或门的输入接待了通道1、2、3端口,当三个输出引脚就产生一次电平翻转之后输出通过数据选择器到达输入捕获通道
一,数据选择器如果选择上面一个,那输入捕获通道一的输入就是三个引脚的异或值,如果选择下面一个,那异或门就没有用,四个通道各用各的引脚,设计这个异或门其实还是为三相无刷电机服务的,无刷电机有三个霍尔传感器检测转子的位置,可以根据转子的位置进行换相,有了这个异或门就可以在前三个通道接上无刷电机的霍尔传感器,然后这个定时器就作为无刷电机的接口,定时器去驱动换相电路工作。

        然后继续看输入信号过来来到了输入滤波器和边缘检测器,输入滤波器可以对信号进行滤波,避免一些高频的毛刺信号误触发,
然后边缘检测器,

        这就和外部中断那里是一样的,可以选择高电平触发或者低电平触发,当出现指定的电平时,边缘检测电路就会触发后续电路执行动作,另外这里它其实是设计了两套滤波和边缘检测电路,第一套电路经过滤波和极性选择,得到TI1FP1(TI1 Filter Polarity 1)输入给通道一的后续电路,第二套电路经过另一个滤波和急性选择;得到TI1FP2输给下面通道二的后续电路,同理下面TI2信号进来也经过两套滤波和极性原则,得到TI2FP1和TI2FP2,其中TI2FP1输给上面,TI2FP2 输入给下面,在这里两个信号进来可以选择各走各的,也可以选择进行一个交叉,让CH2引脚输入给通道一或者CH1引脚输入给通道二,那这里为什么要进行一个交叉连接呢?这样做的目的,个人认为主要有两个,第一个目的可以灵活切换后续捕获电路的输入,比如你一会儿想以CH1作为输入,一会儿想以CH2作为输入,这样就可以通过这个数据选择器灵活的进行选择,第二个目的,也是它交叉的主要目的,就是可以把一个引脚的输入同时映射的两个捕获单元,这也是pwm模式的经典结构。

第一个捕获通道使用上升沿触发用来捕获周期,第二个通道使用下降沿触发用来捕获占空比,两个通道同时对一个硬件进行捕获就可以同时测量频率和占空比,这就是pwm模式,一个通道灵活切换两个硬件和两个通道同时捕获一个硬件,这就是这里交叉一下的作用和目的,同样下面通道三和通道四也是一样的结构,也可以选择进行交叉,另外这里还有一个TRC信号,也可以选择作为捕获部分的输入,这个TRC信号是来源于如下图所示。

        输入信号进行滤波和极性选择后就来到了预分频器,分屏之后的触发信号就可以触发捕获电路进行工作了,每来一个触发信号CNT的值就会向CCR转运一次,转运的同时会发生一个捕获事件,这个事件会在状态寄存器置标志位,同时也可以产生中断,如果需要在捕获的瞬间处理一些事情的话就可以开启这个捕获中断,这就是整个电路的工作流程。
        比如可以配置上升沿触发捕获,每来一个上升沿CNT转运到CCR一次,又因为这个CNT计数器是由内部的标准始终驱动的,所以CNT的数值,其实就可以用来记录两个上升沿之间的时间间隔,这个时间间隔就是周期,再取个倒数就是测周法测量的频率

        那回到这里是不是就和这里的测周法差不多的意思,上升沿用于触发输入捕获,CNT用于计数计时,每来一个上升沿取一下CNT的值,自动存在CCR里,CCR捕获到的值,就是计数值N,就是上面频率测量中的 fc/n 就得到了待测信号的频率的算法。

        另外这里还有一个细节问题,就是每次捕获之后,我们都要把CNT清0一下,这样下次上升沿再捕获的时候取出的CNT才是两个上升沿的时间间隔,这个在一次捕获后自动将CNT清0的步骤,我们可以用主从触发模式自动来完成。

        下图是一个捕获通道一的更详细的框图,基本功能都是一样的。

        引脚进来还是先经过一个滤波器,滤波器的输入是TI1,就是CH1的引脚,输出的TI1F就是滤波后的信号,fDTS是滤波器的采样时钟来源。

        下面TIMx_CCMR1寄存器里的ICF位可以控制滤波器的参数,那这个滤波器具体是怎么工作的呢,可以看一下手册(14.4.7)。

        然后滤波之后的信号通过边缘检测器捕获上升沿或者下降,沿用这个TIMx_CCER寄存器里面的CC1P位,就可以选择极限了,最终得到TI1FP1触发信号,通过数据选择器,进入通道一后续的捕获电路,当然这里实际上应该还有一套一样的电路,得到TI1FP2触发信号,连通到通道二的后续电路,这里并没有画出来

        同样通道二有TI2FP1连通道通道一的后续,通道二也还有TI2FP2连通到通道二的后续,总共是四种连接方式。
        然后经过后面的数据选择器进入后续捕获部分电路,TIMx_CCMR1中的CC1S位可以对数据选择器进行选择,之后TIMx_CCMR1中ICPS位可以配置这里的分频器,可以选择不分频,二分频,4分频,8分频,最后CC1E位,控制输出使能或者失能。如果使能的输出,输入端产生指定边缘信号,经过层层电路。经过层层电路。到达这里就可以让这里CNT的值转运到CCR里面来。另外每捕获一次CNT的值都要把CNT清零一下,以便于下一次的捕获,在这里硬件电路就可以在捕获之后自动完成CNT的清零工作。

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

1.主从触发模式

         主从触发模式,主从触发模式有什么用,如何来完成硬件自动化的操作。主从触发模式就是主模式,从模式和触发源选择这三个功能的简称,其中主模式可以将定时器内部的信号,映射TRGO引脚,用于触发别的外设,所以这部分叫做主模式。从模式就是接收其他外设或者自身外设的一些信号用于控制自身定时器的运行,也就是被别的信号控制,所以这部分叫从模式。触发源选择就是选择从模式的触发信号源的,可以认为它是从模式的一部分,触发源选择选择指定的一个信号得到TRGI去触发从模式,从模式可以在这个列表里选择一项操作来自动执行,如果想完成我们刚才说的任务,想让TI1FP1信号自动触发CNT清零,那触发源选择就可以选中这里的TI1FP1,从模式执行的操作就可以选择执行Reset的操作,这样TI1FP1的信号就可以自动触发从模式,从模式自动清零CNT,实现硬件全自动测量。

2.输入捕获基本结构

        这个结构图只使用了一个通道,所以它目前只能测量频率,在右上角这里是时基单元,我们把时基单元配置好启动定时器,那这个CNT就会在预分频之后的这个时钟驱动下不断自增,这个CNT就是我们测周法用来计数计时的东西,经过预分频之后,这个位置的时钟频率就是驱动CNT的标准频率fc。这里不难看出来标准频率等于72兆/预分频系数,然后下面输入捕获通道一的GPIO口输入一个这样的方波信号经过滤波器和边缘检测选择TI1FP1为上升沿触发之后输入选择直连的通道分频器,选择不分频,当TI1FP1出现上升沿之后,CNT的当前记录值转运到CCR里,同时触发源选择选中TI1FP1为触发信号,从模式选择复位操作,这样TI1FP1的上升沿也会通过上面这一路去触发CNT清零。当然这里会有个先后顺序,肯定是得先转运CNT的值到CCR里去,再触发从模式给CNT清零或者是非阻塞的同时转移CNT的值转移到CCR,同时0转移到CNT里面。总之肯定不会是先清零再捕获啊。

首先是这里CNT的值是有上限的,ARR一般设置为最大65535
其次CNT最大也只能记65535个数,如果信号频率太低,CNT计数值可能会溢出。
另外还有就是这个从模式的触发源选择,只有TI1FP1和TI2FP2,没有ti 3TI3和TI4的信号,所以这里如果想使用从模式自动清理CNT就只能用通道一和通道二,对于通道三和通道四就只能开启捕获中断,在中断里手动清理了,不过这样程序就会处于频繁中断的状态,比较消耗软件资源。

 3.PWMI基本结构

        PWMI模式使用了两个通道同时捕获一个引脚,可以同时测量周期和占空比,

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐