RK3568 android11 适配红外遥控器

您所在的位置:网站首页 遥控器火箭炮键功能 RK3568 android11 适配红外遥控器

RK3568 android11 适配红外遥控器

2024-03-07 03:19| 来源: 网络整理| 查看: 265

生活中充满了各种波长的电磁波,所谓的可见(色)光就是人眼可见的电磁波谱,其波长为 380~770nm,为了避免遥控器发射的光造成人眼不适及减少一般人造光源干扰,故选用人眼不可见的红外线(Infrared)波长,目前业界遥控器发射头几乎都选用 940nm 波长。 在这里插入图片描述 红外线遥控器的应用也是一种无线讯号传输,跟大部分的无线传输技术一样,为了避免环境中同波长电磁波的干扰,故会在其传输讯号上加上如下图所示的载波(carrier frequency),在遥控应用的载波范围为 30~60kHz,而 38kHz 为最常见的载波频率。 在这里插入图片描述 目前红外遥控协议有RC5、 SIRCS、 Sy、 RECS80、Denon、NEC、Motorola、Japanese、SAMSWNG 和 Daewoo 等。Rockchip平台只支持 NEC 编码,国内电器大多使用该编码协议。

RK平台PWM 有三种工作模式, reference mode, one-shot mode 和 continuousmode. 红外遥控器就采用 reference mode,这种模式下 PWM 可以捕获输入高低电平的宽度,并产生中断,CPU接收到中断后去相应的寄存器读取。

1. 参照原理图添加内核IR的配置

在这里插入图片描述

1.1 向正在使用的设备树添加如下配置: &pwm3 { status = "okay"; compatible = "rockchip,remotectl-pwm"; remote_pwm_id = ; handle_cpu_id = ; remote_support_psci = ; pinctrl-names = "default"; pinctrl-0 = ; ir_key1 { rockchip,usercode = ; rockchip,key_table = , , , , , , , , , , , , , , , , , , , , , ; }; ...... }; 1.2 查看输入设备,找到刚添加的pwm红外设备。驱动加正常加载,接下来就是对照键值添加遥控器。 \> adb shell rk3568_r:/ # getevent add device 1: /dev/input/event3 name: "Logitech USB Optical Mouse" add device 2: /dev/input/event2 name: "WDR USB Camera: WDR USB Camera" add device 3: /dev/input/event0 name: "fdd70030.pwm" add device 4: /dev/input/event1 name: "rk805 pwrkey" add device 5: /dev/input/event4 name: "adc-keys" add device 6: /dev/input/event5 name: "rk-headset" 2. 添加红外按键上报键值(rk平台单独定义)

rk平台可直接查看红外接收,打开键值命令如下:

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

内核日志太多,可使用adb 命令(或者串口打印)过滤直接得到键值,USERCODE 添加遥控dts 对应的 rockchip,usercode,RMC_GETDATA 对应键值可通过rockchip,key_table 转换为rk-input键值。

adb root;adb shell # cat /dev/kmsg | grep USERCODE -A 2 6,1136,469064745,-;USERCODE=0x4040 6,1137,469091760,-;RMC_GETDATA=b2 6,1138,482889791,-;USERCODE=0x4040 6,1139,482916765,-;RMC_GETDATA=b4

字母和符号键都是 linux 的标准键值,可以在 kernel/include/dt-bindings/input/linux-event-codes.h文件查看。

3. 添加键值转换

Linux标准键值与Android的标准键值并不相同,需要转换文件匹配对应关系。中间转换配置文件会根据红外遥控使用PWM匹配对应PWM标号所属名的配置文件。此次调试使用PWM3对应的编号pwm3: pwm@fdd70030 {,键值转换配置文件名为fdd70030_pwm.kl,设备描述文件则为fdd70030_pwm.idc。

Android 键值有不懂可以查看 frameworks/base/core/java/android/view/KeyEvent.java文件; 临时调试可手动拷贝到 /vendor/usr/keylayout,重启生效。

fdd70030_pwm.idc

device.internal = 1 #是否为内部设备 audio.mic = 0 #是否带mic

dd70030_pwm.kl

key 116 POWER key 102 HOME key 139 MENU key 113 VOLUME_MUTE key 115 VOLUME_UP key 114 VOLUME_DOWN key 158 BACK key 232 DPAD_CENTER key 103 DPAD_UP key 108 DPAD_DOWN key 105 DPAD_LEFT key 106 DPAD_RIGHT key 240 PROFILE_SWITCH key 15 TAB key 104 PAGE_UP key 109 PAGE_DOWN 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 52 PERIOD key 111 DEL key 119 MEDIA_PAUSE key 207 MEDIA_PLAY key 418 F3 key 419 F4 4. 自动编译构建

需要将 fdd70030_pwm.kl 和fdd70030_pwm.idc 拷贝到 device/rockchip/common目录下。并在device.mk添加拷贝规则,编译时会自动拷贝到指定目录。

PRODUCT_COPY_FILES += \ device/rockchip/common/fdd70030_pwm.kl:system/usr/keylayout/fdd70030_pwm.kl \

调试过程中power按键没有作用问题: 理论上添加完 usercode以及keycode 后,系统需要重新启动一次后power键才会起作用。(此时reboot后看串口打印keycode值,跟一下u-boot阶段代码直接替换之前的powerkey_keycode值),可实现第一次烧录开机power键可用的效果。 在这里插入图片描述

注: a) "确定"键,是 KEY_REPLY。 b) /vendor/usr/keylayout 与/system/usr/keylayout 作用相同。 c) 红外注册失败,可查看PWM GPIO复用(iomux)。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3