• 关于手机常见音频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不处于工作状态。

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

  • 相关阅读:
    vue中路由传参
    【无标题】
    使用django+python开发的学生档案信息管理系统Vue源码
    Spring——IOC容器启动及Bean生成流程
    睡觉时,为啥有人喜欢穿袜子,有的人不穿?穿袜子睡觉好不好?
    groovy基础学习
    Spring注解之@ExceptionHandler 统一异常处理和获取方法名
    ​​​​​​​头歌(EduCoder)Java实训作业答案
    设计模式23--观察者模式
    【Debug】关于 nginx 上传文件时出现 413 及 500 错误码解决方法
  • 原文地址:https://blog.csdn.net/weixin_43772512/article/details/126822520