红外遥控器协议简介

目前有如下几类标准1. RC5

2. NEC

3. SAMSWNG

4. ......

5. SIRC (Sony Infrared Remote Control)

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

NEC 协议如下所示

NEC 默认协议采用32bit 帧格式来发送按键指令, 格式如下表AddressComplement of AddressCommandComplement of CommandLSB-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 Mode1631 # 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.h802 /*

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

2Linux 内核上报的key code, 如10

3映射为Android的key code,如ENTER

调试技巧

获取遥控器按键码通过如下指令开启驱动打印usercode 和 keycodeecho 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 codedts 配置好后, 按遥控器特定按键, 通过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手机红外代码HAL,Android 红外遥控器适配相关推荐

  1. android手机用户,2011年Android手机用户使用行为研究报告

    一.市场概述及研究背景 谷歌Android,自获得摩托罗拉.三星.HTC.中兴.华为等诸多品牌的拥趸开始,就扮演起了智能手机市场竞争格局颠覆者的角色.经过近三年时间的发展,Gartner最新数据显示, ...

  2. android usb共享代码,让Android手机具有USB网络共享功能,可以通过USB连接到Internet...

    第0章: 什么是USB网络共享功能 最近漫游Windows Phone的世界时,最新鲜的感觉之一就是诺基亚Lumia手机具有有趣的USB绑定功能,该功能使您的手机可以通过USB电缆连接到计算机,您可以 ...

  3. 全球 android手机排行 2013,全球Android手机性能排行 三星Note 3夺魁

    尽管跑分测试成绩并不是手机实际性能表现的全部,但至少还是能够在很大程度上体现一款手机硬件配置的水平.而作为知名的跑分软件,安兔日前公布了今年第三季Android手机性能排行榜,则或许能够给我们一些参考 ...

  4. hal系统命令 android,动态可用的 HAL  |  Android 开源项目  |  Android Open Source Project...

    Android 9 支持在不使用或不需要 Android 硬件子系统时动态关停这些子系统.例如,如果用户未使用 WLAN,WLAN 子系统就不应占用内存.耗用电量或使用其他系统资源.早期版本的 And ...

  5. android 人脸检测代码,在Android实现人脸识别的详细过程

    照相时,在预览画面上提示用户人脸的位置,并完成自动对焦等,是个错的应用; 下面是实现细节 我们知道在android的代码中已有人脸识别的底层算法代码,而且在framework层也封了调用的API函数 ...

  6. pc控制android手机屏幕亮度,调整android手机屏幕亮度

    贴一段调整安卓手机屏幕亮度的代码 ,可以参考使用,见下: public void setBrightness(int level) { ContentResolver cr = getContentR ...

  7. android手机数字取证,基于Android智能终端微信应用的数字取证分析模型的研究

    第 42卷 第 10A期 2015年 10月 计 算 机 科 学 Computer Science Vo1.42 No.10A Oct 2015 基于 Android智能终端微信应用的数字取证分析模型 ...

  8. mac安装软件管理Android手机,Mac如何管理Android手机:这方式很得体

    [PConline 评测]还记得是在8月份锤子的发布会上,除了带来了新的坚果手机外,在系统领域,老罗吐槽安卓系统和 Mac 连接时,传输和管理文件的方极为丑陋,因此他们为Mac用户精心开发了一款名为S ...

  9. android 手机自动化测试,Appium进行Android手机真机自动化测试

    前置条件: 安装JDK jdk 9使用appium还有点问题,最好使用jdk 8.我使用的是jdk 8u161. 下载前需要先同意协议 下载后双击安装,安装完成后需要手工设置环境变量: 右键单击&qu ...

最新文章

  1. 2018-2019-1 20165214 《信息安全系统设计基础》第六周学习总结
  2. URAL 2027 URCAPL, Episode 1 (模拟)
  3. 云原生解决什么问题?
  4. 用c#实现通讯中自定义发送序列化数据,可一定程度上实现可编程发送的功能
  5. 一个对称性解释三个宇宙学难题;引力波碰撞会发光?粘液霉菌助力寻找宇宙网 | 一周科技速览...
  6. 使用 spring 的 IOC 解决程序耦合——获取spring的Ioc核心容器,并根据id获取对象、核心容器的两个接口(ApplicationContext、BeanFactory)引发出的问题
  7. DDD专家张逸:构建领域驱动设计知识体系
  8. vue页面渲染(请求返回的后端)data,文本换行与显示bug 的分析与解决提示
  9. 从源码分析快速实现对新开源软件的检测
  10. delphi 关闭时缩小到托盘_如何正确地缩小毛孔?
  11. web测试知识点整理
  12. Prometheus 的云上 MySQL 监控实践
  13. c定义一个整型数组_滨州学院C语言作业讲解有序数组插入
  14. 软件测试_Loadrunner_APP测试_性能测试_脚本优化_脚本回放
  15. 网络通讯协议——TCP/IP协议
  16. 迪士尼超级IP版图日趋完整
  17. 把失败看成常态 把成功当作偶然”——与庞加莱猜想“封顶”者之一、中山大学教授朱熹平面对面
  18. MSDC 4.3 接口规范(23)
  19. Excel排序与查重
  20. 云天视界传媒浅谈无人机航拍技巧

热门文章

  1. 鸿蒙os手机评测视频,鸿蒙OS正式发布:荣耀智慧屏首发,一起来体验鸿蒙OS吧
  2. linux好用的office软件,MS Office Online——免费好用的在线办公软件
  3. 智慧化工厂人员定位离我们有多远?苏州新导智能定位系统
  4. 少儿C++编程从入门到进阶 信奥学奥赛从启蒙到NOI、ACM-ICPC(一)
  5. 怎么用鸿蒙os系统,鸿蒙OS2.0系统怎么降级到EMUI11 鸿蒙OS2.0系统降级到EMUI11方法...
  6. 2022年的第一个夕阳
  7. 520表白——送她一片星空模拟
  8. 9.DNS和DNSmasq服务
  9. 新手小白用C# winform 读取Excel表
  10. http 状态码查询