输入捕获滤波器
IC1F=0101:采样频率fSAMPLING=fMASTER/2;N=8 (fMASTER为内部时钟16M);0C1PSC=00,无预分频器,捕获输入口上检测到的每一个边沿都促发一次捕获
把滤波器放在分频的后面是为了保证通过的信号频率不超过某个限定,而不是为了滤除窄脉冲
滤波详解:TIM2通道一,二,三 ————> TI1(外部信号) ————> 输入滤波器IC1F[3:0] -----> IC1(滤波器输出信号) -------> 输入捕获预分频器IC1PSC[1:0] ----> 捕获/比较1寄存器
从上面的过程可以知道: 1)发生输入捕获所需要的跳变沿是由滤波器输出产生的。
2)滤波器和预分频器可软件编程,如果IC1F[3:0] = 0x0,则滤波器全通,即TI1 和 IC1是同一个信号?
?
对这个情况进行讲解:fSAMPLING=fMASTER/2=16M/2=8M,N=8,最大通过的脉冲频率为f=fSAMPLING/8=1M,这样就有效地屏蔽了高于1MHz的干扰。
附录:
问题1:当滤波器连续采样到N次个有效电平时,是输出这个电平?还是输出一个跳变? 问题2:当滤波器没有连续采样到N次个有效电平时,输出是的什么?
问题1答案:当滤波器连续采样到N次个有效电平时,就输出这个有效电平。 问题2答案:当滤波器没有连续采样到N次个有效电平时,再从0开始计数,输出一直保持上一次输出的有效电平。例如:滤波器上一次输出是高电平,本次连续采样到N-1个高低平,但第N是个低电平,那么滤波器仍然保持上次输出的高电疲?⒅匦驴?技剖??锹?次低电平,如果在其后采样的N-1个也是低电平,此时滤波才输出低电平,于是一个下降沿才出现在IC1上
*/
#define IC_FILTER (u8)(5 << 4) //讲5所对应的二进制数左移4位 101 -> 0101 0000
TIM2->CCMR1 |= IC_FILTER;
TIM2->CCMR2 |= IC_FILTER;
TIM2->CCMR3 |= IC_FILTER;
转载 |