红外的介绍、长处、缺陷就不给咱们说了,进入正题
一、红外遥控协议的的解说
红外遥控的编码现在广泛运用的是:NEC Protocol的PWM(脉冲宽度调制)和Philips RC-5 Protocol的PPM(脉冲方位调制)
本文将以NEC协议完成红外遥控。
NEC协议的特征:
1、8位地址和8位指令长度;
2、地址和指令两次传输;(保证可靠性)
3、PWM脉冲宽度调制,以发射红外载波的占空比代表“0”和“1”;
4、载波频率为38KHz
5、位时刻为1.125ms和2.25ms
NEC码位的界说:一个脉冲对应560us的接连载波,一个逻辑1传输需求2.25ms(560us脉冲+1680us低电平),一个逻辑0的传输需求1.125ms(560us脉冲+560us低电平)。而遥控接纳头在收到脉冲时为低电平,在没有收到脉冲时为高电平,因而,咱们在接纳头端收到的信号为:逻辑1应该是560us低+1680us高,逻辑0应该是560us低+560us高。如下图:
NEC遥控指令的数据格式为:同步码头(引导码)+地址码+地址反码+操控码+操控反码。同步码是由一个9ms的低电平和一个4.5ms的高电平组成,地址码、地址反码、操控码、操控反码均为8位数据格式。依照高位在前低位在后的次序发送。选用反码是为了添加传输的可靠性(可用于校验)。下图是咱们按下按键2时,从红外接纳头端测到的波形:
在图中能够看到,在100ms之后,咱们还收到了几个脉冲,这是NEC码规则的连发码(由9ms低电平+2.5ms高电平+0.56ms低电平和97.94ms高电平组成),如果在一帧数据发送完后,按键仍没有松开,则发送重复码(连发码),能够经过计算连发码的次数来符号按键按下的长短/次数。
二、解码程序解析(参阅正点原子的代码)
在正点原子的代码中是使用定时器的输入捕获功能来完成遥控解码的,下面解析一下要害代码:
在该试验remote.h文件中,界说了3个函数:Remote_Init();、TIM4_IRQHandler();、Remote_Scan();。
1、Remote_Init();
这儿要留意中止优先级,定时器4的两个中止,溢出(更新)中止,捕获事情中止的优先级是相同的。意思便是,他两谁也不能打断谁,例如A在执行时,B就不会发生中止。这儿很重要,很重要,很重要!
2、TIM4_IRQHandler();
留意:遥控器发过来的码都是编好的,比方想破解遥控器编码,能够拿示波器去测接纳端的码。
整个程序思路不难,便是对遥控器发过来的码进行解码,这儿主要是两个中止的了解。