输入捕获简介
- IC(Input Capture)输入捕获
- 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,即把当前CNT的值读出来,写入CCR中去,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数;
- 每个高级定时器和通用定时器都拥有4个输入捕获通道;
- 可配置为PWMI模式,即PWM输入模式,专门为测量PWM频率和占空比设计的,同时测量频率和占空比;
- 可配合主从触发模式,实现硬件全自动测量;
频率测量
- 测频法:在闸门时间T内,对上升沿计次,得到N,则频率fX=N/T 【适合测量高频信号】
测频法结果更新慢,测量结果是一段时间的平均值,值比较平滑
频率的定义是:1s内出现多少个重复的周期,频率就是多少Hz 【适合测量低频信号】 - 测周法:两个上升沿内,以标准频率fc计次,得到N,则频率fx=fc/N
原理是周期的倒数就是频率
测周法结果更新更快,结果值会受噪声的影响,波动比较大
N的计次要尽可能大,这样子正负1误差就可以减小
- 中界频率:测频法与测周法误差相等的频率点,即计次N相同,fm=fc/T的开方;
总结:当待测频率小于中界频率时,用测周法误差更小;当待测频率大于中界频率时,用测频法误差更小;
结构
异或门的输出逻辑:当三个输入引脚的任何一个有电平翻转时,输出引脚就产生一次电平翻转,主要为三相无刷电机服务;
输入捕获通道
ICF输入捕获1滤波器:以采样频率对输入信号进行采样,当连续N个值都为高电平,输出才为高电平;连续N个值都为低电平,输出才为低电平;采样频率越低,采样个数N越大,滤波效果越好;
CC1S位对数据选择器进行选择;
ICPS位配置分频器;
CC1E为控制输出使能或失能;
TIFP1还可以通向从模式控制器,从模式是完成自动化操作的利器;
主从触发模式
-
主模式可以将定时器内部的信号,映射到TRGO引脚,用于触发别的外设,可以使用复位、使能、更新、比较脉冲和4个OCREF信号作为TRGO的输出;
-
从模式就是接收其他外设或者自身外设的一些信号,用于控制自身定时器的运行,也就是被别的信号控制;
-
触发源选择就是选择从模式的触发信号源;
输入捕获基本结构
先把CNT的值转运到CCR里面去,再触发从模式给CNT清零
ARR一般设置为最大值65535,所以CNT最大只能计65535个数;
如果想使用从模式自动清零CNT,只能选用通道1和通道2,因为从模式的触发源选择只有TI1FP和TI2FP;
PWMI基本结构
PWMI模式使用两个通道同时捕获一个引脚,可以同时测量周期和占空比;
CCR1是整个周期的计数值,CCR2是高电平时期的计数值,用CCR2/CCR1就得到占空比;
代码
输入捕获模式测频率
接线图
库函数
TIM_PrescalerConfig是单独写入PSC的函数;
TIM_ICInit用于初始化输入捕获单元,可以配置一个通道;
TIM_PWMIConfig用于初始化输入捕获单元,可以快速配置两个通道;
TIM_SelectInputTrigger选择输入触发源TRGI;
TIM_SelectOutputTrigger选择输出触发源TRGO;
TIM_SelectSlaveMode选择从模式;
TIM_SetIC1、2、3、4Prescaler分别单独配置通道1、2、3、4的分频器;
TIM_GetCapture1、2、3、4在输入捕获模式下,分别读取4个通道的CCR;
TIM_SetCompare1、2、3、4在输出比较模式下,分别写入4个通道CCR的值;
代码思路
- RCC开启时钟,把GPIO和TIM的时钟打开;
- GPIO初始化,把GPIO配置成输入模式;
- 配置时基单元,让CNT计数器在内部时钟驱动下自增运行;
- 配置输入捕获单元,包括滤波器、极性、直连通道还是交叉通道、分频器等参数;
- 选择从模式的触发源;
- 选择触发之后执行的操作;
- 调用TIM_Cmd函数,启动定时器;
PWMI模式测频率占空比
接线图
代码思路
- 开启时钟、GPIO和时基单元;
- TIM_PWMIConfig的参数传入一个通道的结构体信息后,该函数会自动的把另一个通道初始化成相反的配置,实现两个通道从一个引脚接收输入的功能;【只支持通道1和通道2的配置】
- 选择从模式的触发源;
- 选择触发之后执行的操作;
- 调用TIM_Cmd函数,启动定时器;
总结
本节内容在使用手册中主要对应14.3.5输入捕获模式和14.3.6PWM输入模式。
所测量的最低频率是1M/65535,即15Hz;
所测量的最大频率没有明显界限,只不过误差会变大;