MTK6577+Android之音频(audio)移植

备注:audio PA音频功放(power amplifier)

先借用《Y1MT6577 design notice V0.1》关于MT6577系统框图:

Android 如何知道驱动用的audio芯片 安卓音频驱动_框图

图1

可知speaker是由MT6329(PMIC)来控制的

1.     硬件设计

1.1  喇叭

Android 如何知道驱动用的audio芯片 安卓音频驱动_框图

图2

这里采用了audio通道2和speaker通道2,HPRP(模拟GPIO引脚)是MTK6577的Earphone receiver signal for AUDIO_JACK_R(audio jack理解为耳机插座),

引脚

功能

MT6577
HPRP
Earphone receiver signal for AUDIO_JACK_R
MT6329
VBAT_SPK2
Speaker通道2的VBAT端
MT6329
SPK2_P
Speaker通道2差分输出正极
MT6329
SPK2_N
Speaker通道2差分输出负极

1.2  Mcrophone(麦克风)原理图设计

Android 如何知道驱动用的audio芯片 安卓音频驱动_框图

图3

引脚

功能
MT6577
VMIC
麦克风偏置电压1.9V
MIC头
MICP
MIC头的正极
MIC头
MICN
MIC头的负极
MT6577
AU_VIN0_P ---MICP0
Audio 0 in P for microphone
MT6577
AU_VIN0_N--- MICN0
Audio 0 in N for microphone

1.3  Handsetreceiver(手机接收器)

Android 如何知道驱动用的audio芯片 安卓音频驱动_框图

图4

引脚

功能

MT6577
HSP
AUDIO_OUT_P for handset receiver
MT6577
HSN
AUDIO_OUT_N for handset receiver
MT6329
VBI_P

声音差分输入正极

MT6329
VBI_N

声音差分输入负极

这是手机应用示例图,但目前我们设备没有引出音频插头,所以这里没有用到:

Android 如何知道驱动用的audio芯片 安卓音频驱动_框图

图5

为了更好理解音频这部分,借用《Y1MT6577 design notice V0.1》音频部分的一张图:

Android 如何知道驱动用的audio芯片 安卓音频驱动_框图

图6

1.4  总结

先给出上面MT6577和MT6329用到的音频接口引脚:

引脚

功能

MT6577
HPLP(输出)
Earphone receiver signal for AUDIO_JACK_L(输出给耳机的左声道声音)
MT6577
HPRP(输出)
Earphone receiver signal for AUDIO_JACK_R
MT6577
HSP(输出)
AUDIO_OUT_P for handset receiver
MT6577
HSN(输出)
AUDIO_OUT_N for handset receiver
MT6329
VBI_P(输入)
Voice differential input(positive)
MT6329
VBI_N(输入)
Voice differential input(negative)

1.4.1       MT6329音频部分框图

Android 如何知道驱动用的audio芯片 安卓音频驱动_框图

图7

Voice input:对应VBI_P和VBI_N部分。
Audio_L input:对应AUD1_P和AUD1_N
Audio_R input:对应AUD2_P和AUD2_N
SPKL:对应SPK1_P和SPK1_N
SPKR:对应SPK2_P和SPK2_N

Input MUX:可以选择MT6577的HSP、HSN;或是HPRP;或是HPLP作为输入,SPK1或是SPK2作为输出,为了更好理解,下面给出2in1 speaker应用的示例图,这里的2是指HSP与HSN作为音频输入;或是HPRP/HPLP作为音频输入,1是指1个喇叭。

Android 如何知道驱动用的audio芯片 安卓音频驱动_框图

图8

那么我们的产品应该设置CUSTOM_KERNEL_SOUND= amp_6329pmic_2in1_spk

1.4.2       MT6577音频部分

Android 如何知道驱动用的audio芯片 安卓音频驱动_框图

图9

立体声在录音时就是用两只话筒按左右声道录制的双声道音迹。在播放时也要严格的按左右声道分别放音,使录音时左声道录入的声音进入听者的左耳,右声道录入的声音进入右耳,这样,听者就会产生身临其境的感受,也就是产生了立体感。好的立体声,听者能辩别出声源的方位,和声源移动的过程。如果将耳机戴反了,耳朵可以听到声音,但立体声就辩别不出来了。所以戴耳机时要按左右声道戴,以取得听觉的立体声效果。

2.     软件实现

2.1  修改及编译

(1)  修改\mediatek\config\prj\ ProjectConfig.mk

MTK_SOUNDRECORDER_APP=no
改为MTK_SOUNDRECORDER_APP=yes

但这环境变量的值和喇叭是否能够发出声音无管,目前暂时还是设置为no。

CUSTOM_KERNEL_SOUND=amp_yad改为:
CUSTOM_KERNEL_SOUND=amp_6329pmic_2in1_spk

这里要根据实际的设计来选择,amp_yad是用外部PA的,amp_6329pmic_2in1_spk是采用PMIC MT6329的PA(内部PA),这个根据实际的设计来选择,这里的2in1可理解为听筒和免提一体,这部分可参考图8。

我这边有别人开发好的镜像文件,在我的系统基础上,我只更新音频可以正常发出声音的boot.img就能够正常了,但是我根据上面的修改之后经过下面一些尝试都还是没有声音:

1)     ./mk rk,然后./mk bootimage,更新boot.img,还是没有声音。
2)     ./mk rk--->./mk systemimage,更新system.img、secro.img、recovery.img和boot.img,还是没有声音
3)     ./mk rub,更新uboot.bin,还是没有声音。
4)     ./mk rpl,更新preloader.bin,还是没有声音。

后来实在没有思路了,就直接./mk r,然后更新所有生成的镜像文件,就OK了,很奇怪,先记录下来。

参考:

《Y1MT6577 design notice V0.1》

MTK Android 之MT6577驱动笔记