赞
踩
NEC为红外遥控最常用的编码,红外载波频率为38KHz
,其协议小巧简单,非常适合家电设备的控制。其他的还有 Phillips(RCA)的RC-5
和RC-6
,但那只是IR协议的少数。
本篇博文参照国外博客或论坛资料并汇总:(原链接可能需要翻墙)
NEC协议
红外遥控工具(NEC)
DFU IR协议(NEC)- PDF
NEC红外传输协议 - PDF
带微控制器的NEC协议IR(红外)遥控器
我的有些翻译并不准确,对码文字段的命名可参照:
NEC编码格式(百度文库)
本片仅介绍NEC编码协议的部分,硬件电路设计及选型请见:
38K红外遥控发射与接收电路设计与选型、正向压降、限流电阻、半值角
NEC协议采用脉冲间隔的方式编码每一位数据,用不同数据位的时间间隔
来表示不同的逻辑位
。与众多单总线IC的通信方式很相似。
NEC编码的载波频率为38KHz
,对应的单脉冲周期约等于26.3us
。
每一数据位起始于562.5µs的载波
,约为21.25个38 kHz
脉冲组成。 脉冲的占空比通常为1/4或1/3,以减少电流消耗:
逻辑"0"
:562.5µs的有效脉冲 + 562.5µs的空闲间隔,总时长为1.125ms
。
逻辑"1"
:562.5µs的有效脉冲 + 1.6875ms的空闲间隔,总时长为2.25ms
(为逻辑0的一倍)。
命令帧由 起始位
+ 地址码
+ 地址码反码
+ 命令码
+ 命令码反码
组成。
每个序列均以9ms的脉冲(称为AGC脉冲)(是逻辑数据位使用的脉冲562.5us的16倍)开始。 接下来是4.5毫秒的空闲:(可以理解这一过程是每一帧的起始标志)
起始位之后会传输4个字节共32Bit的数据位,分别是 地址码
+ 地址码反码
+ 命令码
+ 命令码反码
。字面上是4个字节,而实际只有2个字节有效,多余的2字节为冗余的反码。一方面可以用于校验是否出错。另一方面,因为总有相同数量的反码的存在,每帧的总消息时长保持恒定
。
结束位为末尾的562.5µs的有效脉冲。
即使一直按住遥控器上的一个键,命令帧也只会发送一次。 只要按键保持按下状态,就会每110毫秒
发送一次重复码
。 该重复码的组成为 9ms的AGC脉冲
+ 2.25ms的空闲间隔
+ 560µs的脉冲
。
NEC协议的使用如此广泛,以至于所有可能的地址都会很快被用完。 通过牺牲地址冗余
,地址范围的值可以从256个扩展到65536个。 这样,地址范围就能从8位扩展到16位,而无需更改协议的任何其他属性。
通过这种方式扩展地址范围
,总的消息时间不再恒定
,只取决于消息中1和0的总数。 如果要使总的消息时间保持恒定,则必须确保地址字段中的逻辑1
数目为8个(这同样表示逻辑0
的数目也为8个)。 这会将不同地址的最大数量减少到大约13000个。
命令冗余仍然保留。 因此,每个地址仍可以处理256个不同的命令。
本片仅介绍NEC编码协议的部分,硬件电路设计及选型请见:
38K红外遥控发射与接收电路设计与选型、正向压降、限流电阻、半值角
格外注意的是:VS1838
、PC638
、IRM-56384
、3638
、0038
这些38K红外接收管的输出方式为开漏
,故与上文的时序为反相,coding的代码内要记得取反
。
并且因为OUTPUT
引脚是开漏输出,需要外置上拉电阻
,或者将MCU的GPIO配置为上拉输入
。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。