yuyy1989 发表于 2024-10-29 18:09

【每周分享】红外遥控中常用的NEC编码

红外遥控的编码种类繁多,如:NEC、Philips RC-5、Philips RC-6、Sony SIRC等,而使用最多的是NEC编码。
NEC协议采用脉冲间隔的方式编码每一位数据,用不同数据位的时间间隔来表示不同的逻辑位。与众多单总线IC的通信方式很相似。NEC编码的载波频率为38KHz,对应的单脉冲周期约等于26.3us。
每一数据位起始于560us左右的载波,约为21.3个38 kHz脉冲组成。 脉冲的占空比通常为1/4或1/3,以减少电流消耗:
逻辑"0":560us的有效脉冲 + 560us的空闲间隔,总时长为1.12ms。
逻辑"1":560us的有效脉冲 + 1.69ms的空闲间隔,总时长为2.25ms(为逻辑0的2倍)。


当我们按下遥控器的一个按键时,会发送一帧的数据。这一帧数据由引导码、地址码、地址反码、数据码、数据反码以及一位结束位(可忽略)组成。

9ms的高电平脉冲和之后的4.5ms的低电平组成了引导码。最后是562.5um脉冲突发以表示消息传输的结束。
引导码之后会传输4个字节共32Bit的数据位,分别是 地址码 + 地址码反码 + 数据码 + 数据码反码。其中地址码加上地址反码的时间和数据码加上数据反码的时间是固定不变的(如数据码为00000111,则数据反码则为11111000),总是 由8个“1”和8个“0”组成。。一方面可以用于校验是否出错。另一方面,因为总有相同数量的反码的存在,每帧的总消息时长保持恒定。结束位为末尾的562.5us的有效脉冲。

即使一直按住遥控器上的一个键,命令帧也只会发送一次。 如果按着按键一直不放当发送完数据后,每隔110ms会发送一个重复码

重复码由9ms的高电平和2.25ms的低电平以及560us的高电平(结束标志)组成。

NEC协议的使用如此广泛,以至于所有可能的地址都会很快被用完。 通过牺牲地址冗余将地址反码也用作地址位地址范围就能从8位扩展到16位,这样,地址范围的值可以从256个扩展到65536个 ,而无需更改协议的任何其他属性。通过这种方式扩展地址范围,总的消息时间不再恒定,取决于地址码中1和0的总数。 如果要使总的消息时间保持恒定,则必须确保地址码中的逻辑1数目为8个(这同样表示逻辑0的数目也为8个)。 这会将不同地址的最大数量减少到大约13000个。命令冗余仍然保留。 因此,每个地址仍可以处理256个不同的命令。
页: [1]
查看完整版本: 【每周分享】红外遥控中常用的NEC编码