A vida é cheia de ondas eletromagnéticas de vários comprimentos de onda. A chamada luz visível (cor) é o espectro eletromagnético visível ao olho humano. Seu comprimento de onda é de 380 a 770 nm. Para evitar que a luz emitida pelo controle remoto cause desconforto para o olho humano e reduzir a interferência de fontes de luz artificiais gerais, portanto, o comprimento de onda infravermelho (infravermelho) invisível ao olho humano é selecionado. Atualmente, quase todos os emissores de controle remoto na indústria usam um comprimento de onda de 940 nm.
A aplicação do controle remoto infravermelho também é um tipo de transmissão de sinal sem fio. Como a maioria das tecnologias de transmissão sem fio, para evitar a interferência de ondas eletromagnéticas do mesmo comprimento de onda no ambiente, uma frequência portadora (frequência portadora) conforme mostrado na figura abaixo será adicionado ao sinal de transmissão. , a faixa da portadora em aplicações de controle remoto é de 30~60kHz e 38kHz é a frequência portadora mais comum.
Atualmente, os protocolos de controle remoto infravermelho incluem RC5, SIRCS, Sy, RECS80, Denon, NEC, Motorola, japonês, SAMSWNG e Daewoo, etc. Rockchip平台只支持 NEC 编码
, a maioria dos aparelhos elétricos domésticos usa esse protocolo de codificação.
A plataforma RK PWM tem três modos de trabalho, modo de referência, modo one-shot e modo contínuo. O controle remoto infravermelho usa o modo de referência. Neste modo, o PWM pode capturar a largura dos níveis altos e baixos de entrada e gerar uma interrupção. Depois recebendo a interrupção, a CPU vai para O registrador correspondente é lido.
1. Consulte o diagrama esquemático para adicionar a configuração do kernel IR
1.1 Adicione a seguinte configuração à árvore de dispositivos em uso:
&pwm3 {
status = "okay";
compatible = "rockchip,remotectl-pwm";
remote_pwm_id = <3>;
handle_cpu_id = <1>;
remote_support_psci = <0>;
pinctrl-names = "default";
pinctrl-0 = <&pwm3_pins>;
ir_key1 {
rockchip,usercode = <0x4040>;
rockchip,key_table =
<0xf2 KEY_REPLY>,
<0xba KEY_BACK>,
<0xf4 KEY_UP>,
<0xf1 KEY_DOWN>,
<0xef KEY_LEFT>,
<0xee KEY_RIGHT>,
<0xbd KEY_HOME>,
<0xea KEY_VOLUMEUP>,
<0xe3 KEY_VOLUMEDOWN>,
<0xe2 KEY_SEARCH>,
<0xb2 KEY_POWER>,
<0xbc KEY_MUTE>,
<0xec KEY_MENU>,
<0xbf 0x190>,
<0xe0 0x191>,
<0xe1 0x192>,
<0xe9 183>,
<0xe6 248>,
<0xe8 185>,
<0xe7 186>,
<0xf0 388>,
<0xbe 0x175>;
};
......
};
1.2 Verifique o dispositivo de entrada e encontre o dispositivo de infravermelho pwm recém-adicionado. O driver é carregado normalmente, e o próximo passo é adicionar o controle remoto de acordo com o valor da chave.
\> 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. Adicione o botão infravermelho para informar o valor da chave (definido separadamente pela plataforma rk)
A plataforma rk pode visualizar diretamente o receptor infravermelho, e o comando para abrir o valor da chave é o seguinte:
echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print
Existem muitos logs do kernel, você pode usar o comando adb (ou impressão da porta serial) para filtrar e obter o valor da chave diretamente, USERCODE
adicionar o rockchip e o código do usuário correspondente ao controle remoto dts e RMC_GETDATA
o valor da chave correspondente pode ser convertido para o valor da chave rk-input por meio de rockchip, key_table.
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
As chaves de letras e símbolos são valores de chave padrão do linux, que podem kernel/include/dt-bindings/input/linux-event-codes.h
ser visualizados no arquivo.
3. Adicionar transformação de valor-chave
O valor da chave padrão do Linux não é igual ao valor da chave padrão do Android e é necessário converter o arquivo para corresponder ao relacionamento correspondente. O arquivo de configuração de conversão intermediária usará PWM para corresponder ao arquivo de configuração correspondente ao nome da etiqueta PWM de acordo com o controle remoto infravermelho. Essa depuração usa o número pwm3 correspondente a PWM3: pwm@fdd70030 {, o nome do arquivo de configuração de conversão de valor-chave fdd70030_pwm.kl
e o arquivo de descrição do dispositivo é fdd70030_pwm.idc.
Se você não entender o valor da chave do Android, poderá visualizar
frameworks/base/core/java/android/view/KeyEvent.java
o arquivo;
você pode copiá-lo manualmente para depuração temporária/vendor/usr/keylayout
e reiniciá-lo para entrar em vigor.
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. Compilar e construir automaticamente
Precisa copiar fdd70030_pwm.kl e fdd70030_pwm.idc para device/rockchip/common
o diretório. E adicione regras de cópia em device.mk, ele será copiado automaticamente para o diretório especificado durante a compilação.
PRODUCT_COPY_FILES += \
device/rockchip/common/fdd70030_pwm.kl:system/usr/keylayout/fdd70030_pwm.kl \
O botão liga/desliga não tem efeito durante a depuração.
Teoricamente, depois que o código de usuário e o código de acesso são adicionados, o sistema precisa usar 重新启动
o botão liga/desliga uma vez. (Neste momento, após a reinicialização, observe o valor do código-chave impresso pela porta serial e substitua diretamente o valor powerkey_keycode anterior pelo código do estágio u-boot), que pode obter o efeito de que a tecla liga / desliga pode ser usada pela primeira vez hora em que a chave de energia é queimada.
Nota:
a) A tecla "OK" é KEY_REPLY.
b) /vendor/usr/keylayout é o mesmo que /system/usr/keylayout.
c) O registro infravermelho falhou, você pode verificar a multiplexação PWM GPIO (iomux).