pop 音与耳机插拔杂音处理

在音频调试过程中,经常会遇到 pop 音与耳机相关问题(比如声音大小,插拔杂音等)。

pop 音

POP 音基本原理

POP 音的产生主要是因为 codec 开始工作时,耳机等输出或 mic 输入声道上的直流电平跳变产生的;手机或一般的手持设备上不会有负电压,音源信号必须在一个直流电平上(如 1/2VDD 上)输出,这样一个从 0 电平到 1/2VDD 的直流跳变,通过隔直电容后到耳机上必然会产生 POP 音,同样地对于喇叭输出也类似;codec 内部操作某些寄存器也会产生 pop,有的时间比较长,需要增加延时。

一般出现在音频开始工作、结束工作或者动态切换通路时,出现这种问题的原因有很多,需要具体情况具体分析。

大部分情况下在 PA 之后加延时都能解决,当然,加了 PA 延时可能也不起作用,即使加了一秒的延时,还会惊喜的发现 pop 会在一秒之后出现。这就要分析下具体是啥原因造成的了。

还有就是,如果左右声道都是采用全差分方式输出的话,那是不需要隔直电容,但是耳机就不能够用标准四线耳机插孔,这种全差分的方式,耳机一般都是用的专用输出插头(与调试接口共用)。

POP 音常见原因

引起 POP 原因可能有多种,可排查以下几点:

  1. 音源与 PA(Power Amplifier,功率放大器)开启关断时序不合理(可通过抓取音频输出波形与 PA 使能引脚波形来判定)
    因为有的功放 PA 使能之后要一定时间才能稳定工作,在这个时间内,codec 有任何变化都会被放大出来。

音频功放开关

  • 正常时序理应如下:
    • 上电时序:
      • 1. 打开 codec 输出。
      • 2.PA 拉高使能。
      • 3. 延时一小段后送入相应音源。
    • 下电时序:
      • 1. 关闭相应音源。
      • 2.PA 拉低。
      • 3. 延时一小段以后关闭 codec 输出。
  1. 输入电容,电阻失配引起;

  2. 原理图错误:AB 类差分输入应用;例如板子是差分输出,但是配置了单端输出。

  3. 音源本身问题; 如果音频经过 AU 软件修改,文件尾部被附带了一段软件信息。

  4. 控制音频 PA 使能引脚的 GPIO 口下拉能力弱,或其他地方有上拉,导致长时间未关断;有的方案 PA 是常开的。

  5. 部分 PA 芯片的使能会存在 Pa 音,单独操作 PA 使能开关查看是否 POP 音是本身产生的

通用解决方法

  1. 一般来说, IC 上、下电时的 POP 音是由于偏置电压的瞬间跳变引起的。所以要减小 POP 音就必须抑制 IC 的偏置电压 bias 的瞬变。Layout 上的体现方法就是增大 bias 的滤波电容。偏置电容变得过大会导致 IC 的建立时间变长,另外电容过大还会导致 THD+N 变差。

  2. 通过改变上下电时序,是在噪声出来之前关掉末端输出,通过软件修改 PA mute 和 spk mute 的时序,即为在 codec 驱动代码中定义的 dapm 的通路上调准顺序,在回调中增加 delay 时间,是内部产生的杂音不走到下一级输出,使其提前关闭。

  3. 预充电的方法,再加上上拉和下拉电阻将电容的直流电压稳定住,可能效果会比较好。当然首先要确认这个直流偏置 1/2VDD 到底是多高(有些是可以设置的,有些固定),才好设计上下拉电阻的大小,这样调整后,感觉效果还可以,pop noise 几乎感觉不到。

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

参考