• 关于手机常见音频POP音产生的原因以及解决思路(二)——音源的开启与关闭


    前面讲了耳机插拔过程产生POP音,今天再给大家讲一讲由于音频PA产生的POP音。

    关于音频PA产生的POP音应该是很多项目都遇到过的问题,这类问题,如果想要根本兴彻底解决几乎是不太可能的。因芯片本身特性,几乎世面上的大多数无论是数字PA芯片还是模拟PA芯片,在使用专业的PA设备测量时,几乎都会在音源播放结束后的短暂时间里会存在一个尖峰电压。但由于个别尖峰电压较小,产生的POP音微忽极微,用户几乎完全听不到。

    所以这个尖峰电压大概是多少属于可接受范围,人耳几乎察觉不到呢?在PA的规格书存在着这么一个参数VOS,如果测试的尖峰电压小于规格书中的VOS,几乎可以完全忽略此问题。大多数VOS值为±30毫伏,也就是如果你在PA设备上测量的尖峰电压小于这个值的话,这种情况可以说是不会被人耳所听到。

    如果尖峰电压值超过了这个值,例如上百mV这种情况,人耳是很容易听到的。这类问题,往往是需要解决的,因为已经影响到用户的体验了。

    产生的原因

    音频电路在开启与关闭时,带有直流偏置的输出信号加载到隔直电容上的瞬间,电容上的电压会形成一个瞬时的充放电电流,进而形成一个尖峰电压,经PA再次放大后,最终输出到音频器件如听筒或者喇叭后产生人耳可听到的POP音。
    在这里插入图片描述

    解决办法

    关于音频PA导致的POP音问题,其实方法有多种。
    以模拟PA为例:
    在这里插入图片描述

    通过上述原理图可以看出平台Codec 输出的交流信号经R4 R5的串阻,再经过C7 C8的100NF最终进入PA。在Codec开启或者关闭瞬间,其会在C7 C8上产生瞬间的电压,最终经过PA的八倍放大,形成人耳可以听到的POP音。

    方法一:更改Codec输出容值

    高中物理,我们曾学过电容公式,Q=C*V。I=dq/dt。所以呢,既然是电容充放电引起的POP,就可以通过改善电容来减小充放电电流值,减小尖峰电压的的值,最终减小POP音。道理很简单,但是关于隔直的电容的容值的修改其实是最不建议的。因为PA芯片厂商的推荐值即为100Nf.一旦调整可能会对音频领域的相关效果调试产生连锁的反应。

    方法二:更改Codec与PA之间的串阻阻值

    根据公式U=I*R,降低通路上的阻值,也可以同样减小突变的电压值。然而在一些设计不规范的电路里,有些人员喜欢将R4 R5选择为K级别阻值的电阻。其也是形成POP音的一部分原因所在。

    方法三:软件上修改时序

    前面,小白曾有过这么一段描述:在Codec开启或者关闭瞬间,其会在C7 C8上产生瞬间的电压,最终经过PA的八倍放大输出,形成人耳可以听到的POP音。如果你仔细揣摩的话,会发现,POP的存在有两个条件:(1)Codec先发开启或者关闭。(2)PA此时正处于工作状态
    所以,我们可以试图修改一下先后顺序来解决此问题:
    A 音频开启时:先让Codec打开,即先让电容先充一会,待电容充电完毕,再打开PA(一般是让PA的使能拉高),输出音源。其可完美的避开POP音的产生。其中,Codec打开到PA的打开时间间隔往往设置的是40ms.
    B 音频关闭时:先让PA关闭(一般是让PA的使能拉低),即PA不工作,音源无法经过PA输出。再将Codec关闭,此时无论电容怎么放电,都不会通过不处于工作的PA传递给负载。其中,PA的关闭时间在Codec关闭的前1ms即可。
    总之,简单的描述,即当电容充放电时,让PA不处于工作状态。

    三种方法,往往用的最多的也是最为推荐的还是第三种。

  • 相关阅读:
    手记系列之五 ----- SQL使用经验分享
    Perl-->Telnet的使用
    【Unity小技巧】图片使用的一些常见问题
    用数据铺就创收之路
    12030.LMK03000时钟合成器
    cesium加载geojso面数据拉升高度
    【C/C++】带你快速掌握 使用—增强for(范围for循环)
    Java中的this关键字
    实现按键单击、双击和长按事件的FreeRTOS任务
    YOLO目标检测——密集人群人头检测数据集【含对应voc、coco和yolo三种格式标签】
  • 原文地址:https://blog.csdn.net/weixin_43772512/article/details/126822520