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 电压,只在进行录音时将其开启 |