Fork me on GitHub
0%

音频POP音解析

产生原因

“POP”噪声是指音频器件在上电、断电瞬间以及上电稳定后,各种操作带来的瞬态冲击所产生的爆破声

硬件

  1. 电容充电/放电: 在音频设备状态切换时,电容可能会进行充电或放电,导致电压跳变
  2. 控制音频PA使能引脚的GPIO口下拉能力弱,或其他地方有上拉,导致长时间未关断
  3. 耳机插入

软件

  1. CODEC、PA上电掉电时序控制不正确
  2. CODEC内部音频通路切换
  3. 操作CODEC相关寄存器(设置Bias Level)的时候MCLK动了
  4. 对于比较差的模拟功放,在操作其mute管脚可能出现问题

其它

  1. 音源本身存在问题,数据本身不连续有跳变

  2. 非线性放大。音频信号在放大过程中可能引起非线性失真,导致 “pop” 音

问题定位

对于POP音的产生有很多原因,确认具体产生原因对症下药

  1. 确认MCLK是否稳定。连接示波器,录放音查看MCLK是否稳定,在关键BIAS ON / BIAS OFF等关键节点加入延时保证可以正常查看
  2. 确认功放CODEC上电时序。查看代码或者相关打印log保证功放时序
  3. 确认CODEC寄存器影响。二分法依次注释掉操作寄存器相关代码并确认是否存在POP音,定位是哪些寄存器影响。
  4. 确认硬件电容是否影响

解决方法

  1. 硬件Layout

    减小 POP 音就必须抑制 IC 的偏置电压bias的瞬变,Layout上的体现方法就是增大bias的滤波电容。偏置电容变得过大会导致 IC 的建立时间变长,另外电容过大还会导致 THD+N 变差。

  2. 时序控制

    • 上电时序:打开codec输出;PA拉高使能;延时一小段后送入相应音源
    • 下电时序:闭相应音源;PA 拉低;延时一小段以后关闭codec输出
  3. CODEC寄存器支持

    现在有些CODEC在软件上有一个寄存器可以设置这个直流电平的上升时间,让它在一定时间内跳变到1/2VDD,而不是很陡的一个上升沿,这样可以在一定程度改善这个POP音。

  4. 配置CODEC内部音频通路

    在录放音开始或者结束的时候,CODEC内部通常需要使能相关通路的寄存器。这些寄存器的打开的先后顺序也可能产生影响,可以进行调整试试看

  5. 软件淡入淡出效果。 在音频切换时实现软件淡入淡出效果,平滑切换音频信号(淡入淡出音频信号/电压/振幅)

  6. 保证MCLK稳定

参考资料

  1. 常见的音频问题
  2. pop音排查
  3. 音频常见问题总结
  4. 杂音 & pop 音的解决方法