硬件原理图
LED指示灯
麦克风阵列子板上使用12颗RGB灯作为效果指示灯。用户可以通过I2C总线配置LED灯驱动IC来是实现不同场景下的灯效。

按键Key

麦克风阵列子板上集成五个控制按键,分别为:控制音量增减的VOL-和VOL+、禁止MIC录音的
MIC_MUTE、切换设备模式的MODE、控制设备播放或者暂停的Play/Pause
POWER Control

GPIO要选GPIO0的 pin,一般主控休眠时,GPIO0控制器是带电工作的,其他的断电了,不能唤醒(设置中断,linux 系统下,要在 dts 中设置)- 休眠(suspend)是指,系统冻结进程,然后依次挂起设备的电源停止工作,进入低功耗模式;休眠命令:
echo mem > /sys/power/state - 唤醒(resume)是指,从休眠模式恢复到正常工作模式。EVB 上 power 键具有唤醒功能,按下 power 键,系统就将唤醒

软件上的配置
按键Key的配置
相关文件:
Rockchip_Developer_Guide_DeviceIo_Key_CN.pdfRockchip_RK3308_Developer_Guide_Linux_Input_CN.pdfY:\hxy\RK3308\sdk-1.5\buildroot\board\rockchip\rk3308\fs-overlay\etc\input-event-daemon.confY:\hxy\RK3308\sdk-1.5\buildroot\output\rockchip_rk3308_release\target\etc\input-event-daemon.conf(与上面的相同)Y:\hxy\RK3308\sdk-1.5\buildroot\output\rockchip_rk3308_release\build\input-event-daemon-v0.1.3\input-event-daemon.hY:\hxy\RK3308\sdk-1.5\kernel\drivers\input\keyboard\adc-keys.c
相关指令:
cd work/hxy/RK3308/sdk-1.5cd buildroot/output/rockchip_rk3308_releasemake input-event-daemon-dirclean && make input-event-daemon-rebuildgrep -rwn "Keys" --include "*.conf"(-i: 不区分大小写 -n: 显示行号 -r: 逐层遍历目录查找 -w: 按单词搜索 --include: 指定匹配的文件类型)
客户需求:
- 按下按键Mode,执行客户的APP,并亮蓝灯
- 按下按键MIC_Mute,关闭客户的APP,并亮红灯
- 按下按键VOL+,进行录音增益
实现方式:用 input-event-daemon+shell 脚本实现
buildroot编译配置
1.源码路径:Y:\hxy\RK3308\sdk-1.5\buildroot\output\rockchip_rk3308_release\build\input-event-daemon-v0.1.3
2.代码目录说明:
input-event-daemon.c监听内核event事件,然后根据配置文件来响应对应事件target\etc\input-event-daemon.conf按键事件设置
3.buildroot添加对应编译配置:
- #
cd buildroot/output/rockchip_rk3308_release - #
make menuconfig - 选择
Target packages->Hardware handling->input-event-daemon - #
make input-event-daemon-dirclean && make input-event-daemon-rebuild - #
./build.sh
对conf文件进行配置及编写shell脚本
input-event-daemon.conf文件配置如下(Keys的名字不是随便写的,是看input-event-table.h中的配置的):
Linux中&&和&,|和||
[Global]
listen = /dev/input/event0
listen = /dev/input/event1
#listen = /dev/input/event2
#listen = /dev/input/event3
[Keys]
MODE = ./data/LedTest 2&&echo 1 > /sys/class/leds/led33/brightness&&echo 0 > /sys/class/leds/led14/brightness&&source /data/openAPP.sh
PLAY = echo "-----Press PLAY-----"
MUTE = ./data/LedTest 2&&echo 0 > /sys/class/leds/led33/brightness&&echo 1 > /sys/class/leds/led14/brightness&&source /data/closeAPP.sh
VOLUMEDOWN = export ALSA_LIB_ADD_GAIN=2
VOLUMEUP = ./data/LedTest 2&&export ALSA_LIB_ADD_GAIN=4&&echo 1 > /sys/class/leds/led4/brightness
#PLAY = source /data/closeAPP.sh
#MUTE = echo "-----Press MUTE-----"
#POWER = echo mem > /sys/power/state
#MUTE = amixer -q set Master mute
#FN+VOLUMEUP = factory_reset_cfg
#CTRL+ALT+ESC = beep
#FN = softapServer Rockchip-Echo-123 &
[Switches]
RADIO:0 = ifconfig wlan0 down
[Idle]
1h 30m = vbetool dpms off
reset = vbetool dpms on
小板上有12个LED灯,从有三角形标号的LED开始,按照 绿、红、蓝 的顺序(对应 led1、led2、led3 )排序
openAPP.sh的配置如下:(注意最后不能以Enter键结尾,不然会报错)
#!/bin/sh
echo "open APP"
./data/rk_hw_vad
closeAPP.sh的配置如下:
#!/bin/sh
echo "close APP"
kill -9 $(pidof rk_hw_vad)
LED灯配置
echo 1 > /sys/class/leds/led33/brightness 点亮蓝灯(改变数字大小能够调节亮度0~255)
echo 0 > /sys/class/leds/led14/brightness 熄灭红灯
echo 1 > /sys/class/leds/led4/brightness 点亮绿灯
自己程序demo编写
LED_Demo编写
版权声明:本文为Black_Cat_33原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。