本文主要是介绍小小耳机大学问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
耳机驱动属于codec驱动模块。p_d_3_1_8中我是搞codec驱动的,再来搞w_d_8_0_1项目,别人问我耳机侦测方面的问题时,记忆已经模糊了,这里重新梳理下:
三段耳机只有左右声道,四段耳机可以有mic和按键。
检测的依据示意图如下:
上拉2.2k电阻到Vbias,然后mic和按键并联下拉至地。
电路可以自适应三段和四段耳机,
如果插入3段耳机,mic_det检测的电压应该是偏置电压Vbias。
如果插入4段耳机,mic上的电压理论上应该是VbiasX(Rmic/(Rmic+2.2K)),我在p_d_3_1_8中取的判断值是300mV,这能可靠保证不误判。另外,在实际使用中遇到插拔耳机慢导致误判的情况,这可以通过滤波来规避。Rmic一般是32欧姆。偏置电压可调,pd_3_1_8中好像是1.25V。
如果耳机上带按键,按键是和mic并联的,按键按下去mic_det上电压为0,这样可以区分。这个按键最好是通过delayed_work去100ms定时查询,然后input事件给上层。
不知道100ms的delayed_work负载大不大,要是电路设计可以让mic_det检测中断,要好得多。
mic的灵敏度不高,可以增加输入通道的增益,也可以提高Vbias的电压,这个电压一般有codec输出,可调。
codec输出要控制增益,不要让speaker失真。可以通过播放1KHz测试源,通过示波器看。
这篇关于小小耳机大学问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!