高清电视盒子方案分享,红外遥控适配过程全解析
2025-01-02 来源:elecfans
应用背景
随着红外线设备的应用日益广泛,例如遥控器和红外传感器等。而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支持红外线接收。

上一篇:东芝洗衣机解决方案
- 嵌入式的风向变了:2026纽伦堡嵌入式展透露这些趋势
- 高通确认不在GDC 2026发布新款骁龙G系列掌机处理器SoC
- 阿里达摩院发布玄铁C950,打破全球RISC-V CPU性能纪录
- 行业评论 从工具到平台:如何化解跨架构时代的工程开发和管理难题
- Mujoco中添加Apriltag标签并实现相机识别教程
- 面向嵌入式部署的神经网络优化:模型压缩深度解析
- 摩尔线程MTT S5000全面适配Qwen3.5三款新模型
- 英飞凌与宝马集团携手合作,基于Neue Klasse架构塑造软件定义汽车的未来
- 物理AI仿真新突破:摩尔线程与五一视界共建全栈国产化生态
- 爆火的OpenClaw! 告别云端,米尔RK3576开发板本地部署
- 中国芯片研发重要成果!中科院发布香山、如意系统
- Miniconda环境隔离教程:解决Python版本冲突的完整指南
- Jetson GPU Burn烤机测试与PTX编程详解
- LabelImg安装使用教程:YOLOv12训练数据标注完整指南
- 根据题意,水位上升记为正,下降记为负。汛期水位上升3分米(即0.3米)记作+3分米,此时达到最高水位12.5米,因此基准水位(记作0时的水位)为: 12.5米 - 0.3米 = 12.2米。 汛期过后水位下降4分米(即0.4米),是从最高水位下降,故实际水位为: 12.5米 - 0.4米 = 12.1米。 实际水位相对于基准水位的变化量为: 12.1米 - 12.2米 = -0
- YOLOv12训练实战:train.py常用参数详解
- Altera 与 Arm 深化合作,共筑 AI 数据中心高效可编程新方案
- 莱迪思加入英伟达 Halos生态系统,通过Holoscan传感器桥接技术提升物理人工智能安全性
- 芯科科技闪耀2026嵌入式世界展 以Connected Intelligence赋能,构建边缘智能网联新生态




