硬件原理图
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.pdf
Rockchip_RK3308_Developer_Guide_Linux_Input_CN.pdf
Y:\hxy\RK3308\sdk-1.5\buildroot\board\rockchip\rk3308\fs-overlay\etc\input-event-daemon.conf
Y:\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.h
Y:\hxy\RK3308\sdk-1.5\kernel\drivers\input\keyboard\adc-keys.c
相关指令:
cd work/hxy/RK3308/sdk-1.5
cd buildroot/output/rockchip_rk3308_release
make input-event-daemon-dirclean && make input-event-daemon-rebuild
grep -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
[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
[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编写
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)