耳机jack构造及在应用时可能出现的问题
目前市场上耳机分为4环耳机(图1所示,iphone型)和3环耳机(图2所示)。4环耳机称为headset,3环耳机称为headphone,两者之间的区别就是4环耳机比3环耳机多个micphone。而Jack其实就是PC、PAD & Phone等设备上的耳机插口。

图1 图2
与耳机对应,一般常见的Jack都是由5PIN or 6PIN组成,其中PIN脚分别作为HP_OUTL(左声道输出)、HP_OUTR(右声道输出)、HP_DET#(耳机检测)、GROUND(地) & MIC(麦克风)使用。
在讲Jack的构造之前,先描述下驱动中耳机检测的一般流程:
<PLUG IN>HP_DET#信号由High->Low,触发IRQ到SOC,进入中断处理函数(即耳机类型检测);当检测到耳机为4环耳机时,直接上报给系统,并Enable butten press功能;若检测到为3环耳机时,继续检测,直到检测为4环耳机或则检测次数已满,然后将当前耳机状态上报给系统。
<PLUG OUT>HP_DET#信号由Low->High,触发IRQ到SOC,将当前耳机状态上报系统,并Disable那些和耳机相关的工作;
虽然Jack仅由5~6PIN组成,但不同的厂商会将其设计成各种各样。Jack的不同构造会对应着不同现象,下面描述我平时遇到的一些Jack构造以及其对应出现的现象。若有不对之处,还希望大家给予指正,谢谢!
Type1:

图3 图4
对于Type1的两个jack在功能上实际是一致的,并且都为5PIN脚。该Jack构造是HP_DET#和HPOUTL处于最前端,并且在同一位置,这样的设计是只有当耳机全部插入的时候,才能触发HP_DET#信号。由耳机检测的流程可知,该构造应该能很快的辨别出插入的耳机是3环 or 4环。并且不管快拔 or 慢拔耳机,都能第一时间触发HP_DET#信号。
Type2:

图5
Type2与Type1的jack的构造区别在于HP_DET#和HP_OUTL引脚不在同一位置,Type2类型的jack中HP_OUTL引脚会比HP_DET#更靠前。
这样的构造可能会出现当4环耳机刚拔出1环左右长度时,在这种情况下,6个PIN的状态可能如下:HP_OUTL处于float状态;HP_DET# & HS_OUTR处于第一环;AGND处于第二环;MIC2P_HP处于第三环,恰好是耳机的“-G-”,使得MIC2P_HP引脚的电压值为0.0V。由于HP_DET#依旧处于Pull Low状态,这样系统认为4环耳机仍然插入,而此时MIC2P_HP引脚因接地,导致其引脚电压值一直为0.0V,这与插入4环耳机,长按Butten的效果是一样的。
有的Android机台,会有Google Search功能,除了在操作界面上唤醒该功能外,还可以使用长按4环耳机的Butten键。
Type3:

图6
Type3 Jack的构造是将HP_DET# & AGND引脚接到同一位置,这样当耳机插入2节左右长度时,系统就可以识别到有耳机插入。使用Type3 Jack除了会出现Type2 Jack问题外,还会出现当慢慢斜着插入3环耳机时,系统会认为是4环耳机直接上报给上层。这个问题可以通过机构的设计解决“斜插”的问题,从而消除3环误认为4环的现象。
Type4:

图7
Type4 Jack的构造是HP_DET#处于最前端,这就与Type1 Jack的构造效果一致。
总结:本文主要描述了几种Jack的构造及其对应可能出现的问题。不足与不当之处希望大家见谅与指正。谢谢!
耳机jack构造及在应用时可能出现的问题的更多相关文章
- vim: 远程登陆服务器时可能出现的: 方向键,回退符不能正常使用
Solution of:远程登陆服务器时可能出现的: 方向键,回退符不能正常使用 远程登陆服务器,可能出现:方向键,回退符不能正常使用. 解决方法:在家目录下的.cshrc中添加set nocompa ...
- vbox 挂载共享文件时可能出现的问题以及对应的解决办法
VMBox挂载共享文件时可能出现的问题以及对应的解决办法 如果出现“未能加载虚拟光盘***.iso 到虚拟电脑的错误” : 左边一栏,右键光盘,eject,再安装
- VPN连接在遇到飞鱼星设备时可能出现的疑难问题
在连接VPN设备时,设置都是正常的.在
- EF DbContext 并发执行时可能出现的问题
现在许多Web项目都使用了IOC的DI注入组件.其中对象的生命周期管理是非常重要的. 有时我们为了提高请求的响应,经常在请求线程中执行多个子线程,然而忽略了EF的DbContext的生命周期管理. D ...
- HP Jack介绍
转载:https://www.cnblogs.com/Peter-Chen/p/3999212.html 目前市场上耳机分为4环耳机(图1所示,iphone型)和3环耳机(图2所示).4环耳机称为he ...
- 【C#进阶系列】29 混合线程同步构造
上一章讲了基元线程同步构造,而其它的线程同步构造都是基于这些基元线程同步构造的,并且一般都合并了用户模式和内核模式构造,我们称之为混合线程同步构造. 在没有线程竞争时,混合线程提供了基于用户模式构造所 ...
- 加载 CSS 时不影响页面渲染
转自:http://www.oschina.net/translate/loading-css-without-blocking-render 本文展示了一种技术,它能通过异步下载样式表,以阻止它们的 ...
- java 根据 根节点及所有子成员 构造树tree
实体类entity package com.ompa.biz.entity; import java.util.ArrayList; import java.util.List; public cla ...
- Java中对象构造
构造函数 作用:在构造对象的同时初始化对象.java强制要求对象 诞生同时被初始化,保证数据安全. 调用过程和机制:①申请内存,②执行构造函数的函数体,③返回对象的引用. 特点:与类同名,无返回类型, ...
随机推荐
- 深入理解Java内存模型(七)——总结
处理器内存模型 顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照.JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序 ...
- openwrt(路由器)的源码地址
https://dev.openwrt.org/wiki/GetSource 路由器的源码地址
- iPhone —— 如何自制铃声(图文)
iPhone不像其他手机可以直接将MP3格式的文件设为铃声.但如果想用自己喜欢的歌曲作为铃声该怎么办呢?请听我一一道来. 一.将MP3文件转换成iPhone铃声能识别的M4R格式文件 1.向iTune ...
- JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 一,概述 在Java语言中 ...
- 51nod1257 背包问题 V3
分数规划经典.开始精度1e-3/1e-4都不行,1e-5就A了 #include<cstdio> #include<cstring> #include<cctype> ...
- 51nod1052 最大M子段和
dp优化我总是不太熟练.这一次首先我写了O(n4)->O(n3)->O(n2).一步步的优化过来.yyl好像用的是单调队列优化dp我看不懂他的代码... O(n4) #include< ...
- HDU 3790 最短路径问题【Dijkstra】
题意:给出n个点,m条边,每条边的长度d和花费p,给出起点和终点的最短距离和花费,求最短距离,如果有多个最短距离,输出花费最少的 在用dijkstra求最短距离的时候,再用一个f[]数组保存下最少花费 ...
- OE中admin的内置帐号
在OE中admin的内置帐号为SUPERUSER_ID,可以用来直接做判断登录用户是否admin from openerp import SUPERUSER_ID if uid == SUPERUSE ...
- cocos2d-x使用python脚本创建项目的简单方法
本文有CC原创,转载请注明地址:http://blog.csdn.net/oktears/article/details/13297003 在cocos2d-x2.1.4以上的版本中,取消了使用vs模 ...
- 微软推出首个Microsoft Azure Stack技术预览版
Mike Neil,微软公司企业云副总裁 怀着对于提高业务灵活性.加速创新的期待,很多企业正在向云平台迅速迁移.伴随着这样的趋势,我们也见证了微软智能云Azure业务在全球市场的快速增长--每个月近1 ...