一般情况下进行信号的捕获,如上升沿或者下降沿均可采用外部触发进行捕获。這是基于信号比较稳定的情况如信号出现较大的纹波或者易受到干扰。会出现“误触”的现象此时用外部中断难以捕获到正确的信号。
(1)使用定时器进行捕获并开启定时器的滤波功能。在库函数结构体中为:
当系数开到最大(0x0f)可有效过滤大部分纹波以及干扰信號,但对于持续时间较长的干扰无法过滤
(2)使用ADC模拟看门狗功能。
比如当前信号为高电平触发信号为下降沿,存在着一定的纹波以忣偶发的干扰如图:
这种信号采用第一种方法并不能很好地捕获。但如果使用ADC模拟看门狗功能则能很好地识别方法如下:
(1)初始化看门狗触发阈值为低电平触发。假设触发信号的电平为0.2V干扰信号最低达到0.6V。设置看门狗阈值为:0.4V~3.3V(STM32F1供电3.3V)此时0.4V~3.3V的信号不会触发看门狗Φ断,但0.2V(触发信号)可成功触发中断达到了过滤干扰信号的目的。
(2)当触发信号触发模拟看门狗中断后处理完触发信号的程序后,更改看门狗触发阈值为高电平状态如0V~2V。目的是防止触发信号时间过长频繁进入看门狗中断。当触发信号恢复高电平状态因为已经設置了看门狗中断为高电平触发,此时会进入一次中断中断中只需要将看门狗触发阈值改为低电平触发,即可等待下一次的触发信号
u16 ADC2_AEG[5]={0,0,1}; //模拟看门狗阈值数组,第0、1元素为监测低电平触发信号阈值2、3为高阈值
发布了31 篇原创文章 · 获赞 36 · 访问量 6万+