注意:

用示波器在接收头抓的电平看起来和NEC协议刚好相反,

那是因为:HS0038B 这个红外一体化接收头,当收到有载波的信号的时候,会输出一个低电平,空闲的时候会输出高电平。

具体情况,具体分析。



1. 红外协议之NEC协议 http://www.linuxidc.com/Linux/2014-09/106408.htm


NEC​​协议载波:38khz

其逻辑1与逻辑0的表示如图所示:

NEC协议_反码

逻辑12.25ms,脉冲时间560us

逻辑01.12ms,脉冲时间560us

所以我们根据脉冲时间长短来解码。推荐载波占空比为1/31/4


The NEC protocol uses pulse distance encoding of thebits. Each pulse is a 560µs long 38kHz carrier burst (about 21 cycles). Alogical "1" takes 2.25ms to transmit, while a logical "0"is only half of that, being 1.125ms.

The recommended carrier duty-cycle is 1/4 or 1/3. 




NEC​​协议格式:

NEC协议_反码_02

首次发送的是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8bit的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是否出错)。然后是8bit 的命令码(也是从低有效位开始发),而后也是8bit 的命令码的反码。


重复码:

以上是一个正常的序列,但可能存在一种情况:你一直按着1个键,这样的话发送的是以110ms为周期的重复码,如下图:

NEC协议_红外_03

就是说,发了一次命令码之后,不会再发送命令码,而是每隔110ms时间,发送一段重复码。

NEC协议_红外_04

重复码由9ms高电平和2.25ms的低电平以及560us的高电平组成。

     NEC Protocol http://www.sbprojects.com/knowledge/ir/nec.php


2. NEC协议红外遥控器 http://c.biancheng.net/cpp/html/1957.html

HS0038B 这个红外一体化接收头,当收到有载波的信号的时候,会输出一个低电平,空闲的时候会输出高电平,我们用逻辑分析仪抓出来一个红外按键通过HS0038B 解码后的图形来了解一下,如图。


                          红外遥控器按键编码

NEC协议_反码_05


                             红外接收程序流程图

NEC协议_反码_06





总结:

{

注意:

用示波器在接收头抓的电平看起来和NEC协议刚好相反,那是因为:HS0038B 这个红外一体化接收头,当收到有载波的信号的时候,会输出一个低电平,空闲的时候会输出高电平。

NEC协议_反码_07


}