关于手机常见音频POP音产生的原因以及解决思路(一)——耳机插入与拔出

最近在项目上debug音频POP音问题,属于手机音频关闭播放后的一小段时间产生的POP音。音频PA采用的是某知名厂商的模拟PA。无论数字PA还是模拟PA,虽然有所差别,但是debug思路是相似的,只是换汤不换药而已。

其实,在手机音频POP音问题,POP音的产生会分多种情形下。今日小白就来简单讲述一下,手机音频POP音常见的问题与debug思路。

耳机插入与拔出

关于耳机插拔产生的POP音问题,作为手机开发者来说,属于最常见的问题。究其原因还是因为耳机座MICBIAS处于打开状态而造成的。耳机座子的MICBIAS处于耳机座子的最外部的位置。所以,无论插入还是拔出,耳机的GND PIN都会碰到带电的耳机座上的Micbias,使得电流流入耳机,从而产生POP音。

耳机插入

在MTK平台,机器识别耳机的插入与拔出是通过int被拉低来判断的。
在这里插入图片描述
根据耳机结构的设计,INT位于座子最里面,当最里面的 INT PIN因为和L接触而被拉低时,机器就默认为耳机已经插入到位了。此方法为MTK判断耳机的插入的方式很简单。当INT被拉低后的指定时间内,机器根据ACCDET的分压情况来判断插入的耳机为三段式还是四段式。道理虽然都懂,但是不好的地方会存在一些bug点,因为在以前的项目中曾出现缓慢的插入三段式耳机机器错误的识别为四段式耳机,究其原因,后面有时间再详聊。

言归正传,其实关于耳机插入产生的POP音,主要存在于慢插拔过程中。耳机插入,INT通过L 声道被拉低,随后的260ms左右的时间,Micbias电压升上去。在Micbias带电的同时,因慢插拔,只要耳机头的GND因接触到带电的Micbias,都会导致电流传递到耳机声道处,最终都会产生POP音。

在一些项目里有通过修改INT拉低与Micbias上电之间的时间间隔即Micbias上电时间,来改善慢插拔出现的POP音问题。但终究无法根本性解决,只要你足够慢,就始终会复现这类问题。然而如果你快速插拔的话,此类问题将不存在。

图为快速插入耳机无POP音,关键信号的波形图。
在这里插入图片描述
图为MTK平台,快速插入耳机的关键信号波形变化。我们可以发现,在int拉低,260ms后MICBIAS才被拉高上电。由于快速,所以L声道不存在电压波动。

耳机拔出

关于耳机拔出时产生的POP音,其产生的道理和插入是一样的。
在这里插入图片描述
从波形图中,可以看到拔出瞬间左声道会有明显的尖峰电压,其最终在耳机输出端表现为POP音。同时MTK平台设计,在四段式耳机插入后即使手机不执行任何动作,MICBIAS都存在电压,也就意味着,几乎手机处于任何状态,拔出耳机都会存在POP音问题。

如果要想根本解决,改耳机座的结构其实是可以的,但是几乎没有公司这么做,同时这类问题在后期的客诉中也从未有过。所以在项目遇到这类问题时,大家都是默认为不是问题。

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git是一个非常流行的版本控制系统,但有时候在使用中会出现错误。下面是一些常见的Git错误代码以及解决办法: 1. 错误代码:fatal: refusing to merge unrelated histories 解决办法:在执行git pull命令时添加--allow-unrelated-histories参数,即git pull origin master --allow-unrelated-histories 2. 错误代码:error: failed to push some refs to 'git@github.com:XXX/XXX.git' 解决办法:先执行git pull命令更新本地代码,再执行git push命令推送代码 3. 错误代码:fatal: not a git repository (or any of the parent directories): .git 解决办法:进入正确的git仓库目录 4. 错误代码:fatal: unable to access 'https://github.com/XXX/XXX.git/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 解决办法:检查网络连接,或者将https改为ssh协议,即git@github.com:XXX/XXX.git 5. 错误代码:error: Your local changes to the following files would be overwritten by merge 解决办法:先执行git stash命令,将本地修改保存起来,再执行git pull命令更新代码,最后执行git stash pop命令恢复本地修改 6. 错误代码:fatal: the remote end hung up unexpectedly 解决办法:检查网络连接,或者将git缓存设置为最大值,即git config --global http.postBuffer 524288000 7. 错误代码:error: pathspec 'XXX' did not match any file(s) known to git 解决办法:检查输入的文件名是否正确,或者执行git add命令添加文件 这些是常见的Git错误代码和解决办法,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值