耳机驱动调试(插拔检测与按键检测) 您所在的位置:网站首页 耳机插孔类型 耳机驱动调试(插拔检测与按键检测)

耳机驱动调试(插拔检测与按键检测)

2023-03-07 20:32| 来源: 网络整理| 查看: 265

耳机驱动调试(插拔检测与按键检测)

小白一枚,欢各位大佬指出错误

耳机类型判断 三段和四段、欧标和美标

现在许多设备的耳机接口都采用3.5mm的耳机接口,其中终端就是,终端可以兼容三段和四段耳机;三段和四段耳机,单从外观上就比较好区分,顾名思义,三段耳机的接头由绝缘环分为三段(如图1所示),从接头头部开始依次对应左声道—右声道—接地;四段耳机接头由绝缘环分为四段。

耳机插头3.5与2.5三段与四段i版与n版等详解耳机插头3.5与2.5三段与四段i版与n版等详解

 

三段式和四段式耳机

三段耳机接头

三段耳机和四段耳机的区别在于,四段耳机相对于三段耳机多了mic功能,三段耳机仅能从设备输出声音,而四段耳机除了声音的输出外,同时还可以录入声音,用在终端中可以直接用耳机mic通电话、录音等。

欧标和美标

四段耳机从外观上看好像都相同,其实不然;根据接头上mic的位置不同分为欧标和美标,欧标又称为国家标准(OMTP标准:开放移动终端平台标准),美标又称为国际标准(CTIA标准:移动通信行业协会标准)。美标耳机与欧标耳机从插座头部开始每一段对应的通道不一样

欧标耳机:左声道—右声道—mic—接地;

美标耳机:左声道—右声道—接地—mic(如图2所示);

 

 

欧美标四段耳机接头原理图

图2 欧美标四段耳机接头原理图

以上是从外观分辨不出来的特点,在实际中要向确认一个四段耳机是欧标还是美标,一般通过万用表测量左/右声道与第三段/第四段之间的阻抗 (大约为35Ω) 来确认;除了测量阻抗来确定耳机标准外,我们还可以通过判断耳机接口上绝缘体的颜色来确认,欧标耳机与美标耳机通常情况下绝缘体颜色是不同的,美标为白色,欧标为黑色(绝缘体颜色非行业或国家标准,不能作为绝对的判断依据,不排除有特殊情况,所以最好的判断方式是用万用表测耳机阻抗)。

如果把美标的耳机接到欧标的接口上,就会出现音乐输出只有背景声的情况,按住麦克风上的通话键才正常出现声音。如果欧标的耳机接到美标的接口上,就会出现地线接触不良,耳机输出音量很小,按住麦克风上的通话键才正常出现声音的现象。

2.耳机座的标准

耳机座标准分为NC和NO两种,如图3所示(以美标耳机的耳机座为例);

 

 

从上图可以看出,无论是NC还是NO标准,MIC、GND(接地)、R(右声道)、L(左声道)4个触点线路均一致,不一致的地方为HS-DET,全称为headset-detective,是用以检测耳机是否插入的触点。

以NC为例,为耳机未插入的情况下,HS-DET和L是连接在一起的,为接地低电压。当耳机插入时,HS-DET会和L分离开来,HS-DET不再接地,突变为高电压。当电路检测到该电压突变的时候,就会认为耳机已经插入,从而进入下一步操作。拔出耳机时,HS-DET高电压突变为低电压,则识别为耳机拔出。

NO和NC相反,HS-DET在耳机未插入时为高电压,在耳机插入后为低电压。

耳机检测原理 耳机插拔检测

耳机检测中断上报与gpio中断上报类似,插入前后PIN脚电平状态发生突变,触发中断,以下图为标准耳机部分原理图(图中R602/NC)与 芯片datasheet:

由原理图可以判断这是一个美标、NC类型耳机座,耳机插入前HP_DET与HP_L闭合,HP_DET默认电平为低。耳机插入后HP_DET与HP_L断开,HP_DET电平被拉高,触发中断信号。

结合datasheet 选用headset L-INT 作为 HP_DET 触发耳机检测,设置完 耳机检测的阈值(例如350mV),插拔耳机就可以正常触发中断。

耳机按键检测

下图是一个耳机内部的电路图与检测耳机按键的datasheet

由耳机内部电路图分析得知,

当我们没有按下按键时,耳机MIC 与 上面提到耳机电路原理图中 的 电阻(R608)串联,HEADMIC_BIAS 2.8V  HP_GND 0V, 所以 耳机MIC 与 R608 串联 分压。HEADSET_BOTTON_DET 处电压 为 耳机MIC 两端电压,HEADSET_BOTTON_DET处电压 应当大于 1V,因为寄存器 _RG_AUDHEDET_BDET_REF_SEL 最大为 1V(视不同平台 datasheet 确定)。当我们按键耳机中间按键时,耳机MIC被短路 ,R608 直接 接到 HP_GND ,HEADSET_BOTTON_DET处电压 应当为 0V。所以 当我们将 _RG_AUDHEDET_BDET_REF_SEL 检测 阈值设置 为 1V 时,按键按下 和 抬起 电压值 正好在 _RG_AUDHEDET_BDET_REF_SEL 设置阈值的两侧 ,HEADSET_BOTTON_DET 引脚就会触发中断。同理 当 我们 按下 左 右 两个 按键 时,221Ω和 391 Ω会 分别和 R608 串联, 两个按键按下时 都 要保证 HEADSET_BOTTON_DET 处 的 电压低于 1V(_RG_AUDHEDET_BDET_REF_SEL 检测 阈值设置 为 1V 时)用来触发中断,也就是说 耳机 三 个的按键 按下时 ,可以触发中断后,读取 HEADSET_BOTTON_DET 处 的 电压。根据读取电压的不同,就可与区分 三个按键。上诉必须保证 没有按键按下时,读取 HEADSET_BOTTON_DET 处 要大于 _RG_AUDHEDET_BDET_REF_SEL 设置 阈值,按键按下时,读取 HEADSET_BOTTON_DET 处 要小于 _RG_AUDHEDET_BDET_REF_SEL 设置 阈值,用来触发中断。再根据 三个 按键 按下时接入电路的电阻阻值不同,根据分压值的大小来区别三个按键。 耳机检测与按键检测问题拓展 常开与常闭耳机问题

由耳机插拔检测中提到的NC 与 NO 耳机座。耳机的实际插拔与耳机插拔检测结果正好相反时,及耳机拔出软件报出的结果是耳机插入。

出现这个问题,如果没有 dts 或者 其他什么参数配置,直接找芯片平台解决问题,简单的改一下耳机插拔反向逻辑不一定能解决问题,还设计datasheet中相关寄存器修改(基本确定是要修改寄存器初始化参数)。

耳机类型检测

具体复杂的耳机类型判断,可以自己看一下驱动自己平台的驱动代码,我本次的检测比较粗暴,有文章张贴的图片可以我用的是美标耳机,所以 在驱动加载的时候(耳机按键未按下)检测 HEADSET_BOTTON_DET 处的电压, 如果该电压小于 1V 直接判断为 三段耳机 没有MIC功能。反之,判断耳机为正常的 四段 美标耳机。

该判断的逻辑在于,平台只支持 美标耳机,所以 三段耳机 和 欧标耳机 在 耳机按键没有按下时 检测 HEADSET_BOTTON_DET 处的电压 都为 0V,具体逻辑可以分析我前面 原理图 和 耳机按键检测解释 。

关于特殊耳机的支持

以poc 专用耳机举例 ,一下为 poc 专用耳机图解

HEADSET_BOTTON_DET  与 HEADMIC IN DET 为同一PIN脚。

由上图 我们可知,按键没有按下时耳机MIC 没有接入电路,按键按下时耳机MIC 和 2.2K电阻并联后 和 R608 串联 接入电路。我在 耳机按键检测中提到的 必须要保证耳机 没有按键按下时,读取 HEADSET_BOTTON_DET处电压 要大于 _RG_AUDHEDET_BDET_REF_SEL设置 阈值,按键按下时,读取 HEADSET_BOTTON_DET 处 要小于 _RG_AUDHEDET_BDET_REF_SEL设置 阈值,用来触发中断。所以说 这类 耳机 如果 没有 检测到耳机按键按下与抬起 直接 用万用表 测量一下按键按下和抬起时HEADSET_BOTTON_DET处电压 是否 符合 我提到的电压变化。如果不符合,请硬件 同事 调整 电路中的电阻阻值,使按下和抬起按键时电压变化正好处于设置阈值两侧。

更多类型的耳机,可以根据耳机检测原理灵活调整。

附:

文章部分内容引用https://mini.eastday.com/a/190613011041476.html?qid=02263&vqid=qid02650



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有