嵌入式
返回首页

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

2025-01-02 来源:elecfans

应用背景

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


iTOP-RK3399平台介绍

c8bff3ba-b847-11ef-93f3-92fbcf53809c.jpg

c8cd2788-b847-11ef-93f3-92fbcf53809c.jpg

c8f7623c-b847-11ef-93f3-92fbcf53809c.jpg

c9059a50-b847-11ef-93f3-92fbcf53809c.jpg

c91fc074-b847-11ef-93f3-92fbcf53809c.jpg


c9511f98-b847-11ef-93f3-92fbcf53809c.jpg

c961dcde-b847-11ef-93f3-92fbcf53809c.jpg


红外遥控方案示例

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

01-获取USERCODE和KEY值

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

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

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

c971f2ea-b847-11ef-93f3-92fbcf53809c.png

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

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

c97c73d2-b847-11ef-93f3-92fbcf53809c.png

02-修改设备树打开PWM

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

c9a00edc-b847-11ef-93f3-92fbcf53809c.png

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

c9b47dd6-b847-11ef-93f3-92fbcf53809c.png

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

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

c9d17fbc-b847-11ef-93f3-92fbcf53809c.png

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

c9e11f1c-b847-11ef-93f3-92fbcf53809c.png

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

c9f8dab2-b847-11ef-93f3-92fbcf53809c.png

03-Android键值映射

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

ca06ff5c-b847-11ef-93f3-92fbcf53809c.png

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

ca1d77c8-b847-11ef-93f3-92fbcf53809c.png

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

04-测试红外遥控

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

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

ca489a70-b847-11ef-93f3-92fbcf53809c.png


进入嵌入式查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • FollowMe 第二季:3 - EK_RA6M5 开发板入门

  • FollowMe 第二季: 1 Adafruit Circuit Playground Express及任务讲解

  • Azure RTOS step by step workshop

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • 从0到1:树莓派与物联网教程(英文)

精选电路图
  • 便携式混音器

  • 18W乙类音频放大器

  • 6晶体管H桥

  • USB LED调光器

  • USB自供电声卡

  • AVR LCD温度计—LM35

    相关电子头条文章