![](https://i-blog.csdnimg.cn/blog_migrate/15fbc481d7f98dbe045083cb0d8868d6.png)
* 四个输入捕获和输出比较通道,共用四个CCR寄存器,四个通道的引脚也是共用的,所以对于同一个定时器,输入捕获和输出比较只能使用其中一个,不能同时使用
- 8输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数
*与外部中断的区别是,外部中断执行的动作是向CPU申请中断,而这里电路执行的动作是,控制后续电路
- 每个高级定时器和通用定时器都拥有4个输入捕获通道
*基本定时器没有输入捕获通道
- 可配置为PWMI模式,同时测量频率和占空比
*也就是PWM的输入模式
- 可配合主从触发模式,实现硬件全自动测量
频率测量
*STM32只能测量这种高低电平数字信号,如果需要测量一种正弦波,还需要搭建一个信号预处理电路(用运放搭建一个比较器)(并不清楚运放和比较器是什么),把正弦波转换为数字信号再输入给STM32;如果测量的信号电压非常高,那还需要考虑隔离的问题,比如用一些隔离放大器、电压互感器等元件,隔离高压端和低压端保证电路的安全
- 测频法:在闸门时间T内,对上升沿计次,得到N,则频率
𝑓𝑥=𝑁 / 𝑇
(适合高频信号)(结果更新慢,数值相对稳定)(相当自带一个均值滤波)
- 测周法:两个上升沿内,以标准频率fc计次,得到N ,则频率
𝑓𝑥=𝑓𝑐 / 𝑁
(周期的倒数就是频率)(适合低频信号)(更新快,数据跳变也非常快)
- 中界频率:测频法与测周法误差相等的频率点
𝑓𝑚=𝑓𝑐 / 𝑇
(正负1误差:测频法每个周期信号不一定是完整的,可能只有半个周期,那么只能舍弃掉或者当作一个周期来看。测周法同理)(为了消除正负1的影响,要使N尽可能地大)(当有一个频率,测频法和测周法的N相同,说明误差相同,另两个方法N相等,把fx解出来,就是中界频率)(当大于中界频率,选用测频法,当小于中界频率,选用测周法)
本节输入捕获测频率,使用的方法是测周法
输入捕获的各部分电路
异或门:当三个输入引脚的任何一个有电平翻转时,输出引脚久产生一次电平翻转
*这个设计其实是为三相无刷电机服务的,无刷电机有3个霍尔传感器检测转子的位置,可以根据转子的位置换相,有了这个异或门,就可以在前三个通道接上无刷电机的霍尔传感器,然后这个定时器就作为无刷电机的接口定时器,去驱动换相电路工作
数据选择器(输入通道1的前面的那个):选择上面那个,就是三个引脚的异或值;选择下面那个,异或门就没用,4个通道各用各的引脚
输入滤波器:可以进行滤波,避免一些高频的毛刺信号误触发
边沿检测器:和外部中断那里一样,可以选择高电平触发,或者低电平触发
这里其实有两套输入滤波器和边沿检测器,第一套电路,经过滤波和极性选择,得到T1FP1(TI1 Filter Polarity 1),输入给通道1的后续电路,第二套电路,经过另一个滤波和极性选择,得到T1FP2(TI1 Filter Polarity 2),输入给下面通道2的后续电路。下面TI2的信号进来同理,得到TI2FP1和TI2FP2。其中TI2FP1输入给上面,TI2FP2输入给下面。
这里可以选择一个交叉,让CH2引脚输入给通道1,或者CH1引脚输入给通道2。选择交叉输入的目的:一,可以灵活切换后续捕获电路的输入;二,可以把一个引脚输入,同时映射到两个捕获的单元,这也是PWMI模式的经典结构(第一个捕获通道,使用上升沿触发,用来捕获周期;第二个捕获通道,使用下降沿触发,用来捕获占空比;两个通道同时对一个引脚捕获,就可以同时测量频率和占空比)
下面的通道3和通道4是同样的结构
TRC信号也可以选择作为捕获部分的输入,这样设计也是为了无刷电机的驱动
![](https://i-blog.csdnimg.cn/blog_migrate/ed4a69496391afe3f4e8c4c4bd24b7f2.png)
每来一个捕获信号,CNT(由内部的标准时钟驱动)的值就会向CCR转运一次,同时发生一个捕获事件,这个事件会在状态寄存器置标志位,同时也可以产生中断,如果需要在捕获的瞬间处理一些事情,就可以开启这个捕获中断
这也就是测周法,上升沿用于触发输入捕获,CNT用于计数计时,每来一个上升沿,取一下CNT的值,自动存在CCR里,CCR捕获的值就是计数值N,CNT的驱动时钟,就是fc
在一次捕获后CNT清0的操作,可以用主从触发模式,来自动完成
*这里省略道一套一样的电路,得到TI1FP2触发信号,连通到通道2的后续电路
fDTS是滤波器的采样时钟来源,CCMR1寄存器里的ICF位可以控制滤波器的参数(具体怎么工作,可以看看参考手册CCMR1寄存器那一节),CC1P可以选择极性,CC1S位可以对数据选择器进行选择,ICPS位可以配置这里的分频器,CC1E位控制输出使能或失能0
TI1FP1和TI1F_ED都可以通向从模式控制器
这三块就对应三个函数
TRGO用于触发外设
TRGI用于触发从模式
这个电路工作时,CCR1的值,始终保持为最新一个周期的计数值
CNT的值一般是有上限的,ARR一般设置为最大65535,那么CNT最大也只能记65535个数,如果信号频率太低,CNT计数值可能会溢出
从模式触发源选择没有TI3和TI4的信号,如果这里想使用从模式自动清零CNT,就只能使用通道1和通道2,对于通道3和通道4,就只能开启捕获中断,在中断里手动清零了,不过这样程序就会处于频繁中断的状态,比较消耗软件资源
TI1FP1设置上升沿触发,触发捕获和清零CNT,正常捕获周期
TI1FP2配置为下降沿触发,通过交叉通道,触发通道2的捕获单元
这一节对应参考手册的捕获/比较通道和输入捕获模式这两节
主从触发模式在定时器同步这一节