高清电视盒子方案分享,红外遥控适配过程全解析

描述


应用背景

随着红外线设备的应用日益广泛,例如遥控器和红外传感器等。而RK3399作为一款高性能处理器,广泛应用于电视盒子等智能终端。通过将红外遥控功能与 RK3399 电视盒子结合,用户能够高效地控制电视设备。极大的提升了用户体验。

iTOP-RK3399平台介绍

电视盒子

电视盒子

电视盒子

电视盒子

电视盒子

 

电视盒子

电视盒子


 

红外遥控方案示例

iTOP-RK3399 开发板搭载了HS0038B 红外接收模块。接下来我们在RK3399开发板 Android8系统上适配红外遥控。

01-获取USERCODE和KEY值

开发板里面烧写Android8系统,然后在串口终端输入以下命令使能DBG_CODE 打印

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

在遥控器上按下任意按键,可以看到类似如下信息:

电视盒子

从上图发现这个遥控的 usercode是0xdd22,用以标识遥控种类。RMC_GETDATA 表示键值。

我们选取遥控器上的几个按钮作为示例,分别测出如下图所示的按键的键值。

电视盒子

02-修改设备树打开PWM

首先查看开发板底板的原理图如下图所示:

电视盒子

然后在核心板原理图搜索“IR_RX”,如下图所示,对应的引脚是GPIO0_A6/PWM3A_IR_d

电视盒子

然后查找设备树itop-3399.dtsi文件,路径为:itop-3399_8.1/kernel/arch/arm64/boot/dts/rockchip/itop-3399.dtsi

在此文件中的pwm3节点添加键值,如下图所示:

电视盒子

我们来分析一下这个节点,如下表所示:

电视盒子

itop-3399_8.1/kernel/include/dt-bindings/input/rk-input.h文件如下图所示:

电视盒子

03-Android键值映射

在修改了步骤二的设备树后,重新编译Android源码,编译完成会在out目录下生成编译好的文件。itop-3399_8.1/out/target/product/rk3399_mid/system/usr/keylayout/ff420030_pwm.kl文件用于将 Linux 层获取的键值映射到 Android 上对应的键值。我们可以添加或者修改该文件的内容以实现不同的键值映射。没有的按键值,在按键时,上层app收到的值是未知按键。我们添加示例的几个按键的键值映射,如下图所示:

电视盒子

中间的数字是功能码对应的数字,在itop-3399_8.1/kernel/include/dt-bindings/input/rk-input.h中查看。右侧的是与上层对应的关系,在frameworks/base/core/java/android/view/KeyEvent.java路径可以查找到(例如:KEYCODE_DPAD_DOWN 只需要取后半部分就可以),如下图所示:

电视盒子

修改完毕ff420030_pwm.kl文件,然后修改编译脚本,将“make installclean”注释掉,然后重新编译Android8的镜像,编译完后,烧写镜像。

04-测试红外遥控

烧写镜像以后,系统启动进入Android系统,我们打开系统自带的“设置”APP,按遥控器上的上下键,可以移动到对应的选项,按遥控器上的enter按钮,可以选中选项,按返回按钮可以退回上一级目录,按音量+ - 可以控制音量。

然后我们打开系统自带的“通讯录”APP,新建联系人,在手机号的输入框里面,用遥控器按下0-9 的数字,可以输入,如下图所示,以上测试说明3399支持红外线接收。

电视盒子

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分