红外遥控器协议简介

目前有如下几类标准

1. RC5

2. NEC

3. SAMSWNG

4. ......

5. SIRC (Sony Infrared Remote Control)

目前RK平台只支持 NEC 协议.

NEC 协议如下所示

NEC 默认协议采用32bit 帧格式来发送按键指令, 格式如下表

Address

Complement of Address

Command

Complement of Command

LSB-MSB(0-7)

LSB-MSB(8-15)

LSB-MSB(16-23)

LSB-MSB(24-31)

NEC 逻辑1和0波形如下图

逻辑0: 562us 的高电平, 跟随 526us的低电平, 周期为1.125ms(小数约掉)

逻辑1: 562us 的高电平, 跟随 1.675us的低电平, 周期为2.25ms(小数约掉)

NEC 协议接收按键时运行过程如下

1. 持续9ms 的高电平, 然后4.5ms 的低电平(帧头)

2. 发送设备8bits 地址, 如: 10110001

3. 发送设备8bits 地址的逻辑反向值, 如: 01001110 (在RK平台, 把address和invert address两个字节作为usercode, 部分遥控器并未把invert address按照协议规范发送反码, 而是作为独立的一个byte)

4. 发送指令command 8bits, 如: 10001101

5. 发送指令command 8bits的逻辑反向值, 如: 01110010

6. 发送截至位, 562us的高电平

红外接收头的原理

红外接接收头由 红外接收二极管/三极管/硅光电池组成, 它们将接收到的红外发射器的信号转换为电信号输出, 在通过PWM接收模块转换为数字信号.

RK3288 红外遥控器配置方法

使能驱动

RK3288 针对红外遥控器的驱动在 kernel/drivers/input/remotectl/rockchip_pwm_remotectl.c

在config 文件中对应的名称为 CONFIG_ROCKCHIP_REMOTECTL_PWM, 需要设置为buildin Mode

1631 # CONFIG_HALL_DEVICE is not set

1632 CONFIG_ROCKCHIP_REMOTECTL=y

1633 CONFIG_ROCKCHIP_REMOTECTL_PWM=y

在dts 中增加按键配置

一般配置前去要确认的信息:

1. 红外接收头连接的PWM 控制器序号, R800-P1 连接在PWM0

2. 配置的遥控器的用户码, 我们当前用的遥控器是 0xff00

3. 配置的遥控器的按键码, 我们当前用的遥控器按键码如下图

dts 中的节点如下, 关键配置项描述如下表

字段名称

字段描述

remote_pwd_id

红外接收头连接的PWM控制器id, 这里是0

handle_cpu_id

处理中断的cpu编号, 这里设置为cpu1

ir_key1

特定遥控器的配置信息

对于特定遥控器的配置信息, key_table的一项 <0xe7 KEY_POWER> 描述如下

0xe7: 遥控器特定按键的按键码

KEY_POWER: 按键码映射的Linux 内核input 系统定义的输入按键值, 定义在./include/dt-bindings/input/input.h

802 /*

803 * Due to not have the software of PWM for remotectrl.

804 * We can _*HACK*_ do that as the following.

805 * TODO Settings

806 */

807 &pwm0 {

808 compatible = "rockchip,remotectl-pwm";

809 remote_pwm_id = <0>;

810

811 handle_cpu_id = <1>;

812 status = "okay";

813 ir_key1{

814 rockchip,usercode = <0xff00>;

815 rockchip,key_table =

816 <0xe7 KEY_POWER>,

817 <0xa4 KEY_MUTE>,

818 <0xa5 KEY_RED>,

819 <0xf2 KEY_GREEN>,

820 <0xf9 KEY_YELLOW>,

821 <0xfd KEY_BLUE>,

822 <0xad KEY_PAGEUP>,

823 <0xaf KEY_PAGEDOWN>,

824 <0xeb KEY_VOLUMEUP>,

825 <0xef KEY_VOLUMEDOWN>,

826

827 <0xfb KEY_MENU>,

828 <0xb8 KEY_LEFT>,

829 <0xb9 KEY_UP>,

830 <0xb0 KEY_SETUP>,

831 <0xea KEY_RIGHT>,

832 <0xe9 KEY_DOWN>,

833 <0xaa KEY_OK>,

834 <0xb1 KEY_HOME>,

835 <0xbf KEY_BACK>,

836 <0xf0 KEY_1>, // 1

837 <0xee KEY_2>, // 2

838 <0xed KEY_3>, // 3

839 <0xb3 KEY_4>, // 4

840 <0xa7 KEY_5>, // 5

841 <0xe4 KEY_6>, // 6

842 <0xe8 KEY_7>, // 7

843 <0xb2 KEY_8>, // 8

844 <0xf5 KEY_9>, // 9

845 <0xe2 KEY_0>, // 0

846 <0xe3 KEY_ENTER>,

847 <0xe1 KEY_DELETE>;

848 };

849 };

Android ir 映射配置文件

通过以上两步, 驱动层已经配置完毕, 但Android APP接收到的key code与驱动上报给 user space的 linux event key code 并不相同, 还需要增加Android input hal层的一个map 配置文件, 对于RK3288, 这个配置文件位于device/rockchip/common/ff680000_pwm.kl

详细配置如下

key 116 POWER

key 113 VOLUME_MUTE

key 0x18e PROG_RED

key 0x18f PROG_GREEN

key 0x190 PROG_YELLOW

key 0x191 PROG_BLUE

key 104 PAGE_UP

key 109 PAGE_DOWN

key 115 VOLUME_UP

key 114 VOLUME_DOWN

key 139 MENU

key 105 DPAD_LEFT

key 103 DPAD_UP

key 106 DPAD_RIGHT

key 108 DPAD_DOWN

key 0x160 DPAD_CENTER

key 102 HOME

key 158 BACK

key 141 SETTINGS

key 2 1

key 3 2

key 4 3

key 5 4

key 6 5

key 7 6

key 8 7

key 9 8

key 10 9

key 11 0

key 28 ENTER

key 111 DEL

以上的配置项描述

列编号

描述

1

描述此配置为按键, 均为: key

2

Linux 内核上报的key code, 如10

3

映射为Android的key code,如ENTER

调试技巧

获取遥控器按键码

通过如下指令开启驱动打印usercode 和 keycode

echo 1 > sys/module/rockchip_pwm_remotectl/parameters/code_print

打印日志如下, 从日志总看, usercode为0xff00, 按键码为aa

<6>[156027.207783] USERCODE=0xff00

<6>[156027.234413] RMC_GETDATA=aa

获取驱动上报的linux key code

dts 配置好后, 按遥控器特定按键, 通过getevent指令, 获取按键上报的linux key code, 日志如下

其中的0160 是上报的linux key code, 最后一个字段的1/0分别代表按键按下和松开

130|root@rk3288_box:/ # getevent

add device 1: /dev/input/event5

name: "Weida Hi-Tech CoolTouch® System"

add device 2: /dev/input/event1

name: "rk29-keypad"

add device 3: /dev/input/event0

name: "ff680000.pwm"

/dev/input/event0: 0001 0160 00000001

/dev/input/event0: 0000 0000 00000000

/dev/input/event0: 0001 0160 00000000

/dev/input/event0: 0000 0000 00000000

android 红外遥控程序,Android 红外遥控器适配相关推荐

  1. 红外遥控及Android手机红外遥控器开发

    一.红外遥控 红外遥控技术是通过红外技术.红外通信技术和遥控技术的结合实现的一种无线控制技术.由于红外线的波长较短,对障碍物的衍射能力较差,无法穿透墙壁,所以红外遥控术更适合应用在短距离直线控制的场合 ...

  2. c语言红外解码程序,[转载]红外遥控和C语言51红外遥控解码程序设计实例

    什么是红外线?人的眼睛能看到的可见光按波长从长到短排列,依次为红.橙.黄.绿.青.蓝.紫.其中红光的波长范围为0.62-0.76μm:比红光波长还长的光叫红外线.红外遥控在生产和生活中应用越来越广泛, ...

  3. android 电视遥控 编程,Android编程调用红外线遥控功能示例

    本文实例讲述了Android编程调用红外线遥控功能.分享给大家供大家参考,具体如下: Android API Demos中有红外线遥控的小例子,在网上找了很久相关的资料,发现比较少,或许找的方法不对. ...

  4. NEC红外协议编码,38K红外遥控编码,红外遥控发射接收电路选型设计

    NEC为红外遥控最常用的编码,红外载波频率为38KHz,其协议小巧简单,非常适合家电设备的控制.其他的还有 Phillips(RCA)的RC-5和RC-6,但那只是IR协议的少数. 本篇博文参照国外博 ...

  5. 【ESP32】8.红外遥控实验(红外遥控解码库)

    上一篇: [ESP32]7.按键实验(中断) 前言: 先放电路连接图: 红外接收头的IC是一种受光元件,其内部是将发光二极管和集成IC组合封装而成,其IC设计主要以类比式控制,一般主要接收38KHz频 ...

  6. android系统应用程序,Android系统应用程序基本概念解读

    经常关注我们51CTO的朋友们应该知道,在以前的文章中我们对Android这一手机系统有一个详细的跟踪介绍,方便大家学习应用这一新的功能强大的开源手机系统,比如对Android源码的编译的解析的解析等 ...

  7. android小闹钟程序,Android实现闹钟小程序.pdf

    Android实实现现闹闹钟钟小小程程序序 这篇文章主要为大家详细介绍了Android实现闹钟小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近写了 闹钟的程序,看到SharedPrefe ...

  8. android espresso跨程序,Android Espresso:依次运行多个测试

    我正在尝试使用Espresso for Android进行一系列测试.运行之间似乎没有关闭活动.一次测试后,无论应用程序状态如何,左侧为下一次测试. 如何用Espresso来实现? 错误报告中提供的修 ...

  9. android 基础应用程序,android应用程序基本实现(基础篇).ppt

    <android应用程序基本实现(基础篇).ppt>由会员分享,可在线阅读,更多相关<android应用程序基本实现(基础篇).ppt(22页珍藏版)>请在人人文库网上搜索. ...

  10. android关键应用程序,Android应用程序基础.pdf

    创新自我 创造价值 创新办公室Innovation Office www innovation 创新办公室 Innovation Office www innovation 周行 admin zhou ...

最新文章

  1. 【Spring boot 实战】使用Maven插件构建Docker镜像
  2. mysql使索引失效语句_会导致索引失效语句
  3. C++——拷贝构造函数
  4. SAP CRM几个常用的使用技巧
  5. Mysql数据库(1.表的约束,以及数据表相关操作和字段名的相关操作)
  6. tp3.2中怎么访问分类及子分类下面的文章
  7. 数字IC设计流程总结
  8. HTML两个查询条件,javascript – 如何在IndexedDB中查询多个条件?
  9. pca主成分分析_PCA主成分分析(中)
  10. MOSS 中的计算公式
  11. 达人评测 3050和3050ti有啥区别 rtx3050和rtx3050ti选哪个好
  12. 揭秘信用卡代还软件对卡有什么影响?乐猫智服会封卡降额吗?
  13. Windows如何使用自带的桌面整理工具?
  14. TL-WDN5200H无线usb网卡在Linux上的使用
  15. 微信公众号推送图文消息
  16. iOS 第三方分享、支付原生平台集成
  17. ipadpro如何分屏_不再泡面!大学生如何用iPad高效学习
  18. 2021.2.15-2.22 人工智能行业每周技术动态
  19. ePartsize 过程全记录
  20. 小程序map组件不显示坐标,且出现了bing地图的标识,解决。

热门文章

  1. jsp在校大学生助学贷款管理系统
  2. 全球免费开放的电子图书馆
  3. USB加密狗复制USBTrace数据截取工具分享
  4. 硬件的驱动和sdk的理解与应用
  5. Cesium:加载OSGB倾斜摄影三维模型
  6. VGG19-图像风格迁移
  7. STM8S103f单片机的开发(1)LED灯的点亮
  8. Windows多用户远程桌面-采用RDP Wrapper Library支持10.0.18363.900、10.0.18362.836、10.0.19041.789之前所有的Windows版本
  9. Shiro面试题总结
  10. MS2108 USB 数字视频采集芯片 支持8bit/16bit BT601/BT709/BT656/ BT1120转USB