STM32的定时器输入通道都有一个滤波单元,分别位于每个输入通路上(下图中的黄色框)和外部触发输入通路上(下图中的兰色框),它们的作用是滤除输入信号上的高频干扰。
具体操作原理如下:
在TIMx_CR1中的CKD[1:0]可以由用户设置对输入信号的采样频率基准,有三种选择:
1)采样频率基准fDTS=定时器输入频率fCK_INT
2)采样频率基准fDTS=定时器输入频率fCK_INT/2
3)采样频率基准fDTS=定时器输入频率fCK_INT/4
然后使用上述频率作为基准对输入信号进行采样,当连续采样到N次个有效电平时,认为一次有效的输入电平。
实际的采样频率和采样次数可以由用户程序根据需要选择;外部触发输入通道的滤波参数在从模式控制寄存器(TIMx_SMCR)的ETF[3:0]中设置;每个输入通道的滤波参数在捕获/比较模式寄存器1(TIMx_CCMR1)或捕获/比较模式寄存器2(TIMx_CCMR2)的IC1F[3:0]、IC2F[3:0]、IC3F[3:0]和IC4F[3:0]中设置。
例如:当fCK_INT=72MHz时,选择fDTS=fCK_INT/2=36MHz,采样频率fSAMPLING=fDTS/2=18MHz且N=6,则频率高于3MHz的信号将被这个滤波器滤除,有效地屏蔽了高于3MHz的干扰。
比如,结合输入捕获的中断,可以轻松地实现按键的去抖动功能,而不需要软件的干预;这可是由硬件实现的去抖动功能,大大节省了软件的开销和程序代码的长度。
每个定时器最多可以实现4个按键的输入,这个方法也可以用于键盘矩阵的扫描,而且因为是通过中断实现,软件不需频繁的进行扫描动作。
用户1645129 2015-9-15 09:26
用户1372615 2014-7-2 09:02
分析的不错,不过忽略了一个问题,就是采样定理。所以实际结果应该在除以2,这样就正确了。
用户428060 2014-1-15 16:19
用户940424 2013-10-10 23:08
用户377235 2013-9-3 15:08
用户439615 2013-6-21 10:58
用户1639599 2013-3-22 01:53
用户377235 2012-11-11 23:32
则频率高于3MHz的信号将被这个滤波器滤除,有效地屏蔽了高于3MHz的干扰。 我觉得应该是18MHz,而不应该是3MHz. 这个理解是不对的,被滤掉的确实是高于3MHz的,原文写得是正确的。
用户1026285 2012-7-10 03:08
写得不错,谢谢分享
用户276134 2011-6-8 15:40