当前位置: 首页 > news >正文

RK3399 android7.1 话柄电话功能

实现功能:挂柄接IO口+GND控制话机听筒与系统喇叭的切换(抬起手柄声音由喇叭切换到听筒,挂到磁吸底座喇叭出声)
应用场景: 电子电话班牌,电话机等
硬件接线方式:

电话手柄:听筒接耳机座子<HRP,GND>,麦克风接<MIC+,MIC->
电话底座:磁吸座子接<IO2,GND>


一,IO(gpio)口为系统cpu直出

1.确认gpio引脚

例如(IO2+GND):

io2-gpio =<&gpio2 RK_PD1 GPIO_ACTIVE_HIGH>;

2.将需要对地控制的gpio引脚直接替换原生的耳机控制脚

一般dts中有描述:

rk_headset: rk-headset {compatible = "rockchip_headset";headset_gpio = <&gpio2 RK_PD1 GPIO_ACTIVE_HIGH>;pinctrl-names = "default";pinctrl-0 = <&hp_det>;
};

例如(IO2+GND):

diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi b/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi
index 65a3266d09..e6a621adce 100644
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi
@@ -17,10 +17,9 @@rk_headset: rk-headset {compatible = "rockchip_headset";
-               headset_gpio = <&gpio3 RK_PC2 GPIO_ACTIVE_HIGH>;
+               headset_gpio = <&gpio2 RK_PD1 GPIO_ACTIVE_HIGH>;pinctrl-names = "default";pinctrl-0 = <&hp_det>;
-               io-channels = <&saradc 2>;};vcc2v5_sys: vcc2v5-ddr {
@@ -415,7 +414,7 @@};headphone {hp_det: hp-det {
-                       rockchip,pins = <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>;
+                       rockchip,pins = <2 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>;};};

二,通过xrm117x驱动 i2c转外部扩展GPIO

1.添加gpio_key.c

代码路径kernel/drivers/char/gpio_key.c
代码功能:用于管理 GPIO 键,通过一个线程监控 GPIO 键的状态变化并相应地处理这些状态变化。

#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/pm.h>
#include <linux/i2c.h>
#include <linux/spi/spi.h>
#include <linux/platform_device.h>
#include <linux/errno.h>
http://www.lryc.cn/news/431649.html

相关文章:

  • 实习四十:部署project_exam_system项目——及容器的编排
  • 栈,队列
  • 新增一个数组传递给后端
  • Flutter集成Firebase中的Realtime Analytics
  • 2024国赛数学建模A题B题C题D题E题思路资料模型
  • C语言字面量和常量
  • 视频结构化从入门到精通——行为分析类应用
  • Redis的KeyExpirationEventMessageListener键过期监听器
  • MP4视频压缩,推荐这五大压缩操作
  • docker 安装NextERP
  • Android 存储之 SharedPreferences 框架体系编码模板
  • 弹性容器Flex中的自动外边距(Auto Margins) 的作用
  • C语言调用子函数时入/出栈(保护/恢复现场)全过程分析:以Cortex-M3为例
  • 理解Sigmoid激活函数原理和实现
  • 探秘DevSecOps黄金管道,安全与效率的完美融合
  • Redis的内存淘汰策略- volatile-lru
  • HTTP和HTTPS的区别?哪一个更适合你的网站?
  • OpenAI SORA团队负责人 通往智能的方式 报告笔记
  • 006-Sleuth(Micrometer)+ZipKin分布式链路追踪
  • AI模型:追求全能还是专精?-- 之6 语言复杂度类别(Category 0~3 类)和语言功能性类型(Type 0~Ⅲ 型)之2
  • 20240907 每日AI必读资讯
  • 深度学习基础--卷积基础模块
  • 视频智能分析打手机检测算法安防监控打手机检测算法应用场景、算法源码、算法模型介绍
  • 6.2图的存储及基本操作
  • Java语法全解析:掌握基本规则,打造稳固编程基础!
  • 同时播放多个视频
  • 伴奏提取消除人声如何操作?轻松几步玩转音乐世界
  • uniapp二维码生成
  • Android UID 和 userID 以及 appID
  • Kafka的三高设计原理