smart PA
翻译成中文,就是“智能功率放大器”,其本质上也是一个放大器,而它和普通外放模块相比,最大的区别是加了一个反馈的功能。
这个反馈的功能起到什么样的作用呢?
假设一特定中频下smart PA
和普通PA
模块信噪比、最大输出功率等可以做到完全相同,在其他频率下(特别是在低频)普通放大器为了保证信噪比(直观反映为音质)及最大功率(防止被烧毁),该放大器在设计之初就必须调低放大的倍数。换而言之,就是普通放大器为了保证全频段内的性能,不得不在大部分频段“保留实力”,俗称“上锁”。而smart PA
的关键就是加入了输出信号的反馈,从而做到通过反馈做到精准控制。
最明显的就是音量更大,效果更好了。
它能够专门提高智能机音乐输出动态范围,动态跟踪喇叭的状态并感知其所处环境的变化,在适应后给出改变,为手机、便携式音乐播放器和平板计算机带来更高的音量、更浑厚的低音与更出色的音质,而且还可以在不超过扬声器本身承受能力的前提下提高音乐的平均音量。
smard PA
目前提供两大外放上最为强悍的功能: 第一,保护功能,保护器件不受超额工作的损害;第二,可以理解为效果类功能,在保护器件的同时,能够一定程度上提升音质。 这里以AW87319
智能功放为例。
普通功放受到锂电池电压的限制,功放无法达到很大的推力,音量设置过大会导致削波杂音。AW87319
是专门提高智能机音乐输出动态范围,提升整体音质而开发的高效率,低噪声,恒定大音量的第二代Smart K
音乐功放。AW87319
内部集成boost
升压电路,升压高至8.5V
,可在短时间内产生4.1W
的强劲推力,在增加电压裕量的同时减小削波风险。AW87319
集成艾为专有的Triple-Level Triple-Rate AGC
音效算法,增强低音,提升音乐动态听感,有效消除音乐播放中杂音,同时提升音量改善音质。AW87319
的底噪低至47μV
,具有高达102dB
的信噪比,0.015%
的超低失真度和独特的针对高压功放设计的保护喇叭的技术——Triple-Level Triple-Rate AGC
技术,带来高品质的音乐享受。
AW87319
支持Speaker
和Receiver
的二合一应用。在Receiver
应用时,Class D
功率级电源由VBAT
直通提供。
AW87319
通过I2C
接口控制内部寄存器,寄存器参数包括:Boost
输出电压,Boost
最大输入峰值电流,Class D
放大倍数,Triple-level Triple-Rate AGC
参数等。
AW87319
内置限流保护、过热保护和短路保护功能,有效地保护芯片。AW87319
采用纤小的2.76mm*2.36mm CSP-19
封装。
因为audio
驱动中本身已经对普通的PA
进行了配置,所以只需要将普通的PA
的配置进行替换以及添加上smartPa
的配置即可。
(ps: “+”号代表原来没有这行命令或者代码,是新添加的
)
所在文件:
./kernel-4.4/arch/arm64/configs/k63v2_64_bsp_debug_defconfig
+ CONFIG_EXT_PA_AW87319=y
所在文件:
./kernel-4.4/arch/arm64/configs/k63v2_64_bsp_defconfig
+ CONFIG_EXT_PA_AW87319=y
所在文件:
./kernel-4.4/drivers/misc/mediatek/Makefile
+ obj-$(CONFIG_EXT_PA_AW87319) += aw87319/
将aw87319
代码包添加到 ./kernel-4.4/drivers/misc/mediatek/ 目录下。
所在文件:
./kernel-4.4/drivers/misc/mediatek/aw87319/Kconfig
+ config EXT_PA_AW87319
+ bool "MTK sound for external I2C driver"
+ default n
+ help
+ If you say Y, enable mtk audio i2c driver to control
+ external device for example:smartpa device.
所在文件:
./kernel-4.4/drivers/misc/mediatek/aw87319/Makefile
+ obj-$(CONFIG_EXT_PA_AW87319) += aw87319_audio.o
所在文件:
./kernel-4.4/sound/soc/mediatek/codec/mt63xx/mtk-soc-codec-63xx.c
+ extern unsigned char aw87319_audio_speaker(void);
+ extern unsigned char aw87319_audio_receiver(void);
+ extern unsigned char aw87319_audio_off(void);
+ extern unsigned char aw87339_audio_kspk(void);
+ extern unsigned char aw87339_audio_drcv(void);
+ extern unsigned char aw87339_audio_off(void);
static void Ext_Speaker_Amp_Change(bool enable)
{
#define SPK_WARM_UP_TIME (25) /* unit is ms */
if (enable) {
pr_debug("Ext_Speaker_Amp_Change ON+\n");
+ #if defined(CONFIG_EXT_PA_AW87339)
+ aw87339_audio_off();
+ aw87339_audio_kspk();
+ #elif defined(CONFIG_EXT_PA_AW87319)
+ aw87319_audio_off();
+ aw87319_audio_speaker();
+ #else
AudDrv_GPIO_EXTAMP_Select(false, 3);
/*udelay(1000); */
usleep_range(1 * 1000, 20 * 1000);
AudDrv_GPIO_EXTAMP_Select(true, 3);
msleep(SPK_WARM_UP_TIME);
+ #endif
pr_debug("Ext_Speaker_Amp_Change ON-\n");
} else {
pr_debug("Ext_Speaker_Amp_Change OFF+\n");
+ #if defined(CONFIG_EXT_PA_AW87339)
+ aw87339_audio_off();
+ #elif defined(CONFIG_EXT_PA_AW87319)
+ aw87319_audio_off();
+ #else
AudDrv_GPIO_EXTAMP_Select(false, 3);
+ #endif
udelay(500);
pr_debug("Ext_Speaker_Amp_Change OFF-\n");
}
}
所在文件:
./device/xthink/k63v2_64_bsp/ProjectConfig.mk
+ MTK_AUDIO_SPEAKER_PATH = smartpa_xxxx