红外遥控协议

概述

红外遥控协议有比较多的标准,笔者只简单介绍一下自己遇到过的NEC协议和RC5协议。

NEC

载波频率为38KHz

数据包示例

这里写图片描述

上图乃笔者用逻辑分析仪抓取音量+的数据包。

红外遥控协议_第1张图片

上图乃笔者用逻辑分析仪抓取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。

数据包示例

红外遥控协议_第2张图片

上图乃笔者用逻辑分析仪抓取音量+的数据包。逻辑分析仪中自带了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)。

组合处理

貌似红外遥控不支持组合键。

你可能感兴趣的:(嵌入式Linux)