当前位置: 代码迷 >> 综合 >> PX30 Android8.1 红外遥控实现
  详细解决方案

PX30 Android8.1 红外遥控实现

热度:87   发布时间:2023-12-15 14:17:49.0

RK 平台上红外实现原理简介:
PWM 有三种工作模式, reference mode, one-shot modecontinuousmode. 红外遥控器就采用 reference mode,这种模式下 PWM 可以捕获输入高低电平的宽度,并产生中断,CPU接收到中断后去相应的寄存器读取。按下遥控的时候,红外接收头会产生一系列的高低电平,PWM 就会产生相应的中断,CPU 读取相应的寄存器就知道这些高低电平的时间,根据协议就可以解码出红外的用户码和键值码出来。

在PX30的DTS文件上添加:

&pwm3 {
    status = "okay";compatible = "rockchip,remotectl-pwm";pinctrl-names = "default";pinctrl-0 = <&pwm3_pin>;remote_pwm_id = <3>;handle_cpu_id = <1>;remote_support_psci = <1>;interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;ir_key1{
    rockchip,usercode = <0x7f80>;rockchip,key_table = <0xed	KEY_POWER>,//KEY_BRIGHTNESSUP<0xe1	KEY_MUTE>,<0xf3	KEY_VOLUMEDOWN>,<0xf1	KEY_VOLUMEUP>,<0xfd	KEY_HOME>,<0xfe	KEY_BACK>,<0xe0	KEY_UP>,<0xf5	KEY_DOWN>,<0xf8	KEY_LEFT>,<0xf6	KEY_RIGHT>,<0xf7	KEY_ENTER>,<0xf5	KEY_ENTER>;};ir_key2{
    rockchip,usercode = <0xfe01>;rockchip,key_table = <0xbd	KEY_POWER>,//KEY_BRIGHTNESSUP<0xbf	KEY_MUTE>,<0xa5	KEY_VOLUMEDOWN>,<0xa7	KEY_VOLUMEUP>;};
};

虽然添加了遥控功能,但是没有实现打印按键值信息的:

(会更新处理!!..)

**202017日更新**

打印红外按键值有以下两种方式,内核打印可以用串口,也可以在adb中使用指令

第一种方法:

在下面的路径下打开rockchip_pwm_remotectl.c

px30_android8.1\kernel\drivers\input\remotectl

在红外接收的源码(rockchip_pwm_remotectl.c)中,给下面变量赋值,编译下载,就可以查看打印用户码和键值

/*sys/module/rk_pwm_remotectl/parameters, modify code_print to change the value*/
static int rk_remote_print_code=1;

第二种方法:
通过指令打开红外接收的打印功能,然后按遥控器按键,就可以在内核打印中看到用户码和键值

rk3326_m2g:/ # echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print

以下是红外遥控器的按键值:

[  330.647056] USERCODE=0x7f80
[  330.674546] RMC_GETDATA=e1
[  331.524589] USERCODE=0x7f80
[  331.551813] RMC_GETDATA=fb
[  332.180352] USERCODE=0x7f80
[  332.207677] RMC_GETDATA=fa
[  332.913232] USERCODE=0x7f80
[  332.940686] RMC_GETDATA=f9
[  333.825542] USERCODE=0x7f80
[  333.852894] RMC_GETDATA=f8
[  334.372618] USERCODE=0x7f80
[  334.399968] RMC_GETDATA=e0
[  335.033591] USERCODE=0x7f80
[  335.060920] RMC_GETDATA=f6
[  335.547097] USERCODE=0x7f80
[  335.574352] RMC_GETDATA=f7
[  336.186789] USERCODE=0x7f80
[  336.214219] RMC_GETDATA=f5
[  336.858661] USERCODE=0x7f80
[  336.886013] RMC_GETDATA=fd
[  337.430376] USERCODE=0x7f80
[  337.457540] RMC_GETDATA=fc
[  338.020364] USERCODE=0x7f80
[  338.047850] RMC_GETDATA=f1
[  338.622925] USERCODE=0x7f80
[  338.650135] RMC_GETDATA=f3
[  340.846403] USERCODE=0x7f80
[  340.873878] RMC_GETDATA=fe

注:该遥控器的 usercode0x7f80,键值是RMC_GETDATA= xxxx(如:RMC_GETDATA=fe,fe是遥控器的按键值)
更新:20221012
如何查看红外用的是那个kl文件

dumpsys  input

在这里插入图片描述
对应pwm3,那就是正确的了
在这里插入图片描述

  相关解决方案