新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 用微处理器I/O口控制红外接收设备

用微处理器I/O口控制红外接收设备

——
作者:罗国发 时间:2013-02-21 来源:电子产品世界 收藏

  红外遥控是一种无线、非接触控制技术,具有抗干扰,电路简单,容易编码和解码,功耗小,成本低等优点,几乎适用于所有家电的控制,并越来越多地应用到计算机系统中。出于项目需要,要对一个内部程序未知的设备实现控制,我们把设备自带的红外接收头作为切入点。

本文引用地址://www.cazqn.com/article/142182.htm

  项目使用的是GOSSAT(高斯赛特)的GSR—S80 S型数字卫星接收机,设备配套有一个,单凭外观无法知道它所使用红外协议的种类,如果有示波器的话,就可以捕捉信号波形并进行分析。

  红外接收头的种类很多,引脚定义也不相同,一般都有三个引脚,包括供电脚,接地和信号输出脚。常见的接收头型号有0038和1838。从外形上看,项目用的接收机使用的是0038接收头。

  项目使用的是ATTEN(安泰信)的ADS-1102C数字示波器。把接收头的信号输出脚和地脚引出来,接入示波器,捕捉波形时建议用25ms/div的时间间隔比较方便,之后再放大到2.5ms/div进行查看和分析。鉴定有没输出信号的小技巧,打开手机的拍照功能,对着的红外发射管,此时按下遥控器上任意一个键,如果手机屏幕上能看到发射管发出了红紫光,说明遥控器是正常的。

  经过分析捕捉到的波形得知,项目所用接收机采用的是红外协议。查阅协议的资料,其特征如下:

  (1)8位地址和8位指令长度;

  (2)地址和命令2次传输(确保可靠性);

  (3)PWM脉冲位置调制,以发射红外载波的占空比代表“0”和“1””;

  (4)载波频率为38kHz;

  (5)位时间为1.125ms或2.25ms;

  码的位定义:一个脉冲对应560μs的连续载波,一个逻辑1传输需要560μs脉冲+1680μs低电平,一个逻辑0的传输需要560μs脉冲+560μs低电平。而遥控接收头在收到脉冲的时候为低电平,在没有脉冲的时候为高电平,这样,我们在接收头端收到的信号是反相的:逻辑1是560μs低+1680ms高,逻辑0是560μs低+560μs高。

  NEC遥控指令的数据格式为:同步码头、地址码、地址反码、控制码、控制反码。同步码由一个9ms的低电平和一个4.5ms的高电平组成,地址码、地址反码、控制码、控制反码均是8位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了增加传输的可靠性(可用于校验)。

  NEC码规定的连发码(由9ms低电平+2.5m高电平+0.56ms低电平+97.94ms高电平组成),发送完后40ms,遥控再发送一个9ms低,2ms高的脉冲,表示按键的次数,出现一次则表示只按下了一次,如果出现多次,则可以认为是持续按下该键。

  知道协议之后,我们就可以进一步分析出遥控器的地址码和各个按键的控制码。项目所用接收机有点特殊,通过示波器去看,得出地址正码是0xA1,地址反码是0xDE,其余位都取反了,唯独最高位都是1,这个不同于常规。

  之后的控制码,由于按键数量多,可以编写一个红外解码程序来解出这些键值,之后再用示波器来抽检几个,用于保证解出来的控制码的正确性,这是很关键的一步,不可小视。

  之后就可以开始进行的虚拟NEC工作了,项目采用STM32作为主控芯片,这里的功能只需要用到一个普通,我们使用的是PA14。硬件上只需把PA14连接到红外接收头的信号输出脚,地脚和STM32共地就可以了。

  关于STM32的设置说明,每个I/O口可以自由编程,单I/O口寄存器必须要按32位字被访问。STM32的每个I/O端口都由7个寄存器来控制。其中CRL和CRH控制着每个I/O口的模式及输出速率,对ODR赋值可以改变对应位I/O口的高低电平。

万能遥控器相关文章:万能遥控器代码




关键词: NEC I/O 遥控器

评论


相关推荐

技术专区

关闭