概述
红外遥控协议有比较多的标准,笔者只简单介绍一下自己遇到过的NEC协议和RC5协议。
NEC
载波频率为38KHz
数据包示例
上图乃笔者用逻辑分析仪抓取音量+的数据包。
上图乃笔者用逻辑分析仪抓取REPEAT的数据包。
编码格式
参考文章
请注意,参考文章使用的极性为高。本文所介绍的编码极性都是低。
低9ms + 高4.50ms 代表前导码
低9ms + 高2.25ms + 低560us 代表重复码
周期为2.25ms,前部分为低,占560us 代表逻辑1
周期为1.12ms,前部分为低,占560us 代表逻辑0
数据包格式
数据包分正常数据包和REPEAT包(将重复码也理解成包,笔者觉得容易接受)
正常数据包
前导码 + 客户码(8位) + 客户码反码(8位) + 命令码(8位) + 命令码反码(8位)
REPEAT包
仅重复码
长按处理
长按时,先接收到正常数据包,然后是REPEAT包。笔者手上的遥控器实测95ms重复一次REPEAT包。
RC5
载波频率为36KHz。
数据包示例
上图乃笔者用逻辑分析仪抓取音量+的数据包。逻辑分析仪中自带了RC5解码。上图一目了然,分析清晰明确。
编码格式
本文所介绍的编码极性都是低。
每位固定周期为1.778ms。前半位为高,后半位为低代表1;前半位为高,后半位为高代表0。
数据包格式
数据包格式有标准格式和拓展格式:
标准格式
起始位(1位) +验证位(1位) + 控制位(1位)+系统码(5位) + 命令位(6位)
拓展格式
起始位(1位) +验证位(1位) + 控制位(1位)+系统码(5位) + 命令位(7位)
开始位固定位1。验证位1表示标准协议,0表示拓展协议。控制位(也叫反转位),新键值反转一次。系统码表示设备类型(也有说是厂商标识,但必然为固定值,不求甚解)。命令位代表键值。
RC5协议已经指定各个设备类型下的键值含义。请不必(不要)自定义。以下是笔者用到的键值,更多请自行阅读标准协议。
0X10 音量 +
0X11 音量 -
0X1F 通道 -
0X20 通道 +
长按处理
长按时,每隔114ms(笔者手上的遥控器实测只有90ms)重复一次数据包。注意到反转码不变。注意发送的数据间隔最小也是114ms(笔者手上的遥控器实测只有90ms)。
组合处理
貌似红外遥控不支持组合键。