当前位置: 首页 > 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>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Datawhale X 李宏毅苹果书 AI夏令营 Task3 深度学习详解 -2 机器学习框架攻略
  • 探索 Logrus 日志框架:Go 语言的强大日志工具
  • 【WPS Excel】复制表格时,提示“图片太大,超过部份将被截去“ 问题
  • 提高开发效率的实用工具库VueUse
  • OPenCV结构分析与形状描述符(4)计算一个旋转矩形的四个顶点的函数boxPoints()的使用
  • 实时图像编辑大革新!Adobe发布TurboEdit:可以通过文本来编辑图像,编辑时间<0.5秒!
  • 11.2.软件系统分析与设计-数据库分析与设计
  • C语言-数据结构 无向图普里姆Prim算法(邻接矩阵存储)
  • 可交互、会学习、自成长机器人——李德毅院士
  • 【Linux】易忘操作集合
  • 本地如何调百度地图 地图 map baidu-map 百度地图经纬度
  • 蔚来汽车-测开日常实习-部分手撕代码题
  • SAP 批量扩充物料库存地点简介
  • NCU-机器学习-作业1:基于KNN的IRIS分类
  • 进程第五章:进程替换
  • 网络传输文件的问题
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Android交互
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Java方法详解
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • windows下如何用phpstorm同步测试服务器
  • 仿天猫超市收藏抛物线动画工具库
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 计算机常识 - 收藏集 - 掘金
  • 技术发展面试
  • 简析gRPC client 连接管理
  • 前端面试之闭包
  • 系统认识JavaScript正则表达式
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • Python 之网络式编程
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • !!Dom4j 学习笔记
  • #php的pecl工具#
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (笔试题)合法字符串
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (生成器)yield与(迭代器)generator
  • (四)软件性能测试
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转) 深度模型优化性能 调参
  • (转)memcache、redis缓存
  • (转)Mysql的优化设置
  • (转)Oracle存储过程编写经验和优化措施
  • ./configure、make、make install 命令
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NetCore 如何动态路由
  • .net反混淆脱壳工具de4dot的使用
  • .Net小白的大学四年,内含面经
  • .sh
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节