6.5 TMI输入捕获
输入捕获简介
IC(Input Capture)输入捕获
输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔(频率)、电平持续时间(占空比)等参数
每个高级定时器和通用定时器都拥有4个输入捕获通道
可配置为PWMI模式,同时测量频率和占空比
可配合主从触发模式,实现硬件全自动测量
频率测量
测频法(高频):在闸门时间T内,对上升沿计次,得到N,则频率𝑓_𝑥=𝑁 / 𝑇
测周法(低频):两个上升沿内,以标准频率fc计次,得到N ,则频率𝑓_𝑥=𝑓_𝑐 / 𝑁
中界频率:测频法与测周法误差相等的频率点𝑓_𝑚=√(𝑓_𝑐 / 𝑇)
输入捕获通道
滤波器:
采样频率越低,采样个数越大,意味着采集到的样本之间的时间间隔更长,信号变化的速率更缓慢,这使得信号更容易被数字滤波算法捕捉到和处理。因此,在滤波器的设计过程中,通常会采用较低的采样频率以获取较多的采样个数,以获得更好的滤波效果。
在数字滤波中,基于样本的离散时间模型,采样频率越高,对应的采样间隔越短,这使得数字滤波器对高频噪声的抑制效果更好,但相对应的,也会使得数字滤波器对低频的信号变化更加敏感,会出现信号截止或干扰等情况。而如果采样频率低于信号的特征频率,将导致混叠等问题。
同时,由于数字滤波算法中采样个数越多,所依据的统计量越准确,因此也可以进一步提高滤波器的性能。例如,一些经典的数字滤波算法,如 FIR 和 IIR 滤波器,在设计时会考虑到采样间隔的长短和采样个数的数量,以提高算法的性能和滤波效果。
综上所述,采样频率和采样个数是数字滤波器设计中的重要参数,根据具体的应用场景和信号特性选择适当的采样频率和采样个数,可以获得更好的滤波效果。
主从触发模式
输入捕获基本结构
函数说明:
//初始化TIM输入捕获功能,设置TIM各通道的输入捕获模式、输入滤波器、输入时钟分频等参数
void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
//快速配置2个通道
void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
//初始化TIM输入捕获模式结构体,将结构体成员变量设置为默认值
void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);
//选择TIM的输入触发源(TRGI),即在何种事件下TIM开始计数
void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
//选择TIM的输出触发源(TRGO),即在定时器溢出周期结束时是否产生触发信号,触发其他外设的操作
void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);
//选择TIM的从模式,即控制TIM何时从主设备(外部触发源)开始计数
void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
设置TIM的捕获/比较通道1-4的比较值。这些通道可以用于产生PWM信号、输出比较结果等
void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1);
void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2);
void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3);
void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4);
获取TIM的捕获/比较通道1-4的捕获值,即在触发事件发生时定时器的计数值
uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture2(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture3(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture4(TIM_TypeDef* TIMx);
PWMI基本结构