打印

解析红外遥控码出现系统码和数据码不能正确解析

[复制链接]
3047|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a7208184|  楼主 | 2011-1-8 17:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好!
     小弟现在用STM8的定时器的输入捕获功能(采用下降沿有效)来解红外遥控器的码值,遥控器采用NEC协议。引导码是13.5ms脉宽,其他系统码和数据码都是根据“0”、“1”来解码,“0”的脉宽是1.125ms,“1”的脉宽是2.45ms。
   小弟目前能够正确收到引导码,但是接下来的系统码和数据码接收发现3个问题,(1)因为根据数据分析,收不到“0”bit,只能有“1”bit
(2)有一些其他脉宽,是协议里面没有的
(3)本来应该受到系统码和数据码一共32bit数据,结果才收到17bit,而且有些根据协议,不能解。
  希望大家能够帮忙解答一下。

我把从红外遥控器接收到一个码值的数据贴在下面,如下:

开始接收引导码:
13490--13.49ms//引导码  正确

开始接收系统码16bit和数据码8bit和数据反码8bit
10117--10.117ms//协议中没有这种脉宽,不能解析,错误数据
3375--3.375ms//不能解析,错误数据
2260--2.260ms//正确脉宽,根据协议,表示“1”bit
2239--2.239ms//正确脉宽,根据协议,表示“1”bit
2244--2.244ms//正确脉宽,根据协议,表示“1”bit
2262--2.262ms//正确脉宽,根据协议,表示“1”bit
2238--2.238ms//正确脉宽,根据协议,表示“1”bit
4509--4.509ms//不能解析,错误数据
2239--2.239ms//正确脉宽,根据协议,表示“1”bit
5619--5.619ms//不能解析,错误数据
3372--3.372ms//不能解析,错误数据
4501--4.501ms//不能解析,错误数据
2243--2.243ms//正确脉宽,根据协议,表示“1”bit
2263--2.263ms//正确脉宽,根据协议,表示“1”bit
3371--3.371ms//不能解析,错误数据
41587--41.587ms//不能解析,错误数据
11248--11.248ms//不能解析,错误数据

相关帖子

沙发
chunyang| | 2011-1-8 17:43 | 只看该作者
你先用存储示波器看一下发射端的数据,和接收端做一下比较,先排除是否与硬件相关。

使用特权

评论回复
板凳
xwj| | 2011-1-8 19:38 | 只看该作者
估计你的程序没写好,每个脉冲处理时间太长了

使用特权

评论回复
地板
a7208184|  楼主 | 2011-1-8 19:56 | 只看该作者
xwj兄的想法跟我刚开始的想法一致,因为从我得出的数据可以看出,‘1’的脉冲是可以解出来的,‘0’的脉冲解不出来。但是我现在中断里面基本上什么事业没有做,就执行4~5条指令而已,应该不存在脉冲处理时间太长的问题。还是这样,会出现乱七八糟的数据。
    chunyang兄,我也想先像你这样做,我有先测过硬件,貌似得到的波形只能是发射帧的一部分。不知道是真的干扰问题,还是我调示波器没有调好,因为好像会丢失一部分数据。
  希望大家再帮帮忙。!!

使用特权

评论回复
5
chunyang| | 2011-1-9 18:05 | 只看该作者
先用仪器测量过以后再说吧,否则太盲目。

使用特权

评论回复
6
a7208184|  楼主 | 2011-1-10 08:50 | 只看该作者
我再回头去看红外接收头的数据手册,发现它能够接收的波的占空比是1:2,而我红外遥控器发射出的载波的占空比是1:3,这样会不会导致接收到的数据不正确。也就是说这个红外接收头是不是不能正确接收这个遥控器的数据。

使用特权

评论回复
7
a7208184|  楼主 | 2011-1-10 12:44 | 只看该作者
先回chuanyang兄的,我用示波器是可以调出一个完成的帧,确定跟发送的帧没有问题。然后再次分析收到的数据,得出一个现象”我采用下降沿触发,然后能够收到“1”脉冲的宽度,而“0”脉冲的宽度收不到。也就是说只要接收到“1”脉冲的宽度才触发,“0”脉冲的宽度不触发,使很多“0”脉宽混在一起了,导致接收到的脉冲宽度不正确。不知道有没有朋友帮忙分析一下,为什么我接收不到“0”脉冲,而只能接收“1”脉冲。

使用特权

评论回复
8
chunyang| | 2011-1-10 22:59 | 只看该作者
这说明是你的程序编制有问题,沿触发的依据是沿本身,由硬件完成,注意不要错误设置成电平触发模式,然后在沿触发后根据定时器数值读取沿的变化即可,关键在于程序的工艺,1mS的脉宽足够普通MCU处理、捕捉的,不能识别说明程序的效率太差了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

76

帖子

1

粉丝