概述
红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。
鉴于家用电器的品种多样化和用户的使用特点,生产厂家对进行了严格的规范编码,这些编码各不相同,从而形成不同的编码方式,统一称为红外遥控器编码传输协议。到目前为止,红外遥控协议已多达十种, 如: RC5、 SIRCS、 Sy、 RECS80、Denon、NEC、Motorola、Japanese、SAMSWNG 和 Daewoo 等。我国家用电器的红外遥控器的生产厂家,其编码方式多数是按上述的各种协议进行编码的,而用得较多的有 NEC
协议。目前 RK
平台也只支持 NEC
编码的红外协议。
RK 平台上红外实现原理简介
PWM
有三种工作模式, reference mode
, one-shot mode
和 continuous mode
. 红外遥控器就采用 reference mode
,这种模式下 PWM
可以捕获输入高低电平的宽度,并产生中断,CPU
接收到中断后去相应的寄存器读取。
按下遥控的时候,红外接收头会产生一系列的高低电平,PWM
就会产生相应的中断,CPU
读取相应的寄存器就知道这些高低电平的时间,根据协议就可以解码出红外的用户码和键值码出来。
RK3568遥控器添加方法
本文是在正点原子RK3568
开发板上适配新的遥控器,适配步骤如下:
1、确定编译的配置
查看编译脚本中所用的配置,用于确认所用的设备树 rk3568-atk-evb1-ddr4-v10.dtsi
home/ho/rk3568_android_sdk/kernel-4.19/make.sh
2、确认新遥控器的USERCODE和码值
打开键值打印开关,按遥控器的按键,记录下对应的键值例如按下Reset
、PrtScr
,有如下打印。
该遥控器的 usercode
是 0xbf4,Reset
键值就是 0xbb 、PrtScr
键值是0xa9。如此反复,直到打印完遥控器上的所有键值。
3、在设备树中添加配置
步骤1通过编译脚本确认当前使用设备树,在设备树中添加遥控器键码值。
/home/ho/rk3568_android_sdk/kernel-4.19/arch/arm64/boot/dts/rockchip/rk3568-atk-evb1-ddr4-v10.dtsi
&pwm7 {
ir_key1 {
/* Ho 适配新遥控器 */
rockchip,usercode = <0xbf4>;
rockchip,key_table =
<0xff KEY_POWER>, //电源
<0xfe KEY_MUTE>, //静音
<0xfd KEY_1>, //1
<0xfc KEY_2>, //2
<0xfb KEY_3>, //3
<0xfa KEY_4>, //4