一般情况下,我们用逻辑分析仪检测到的无线433模块的波形是如图一一样稳定而正常的。但是当遥控器发送功率不够(电池电量低时,认证机构不允许太大发射功率的遥控器走向市场时),这时我们就会发现图二的波形有一个杂波(图一和图二使用的是两个遥控器),仔细数一下会发现图二的波形中有25个码,正常的图一是24个码,因为图二有一个码是杂波。如果还是按照一般的思路解码的话,图二的程序是解出的按键码是错误的,这时就要使用这个远距离的软件滤波解决方案了。
![](https://i-blog.csdnimg.cn/blog_migrate/ad0c07e54c6c9e9aba6874146b3ea77e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5960dce56fd45c01cad7ae76af39b76e.png)
根据图二的波形我们发现,如果不进行滤波的话,这段杂波就会被计入遥控码中,导致解出错误的遥控码。
去掉椭圆标记的条件,就是没有软件滤波的接收码计数程序,加上椭圆中标记代码就是有软件滤波的。
图四是遥控器的接受码计数函数,这个函数是定时器定时每50us进入一次,也就是每50us对433接收到的波形计数一次。我现在使用的遥控器正常情况下接收到的遥控信号最短的低电平是125us左右,最短的高电平是140us左右,于是我们把低于50us的高/低电平滤除,当然使用100us也是可以的,但是为了防止特殊情况,而且经过观察一般杂波的电平不会高于50us。所以在接收码计数函数中加了图四中椭圆标记所示的条件。可以有效滤除低于50us的高/低电平。
滤除的电平时间这里只是提供一个思路,大家可以根据自己遥控器的情况实际调整需要滤除的高/低电平时间。
当然这种方法也只能局限在杂波数量不太多的情况下,如果是杂波非常多的情况下,这样这种方法无法解决问题时,建议使用硬件滤波