Android音频子系统(driver+android)

MBHC:Multibutton Headset Control,多按钮耳机控制,是手机线控耳机中最常用的一种机制
MBHC Detection:多按钮耳机控制检测

耳麦是耳机与麦克风的整合体,它不同于普通的耳机。普通耳机往往是立体声的,而耳麦多是单声道的,同时,耳麦有普通耳机所没有的麦克风。耳麦分为无线耳麦和有线耳麦。这两种耳麦有各自的特点。

耳麦(headset)是耳机(headphone)与麦克风(microphone)的整合体。实际上就是耳机跟麦克风整合在一起了而已。

Line-in和Mic-in的区别和使用及Line-out

mic in、line in&line out、speaker out、headphone out 区别

Linux 驱动 ALSA模型:

Linux ALSA声卡驱动之一:ALSA架构简介
Linux ALSA声卡驱动之二:声卡的创建
Linux ALSA声卡驱动之三:PCM设备的创建
Linux ALSA声卡驱动之四:Control设备的创建
Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
Linux ALSA声卡驱动之六:ASoC架构中的Machine
Linux ALSA声卡驱动之七:ASoC架构中的Codec
Linux ALSA声卡驱动之八:ASoC架构中的Platform

ALSA声卡驱动中的DAPM详解:

ALSA声卡驱动中的DAPM详解之一:kcontrol
ALSA声卡驱动中的DAPM详解之二:widget-具备路径和电源管理信息的kcontrol
ALSA声卡驱动中的DAPM详解之三:如何定义各种widget
ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route
ALSA声卡驱动中的DAPM详解之五:建立widget之间的连接关系
ALSA声卡驱动中的DAPM详解之六:精髓所在,牵一发而动全身
ALSA声卡驱动中的DAPM详解之七:dapm事件机制(dapm event)

Linux ALSA 音频系统:物理链路篇
Linux ALSA 音频系统:逻辑设备篇

高通平台

高通msm8996平台的ASOC音频路径分析(基于androidN及linux3.1x)
qcom 音频相关的dsp driver笔记(基于msm8996平台)
高通msm8996平台上的pa电源管理(wsa881x)
Qualcomm Audio HAL 音频通路设置
【audio】耳机插拔/线控按键识别流程
高通平台的耳机检测(msm8909)
高通平台耳机插拔检测
高通平台音频调试笔记
高通平台耳机知识记录
高通音频MBHC耳机系统软件相关配置归纳

DAPM(二)

DAPM之一:概述
DAPM之二:audio paths与dapm kcontrol
DAPM之三:audio paths与asound.conf
DAPM之五:dapm机制深入分析(上)
DAPM之六:dapm机制深入分析(下)

Android音频系统

Android 音频系统:从 AudioTrack 到 AudioFlinger
Android音频系统之AudioPolicyService
深入剖析Android音频之AudioPolicyService
Android音频系统之AudioFlinger(一)
Android音频系统之AudioFlinger(二)
Android音频系统之AudioFlinger(三)
Android音频系统之AudioFlinger(四)
Android音频系统之AudioTrack(一)
Android音频系统之AudioTrack(二)

扫描二维码关注公众号,回复: 12350803 查看本文章

音频驱动篇之pop音攻略

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

一、pop音产生的原因

(1)模块(通信模块出来的信号就带有脉冲跳变)
解决思路:在模块打开或关闭之前,对模块音频增益做渐变处理。
(2)PA产生
解决思路:对PA增益做渐变处理
(3)CODEC产生
解决思路:对声卡通路顺序进行控制选择、对声卡增益进行渐变处理

二、pop音产生的一些场景

(1)接听电话时
解决思路:首先打开模块音频通路,其次在对方响铃的时候(phone)再设置音频模式,然后对codec的增益设为最小,接着对
功放进行渐变处理,最后对codec的增益进行递增到正常大小操作。
(2)主动挂断电话时
解决思路:首先phone在获取挂断状态的第一时间内先设置音频模式后再进行其他操作,其次对功放进行渐变减小,
最后设置codec。
(3)被动挂断电话
解决思路:如果不是模块产生的pop音,其解决方法如主动挂断电话场景解决方法一致。如果是模块产生则需要模块在挂断电话的
时候做渐变处理。
(4)设备切换时
解决思路:主要在设备切换的时候加延迟解决。
(5)播放音乐/音乐切换
解决思路:在播放器打开或在音乐切换暂停时,对音量进行渐变处理。

杂音 & pop 音的解决方法

1. 喇叭有严重的“吱吱”破音,绝大多数的原因有可能在于V(out)电压不稳定,所以最好测一下无负载时的输出电压。同时也可以测量 VCC –即boost 的输出/输入电压。正常的VCC   可以通过客户的 反馈电阻和 VCC负载电阻求得。

2、客户有杂音:估计是信号的干扰,一般是电源的干扰因素占最大的比重,建议测量静态电流 IQ  。

3、POP 音:这个POP音说到底是因为codec开始工作时,耳机声道上的直流电平跳变产生的;手机或一般的手持设备上不会有负电压,音源信号必须在一个直流电平上(如1/2VDD上)输出,这样一个从0电平到1/2VDD的直流跳变,通过隔直电容电容后到耳机上必然会产生POP音。说到底还是搁置电容充放电的声音。

4、POP 音的减小方法:
方法一:一般来说, IC 上、掉电时的 POP 音是由于偏置电压的瞬间跳变引起的。所以要减小 POP 音就必须抑制 IC 的偏执电压Vbias  的瞬变。Layout  上的体现方法就是增大 Vbias   的滤波电容。对于 TPA6132 来说参考设计是 1 uF 但是偏置电容变得过大会导致 IC 的建立时间变长,会让人感觉声音“久久”没有出来。另外电容过大还会导致 THD+N 变差。
方法二:对于 TPA6132,我们通过改变时序,是在噪声出来之前关掉class , 通过软件修 改 Depop_mute#和Speaker_mute# 的时序,使其提前关闭。
方法三:电源开启噪声,地平面反弹的噪声(如一些解码芯片的beep pin接地后,由地噪声引起的不受speak off控制的pop声),等等,首要的是要查明来源。再找方法。如找不到或找到后无法解决,那可以试一下串一个电阻,对pop声的幅值进行压制,当然这也减少了耳机的最大音量。
方法四:还有一种方法:就是预充电的方法,再加上上拉和下拉电阻将电容的直流电压稳定住,可能效果会比较好。当然首先要确认这个直流偏置1/2VDD到底是多高(有些是可以设置的,有些固定),才好设计上下拉电阻的大小,这样调整后,感觉效果还可以,pop noise几乎感觉不到。
方法五:现在有些CODEC在软件上有一个寄存器可以设置这个直流电平的上升时间,让它在一定时间内跳变到1/2VDD,而不是很陡的一个上升沿,这样可以在一定程度改善这个POP音。

5、开关机的POP 音问题目前是整个音频功放的瓶颈问题,目前最好的一个解决方法是方法二。对于我们的 Demo 来说,例如切换歌曲的时候,可以先按住 EN 给他一个 low 信号,然后等音乐切换结束的时候再放开

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

7、特别注意 DEMO 的时候要共地,减小 POP 音产生的可能,检测的时候也会有标准。

猜你喜欢

转载自blog.csdn.net/weixin_44991625/article/details/109379876