红外遥控器与红外接收器调试问题分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mantis_1984/article/details/82992812

红外误码问题分析

目前开发的产品是带Qt界面的,所以作为一款可视化控制产品,遥控器是必不可少的,前段时间正好调试了遥控器与红外接收模块,现总结下遇到的红外误码问题分析解决过程。

分析思路分为两个方向,一是怀疑红外模块出来的信号是正确的,但是过了板卡电路后信号改变,造成CPU判读错误;第二个怀疑点是红外模块本身问题,解码红外信号异常。下面分两个方向,并借用示波器抓取信号进行分析。

1、判断是否板卡电路引起的问题

在D121芯片TX1_M_UART2_RX处连接一个示波器测量点,这个芯片的作用是将红外模块TTL 5V电平转换为3.3V电平,然后接入到TX1芯片UART2接口进行读取。

在红外模块TXD接另外一个示波器测量点。然后比较出错时两个信号的差异性。

测试结果如下:

TX1串口程序打印接收数据,正常数据是0x407F80,异常数据0x507F80。

串口数据对应的示波器信号,黄色信号是红外模块直出信号,粉红色是经过D121的转换信号。

放大来看正常与异常数据的区别:

正常信号:0x407F80

异常信号:0x507F80

从图中可以看出,标红处多了一个1信号,解析错了,但是红外模块解码数据与D121出来的信号是一直的,所以可以得出结论,错误不是后端板卡引入的,而是从红外模块出来的数据就已经错了

2、红外模块本身有问题

两个测量点,一个接在解码输出TXD上,另外一个接在P3.3红外脉冲接收入口。

发送6组数据,其中第4组0x577FA0解析错误,正确值是0x577F80,也是1个bit的错误

粉红是红外脉冲信号,黄色是解码信号,一共6组数据。

正常的TTL信号,0x577F80

异常的信号 0x577FA0

正常脉冲

异常脉冲信号,两个脉冲信号乍一看上去好像一样,但是仔细观察发现左面有一个空闲信号稍稍有点宽(标红处),放大来看:

再放大

明显这个脉冲信号的空闲比较宽,结合脉冲编码的原理:

http://c.biancheng.net/cpp/html/1957.html 

引导码:9ms 的载波+4.5ms 的空闲。

比特值“0”:560us 的载波+560us 的空闲。

比特值“1”:560us 的载波+1.68ms 的空闲。

这个脉冲应该判定为1了,也就是说红外脉冲信号就不是很严格,不稳定造成了单片机误判。

所以最后的结论是遥控器红外脉冲信号间隔并不严格准确造成的最终解码错误。

三次测试遥控器误码率分别是1%,2%,1%,每次测试按同样按键100次。

 

 

猜你喜欢

转载自blog.csdn.net/mantis_1984/article/details/82992812