RK3308 按键Key与LED灯

2023-05-16

硬件原理图

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
#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编写

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RK3308 按键Key与LED灯 的相关文章

  • 模拟人类在网站上点击“ENTER”键[重复]

    这个问题在这里已经有答案了 在 Javascript JQuery 中可能吗 我的网站上有一个按钮 当有人单击该按钮时 我需要模拟人类按下 Enter 键 例子 我点击按钮 然后它自动按下 Enter 键 我从以下代码中修改了这段代码这个答
  • 使用字典中的键反转多个值

    我对 Python 和整体编程还很陌生 所以请耐心等待 我有一本字典 Male Female Eunuch 作为值和这些作为键的不同名称 Persons Hodor Male Tyrion Male Theon Male Arya Fema
  • 有没有办法将平面索引数组中的所有键更改为同一字符串(“名称”)? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 有没有办法将所有数字键更改为 Name 而不循环遍历数组 本机 PHP 函数 0 gt blabla 1 gt blabla 2 gt bl
  • 为什么使用keys()而不是%{..}会发生自动生存?

    这是我发现的一个微妙之处keys perl e use warnings use strict my d ab gt 1 my e keys d gt cd perl e use warnings use strict my d ab gt
  • 我不小心删除了 Android 密钥库,如何恢复?

    好吧 我的动作很顺利 我现在无法更新市场中的任何应用程序 因为我不小心删除了我的 Android 密钥库 有谁知道我怎样才能把它拿回来 我尝试过运行恢复程序 但由于某种原因它没有出现 如果您丢失了私钥 它将永远消失 除非您有备份 如果您可以
  • Android 内容提供商保护级别和不同的密钥

    我有一个应用程序提供专业版 付费 和免费版 添加支持 两个版本都使用相同的密钥存储进行签名 但每个版本都有自己的密钥别名 现在 我想开发一个与两个版本兼容的插件 通过内容提供商提供数据 数据很敏感 因此我需要只能从我的应用程序 专业版和免费
  • 有效计算 JavaScript 中对象的键/属性的数量

    这个问题几乎与如何有效地计算 JavaScript 中对象的键 属性的数量 https stackoverflow com questions 126100 how to efficiently count the number of ke
  • 带有数字键的动态 json 对象

    我有一个 json 对象 在以下命令的帮助下将其转换为动态 C 对象this https stackoverflow com questions 3142495 deserialize json into c dynamic object
  • Delphi7,按向上键时进行形状​​跳跃

    我想在玩家按下UP键时进行形状 跳跃 所以我能想到的最好的就是这个 但我使用的方法很糟糕并且有问题 形状坐标 shape1 top 432 procedure TForm1 FormKeyDown Sender TObject var Ke
  • 在 Emacs 中如何重新映射键?

    我正在寻找一种方法 可以在 emacs 窗口中切换控制键和大写锁定键 但是当我转到任何其他程序 例如 Firefox 时 我希望能够在新窗口中使用普通控制按钮 选项卡等 附加信息 我正在使用 Ubuntu 但所有系统的答案都很好 因为其他人
  • 如何根据 Mongodb 中的键删除重复项?

    我在 MongoDB 中有一个集合 其中大约有 约 300 万条记录 我的样本记录看起来像 id ObjectId 50731xxxxxxxxxxxxxxxxxxxx source references id ObjectId 5045xx
  • 将两个键与 std::map 一起使用的最佳方法是什么?

    我有一个std map我用来存储 x 和 y 坐标的值 我的数据非常稀疏 所以我不想使用数组或向量 这会导致内存的大量浪费 我的数据范围从 250000到250000 但我最多只有几千个点 目前我正在创建一个std string与两个坐标
  • Android 通知 LED 不使用我的颜色

    我正在尝试使用一个通知 该通知也使用我的 S3 上的通知 LED 但由于某种原因 颜色将始终为蓝色 我猜这是默认值 我尝试使用不同的颜色但没有任何变化 其他应用程序 例如 Whatsapp Gmail 和 Facebook 在显示不同颜色的
  • Python - 查找字典中最长(最多单词)的键

    有没有一种方法可以快速查询字典对象以找到单词最多的键 所有键都是字符串类型 即 如果具有最大键的项目有五个单词 这是最大的键 3 我如何快速查询字典并返回 int 5 最好的 乔治娜 这将为您提供密钥 max d key lambda x
  • Pkcs11Interop 从 HSM 读取密钥值

    我正在尝试使用 Pkcs11Interop 从 HSM 中提取密钥的值 我知道 密钥必须留在 HSM 中 但我需要它 所以 我已经用 NCryptoki 做到了 我也想用 Pkcs11Interop 做到这一点 我尝试了这段代码 Prepa
  • openssl-使用密钥和 IV 解密 Base64 字符串

    我正在尝试解密已在 openssl 中使用 aes256 加密的 base64 字符串 我获得了会话密钥和 IV 它们是用我的密钥加密的 我将它们转换为十六进制 以便可以使用以下 openssl 命令 openssl enc d aes25
  • 返回不包括指定键的字典副本

    我想创建一个函数 返回字典的副本 不包括列表中指定的键 考虑这本词典 my dict keyA 1 keyB 2 keyC 3 致电without keys my dict keyB keyC 应该返回 keyA 1 我想用一行简洁的字典理
  • Home 键转到 Visual Studio 中的行首吗?

    Visual Studio 中的哪个选项可以让 Home 键转到行首 现在你必须做 Home Home or Home Ctrl Left Arrow 我希望 home 位于该行的开头 我以前见过 但现在找不到了 在 工具 自定义 键盘 中
  • 是否有一个看起来像“钥匙”图标的 Unicode 字形? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 Unicode 有一百万个类似图标的字形 但它们并不总是很容易搜索 因为我并不总是知道它们是什么样子 是否有一个看起来像 钥匙 的 Unicode 字
  • Facebook-API 中的会话密钥和访问令牌

    有人可以向我解释一下什么是会话密钥和访问令牌吗 怎样才能抓住那两个人呢 为什么以及何时需要使用它们 什么时候是 一次性 什么时候不是 另外 他们之间有什么区别 请用Java 来做 我是一位刚接触 facebook API 的 Java 开发

随机推荐

  • FreeRTOS操作系统如何设置的PendSV和SysTick优先级

    首先应该明确PendSV和SysTick的优先级应该设置为最低 xff0c 具体原因参见这一篇博客 PendSV功能 xff0c 为什么需要PendSV 设置优先级在函数port c中的xPortStartScheduler 函数中实现的
  • 自平衡小车控制(stc12+mpu6050程序)

    自平衡小车控制 xff08 stc12 43 mpu6050程序 xff09 两轮自平衡车最终版控制程序 xff08 6轴MPU6050 43 互补滤波 43 PWM电机 xff09 单片机STC12C5A60S2 晶振 xff1a 20M
  • 深度学习常见名词概念:Sota、Benchmark、Baseline、端到端模型、迁移学习等的定义

    深度学习 xff1a Sota的定义 Sota非端到端模型端到端模型Benchmark Baseline并发 并行 串行迁移学习微调进程 线程监督学习非监督学习半监督学习泛化 xff08 Generalization xff09 正则化 x
  • VINS 系统总结

  • VIO算法总结(一)

    所谓VIO xff08 visual inertial odometry xff09 就是视觉传感器 xff08 camera xff09 43 IMU xff08 inertial measurement unit xff09 一起来做自
  • 西门子1200、1500 PLC中如何将寄存器(M,D,DB)值存入到结构体变量中

    如果将MD100 QD100的值存入到结构体中 xff0c 直接存储过去是存不了的 解决方法是 xff1a 1 建立一个COPY块 xff0c 为FB FC型均可 将寄存器的值或结构体的值序列化 建立出来的库 xff0c 具体作用是结构体
  • windows下clion配置cmake

    1 Cmake安装 cmake官方链接 进入cmake官网下载cmake xff0c 然后一路next xff0c 傻瓜式安装 2 MinGW安装 MinGW官网安装 xff0c 或者去其他论坛找资源 然后打开桌面的快捷方式 xff0c 没
  • ubuntu18.04 安装 roboware-studio

    RoboWare Studio是一个ROS集成开发环境 与ROS匹配性比起其他IDE更好 xff0c 可以用它开发 ROS更加简单 并且在官网ros wiki中有详细的使用教程 本文主要是在Ubuntu18 04中安装RoboWare St
  • 烧录工具Android Tool的使用

    RK3308 该工具是RK的开发工具 xff0c 用于烧录用的 xff0c 不同型号的芯片对应的Android Tool中的下载镜像界面也不一样 xff0c 你像RK3308编出来的烧录文件有如下 xff1a 对应的Android Tool
  • Jetson nano i2c教程(MPU6050 + PCA9685)

    首先介绍nano板子上的i2c相关的硬件信息 xff1a 安装所需要的i2c库 sudo apt get install l y i2c tools 完成nano中io与i2c设备的硬件接线 本次案例使用的是PCA9685和MPU6050
  • ROS中发布里程计消息(Odometry)

    目录 1 首先理解里程计是什么 xff1f 2 里程计发布流程3 发布里程计TF变换2 1c 43 43 发布TF变换2 2 python发布TF变换 根据阿克曼转向结构的车辆实现里程计消息的发布 xff0c 本文参考博客如下 xff0c
  • ROS std_msgs/Header 数据含义

    std msgs Header msg消息里数据主要有一下几部分 xff1a uint32 seq time stamp string frame id 分别对这些数据做一个介绍 xff0c 如有错误 xff0c 欢迎批评指正 xff01
  • Carsim中添加路径

    目录 1 新建3D Road 数据库2 设置具体参数3 添加自定义道路信息 利用carsim和simulink联合仿真时 xff0c 需要给定参考轨迹 xff0c 具体设置如下 xff1a 1 新建3D Road 数据库 在Miscella
  • Carsim 2019 Run Now 按钮灰色

    安装carsim后 xff0c Run control with Simulink 模块中的Run Now 和Send to simulink 按钮灰色如下图所示 xff1a 解决办法 xff1a 在License Setting中 xff
  • Ubuntu 添加串口权限

    ubuntu串口添加权限方法 Ubuntu 添加串口权限前言一 添加用户组 xff0c 可长期使用二 给当前终端权限 xff08 单次有效 xff09 1 指定串口2 通用 三 修改文件 Ubuntu 添加串口权限 提示 xff1a 文章写
  • Ubuntu 虚拟机右上角网络连接符号消失

    这里写自定义目录标题 Ubuntu 虚拟机右上角网络连接符号消失解决方案 xff1a Ubuntu 虚拟机右上角网络连接符号消失 Ubuntu 虚拟机右上角网络连接符号消失 xff0c 如下图所示 解决方案 xff1a span class
  • C/C++中局部变量static用法实例

    1 普通局部变量存储于进程栈空间 xff0c 使用完毕会立即释放 xff0c 静态局部变量使用static修饰符定义 xff0c 即使在声明时未赋初值 xff0c 编译器也会把它初始化为0 xff0c 并且静态局部变量存储于进程的全局数据区
  • 嵌入式C语言经典面试题(一)

    1 用预处理指令 define 声明一个常数 xff0c 用以表明1年中有多少秒 xff08 忽略闰年问题 xff09 define SECONDS PER YEAR 60 60 24 365 UL 我在这想看到几件事情 xff1a 1 d
  • 更新Ubuntu内核到最新版本

    想起自己多年前玩Linux的时候知道了两个命令 xff1a sudo apt get update sudo apt get upgrade 以为是能够更新所有软件的 xff0c 后来发现 系统还是不能够更新的 那么 xff0c 系统应该如
  • RK3308 按键Key与LED灯

    硬件原理图 LED指示灯 麦克风阵列子板上使用12颗RGB灯作为效果指示灯 用户可以通过I2C总线配置LED灯驱动IC来是实现不同场景下的灯效 按键Key 麦克风阵列子板上集成五个控制按键 xff0c 分别为 xff1a 控制音量增减的VO