pop音与耳机插拔杂音处理
在音频调试过程中,经常会遇到pop音与耳机相关问题(比如声音大小,插拔杂音等)。
pop音
POP音基本原理
POP音的产生主要是因为codec开始工作时,耳机等输出或mic输入声道上的直流电平跳变产生的;手机或一般的手持设备上不会有负电压,音源信号必须在一个直流电平上(如1/2VDD上)输出,这样一个从0电平到1/2VDD的直流跳变,通过隔直电容后到耳机上必然会产生POP音,同样地对于喇叭输出也类似;codec内部操作某些寄存器也会产生pop,有的时间比较长,需要增加延时。
一般出现在音频开始工作、结束工作或者动态切换通路时,出现这种问题的原因有很多,需要具体情况具体分析。
大部分情况下在PA之后加延时都能解决,当然,加了PA延时可能也不起作用,即使加了一秒的延时,还会惊喜的发现pop会在一秒之后出现。这就要分析下具体是啥原因造成的了。
还有就是,如果左右声道都是采用全差分方式输出的话,那是不需要隔直电容,但是耳机就不能够用标准四线耳机插孔,这种全差分的方式,耳机一般都是用的专用输出插头(与调试接口共用)。
POP音常见原因
引起POP原因可能有多种,可排查以下几点:
- 音源与PA(Power Amplifier,功率放大器)开启关断时序不合理(可通过抓取音频输出波形与PA使能引脚波形来判定)
因为有的功放PA使能之后要一定时间才能稳定工作,在这个时间内,codec有任何变化都会被放大出来。
- 正常时序理应如下:
- 上电时序:
- 1.打开codec输出。
- 2.PA拉高使能。
- 3.延时一小段后送入相应音源。
- 下电时序:
- 1.关闭相应音源。
- 2.PA 拉低。
- 3.延时一小段以后关闭codec输出。
- 上电时序:
输入电容,电阻失配引起;
原理图错误:AB类差分输入应用;例如板子是差分输出,但是配置了单端输出。
音源本身问题; 如果音频经过AU软件修改,文件尾部被附带了一段软件信息。
控制音频PA使能引脚的GPIO口下拉能力弱,或其他地方有上拉,导致长时间未关断;有的方案PA是常开的。
部分PA芯片的使能会存在Pa音,单独操作PA使能开关查看是否POP音是本身产生的
通用解决方法
一般来说, IC 上、下电时的 POP 音是由于偏置电压的瞬间跳变引起的。所以要减小 POP 音就必须抑制 IC 的偏置电压bias的瞬变。Layout上的体现方法就是增大bias的滤波电容。偏置电容变得过大会导致 IC 的建立时间变长,另外电容过大还会导致 THD+N 变差。
通过改变上下电时序,是在噪声出来之前关掉末端输出,通过软件修改PA mute和spk mute的时序,即为在codec驱动代码中定义的dapm的通路上调准顺序,在回调中增加delay时间,是内部产生的杂音不走到下一级输出,使其提前关闭。
预充电的方法,再加上上拉和下拉电阻将电容的直流电压稳定住,可能效果会比较好。当然首先要确认这个直流偏置1/2VDD到底是多高(有些是可以设置的,有些固定),才好设计上下拉电阻的大小,这样调整后,感觉效果还可以,pop noise几乎感觉不到。
有些CODEC在软件上有一个寄存器可以设置这个直流电平的上升时间,让它在一定时间内跳变到1/2VDD,而不是很陡的一个上升沿,这样可以在一定程度改善这个POP音。
开关机的POP 音问题目前是整个音频功放的瓶颈问题,目前最好的一个解决方法是方法二。
对于正常工作时切换内部音频通路产生POP,切换之前可以将输出(HP,LineOut)Mute,切换完成后再unMute。
解决POP音小诀窍:从末端各个环节进行切分,然后细分codec内部数字和模拟模块的各个部件的上下电顺序,以及保持时间大小。
特殊情况的杂音
在正常放音的过程中,将其关机后重新开机(开关断电上电)时,出现部分杂音,可能原因是codec没有断过电一直处于正常工作状态。
检测方法:测量codec供电电压是否存在,有时候电压很低也可以正常工作,比如codec正常工作电压可以是1.8V,但是在0.9V时同样可以正常工作,而0.2V时无法工作
原因:关机后CPU等模块已经断电,但是codec由于与串口Rx/Tx共用电压,导致codec关机后一直处于正常工作状态,而重新开机时,由于CPU复位启动初期所有时钟源为晶振时钟24M,与上一次正常工作时时钟源不同导致codec出现杂音,杂音会持续到spl阶段重新初始化时钟模块后结束。
解决方法:不使用串口进行测试正常,将串口输入部分与codec供电部分进行隔离
耳机
耳机常见问题:
问题 | 可能原因 | 方法 |
---|---|---|
部分耳机识别异常 | (1)美标和国标问题 (2)耳机座子设计连接问题而不支持 | 优先查看原理图区分耳机标准问题 |
四节耳机无法录音 | (1)美标和国标问题,以及硬件本身不支持耳机录音 (2)audioroute设置问题 (3)录音时codec bias电压是否正常 | (1)优先查看原理图区分耳机标准问题,并测试bias电压是否正常 (2)根据codec spec的Mixer Path并通过tinymix工具检查mixer的设置 |
耳机输出串音 | 主要和硬件pcb layout设计有关 | (1)左右声道用GND隔离,降低干扰 (2)加大PCB layout的耳机的GND面积 |
耳机插拔状态相反 | 硬件耳机座子连接相反 | 修改检测电平代码 |
音频信号削波 | (1)DAC增益过大 (2)PA功放设置增益过大 | (1)降低增益,DAC音量默认不要给到大于0db的情况 (2)修改硬件电路PA增益设置 |
音量过小 | (1)模拟部分音量设置增益过小 (2)audioroute设置问题 (3)末端功放功率不达标 (4)单喇叭输出前有混音,针对0dB的音量来说,output mixer前端会有-6dB的操作,防止叠加后削顶失真,只有单边声道数据的话,音量会减小很多 (5)装机喇叭方向贴反 (6)喇叭紧贴屏幕,会有掉磁 | (1)调节模拟输出增益 (2)查看mixer的设置 (3)开启DRC功能 (4)外壳喇叭开孔处有音腔设计,有增大音量的效果 |
耳机插拔杂音 | 可能存在bias电压,导致插拔时电压波动,从mic输入,又在左右声道输出产生杂音 | 默认关闭bias电压,只在进行录音时将其开启 |
参考
- 杂音 & pop 音的解决方法
- ALSA子系统(六)——POP音排查
- ALSA子系统(九)——常见耳机问题