文章目录

  • smartPA概述
  • smartPA AW87319概述
  • smartPA AW87319功能特性
  • 在kernel中添加对smartPA的支持
    • 1. 在配置文件中添加对smartPA的支持
    • 2. 在Makefile中添加对smartPA的支持
    • 3. 添加aw87319代码包到对应目录
    • 4. 修改aw87319代码包根目录的Kconfig
    • 5. 修改aw87319代码包根目录的Makefile
    • 6. 在codec驱动中添加对smartPA的函数调用
  • 在ProjectConfig.mk中添加对smartPA的支持

smartPA概述

smart PA翻译成中文,就是“智能功率放大器”,其本质上也是一个放大器,而它和普通外放模块相比,最大的区别是加了一个反馈的功能。

这个反馈的功能起到什么样的作用呢?
假设一特定中频下smart PA和普通PA模块信噪比、最大输出功率等可以做到完全相同,在其他频率下(特别是在低频)普通放大器为了保证信噪比(直观反映为音质)及最大功率(防止被烧毁),该放大器在设计之初就必须调低放大的倍数。换而言之,就是普通放大器为了保证全频段内的性能,不得不在大部分频段“保留实力”,俗称“上锁”。而smart PA的关键就是加入了输出信号的反馈,从而做到通过反馈做到精准控制。

最明显的就是音量更大,效果更好了。

它能够专门提高智能机音乐输出动态范围,动态跟踪喇叭的状态并感知其所处环境的变化,在适应后给出改变,为手机、便携式音乐播放器和平板计算机带来更高的音量、更浑厚的低音与更出色的音质,而且还可以在不超过扬声器本身承受能力的前提下提高音乐的平均音量。

smard PA目前提供两大外放上最为强悍的功能: 第一,保护功能,保护器件不受超额工作的损害;第二,可以理解为效果类功能,在保护器件的同时,能够一定程度上提升音质。 这里以AW87319智能功放为例。

smartPA 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技术,带来高品质的音乐享受。

smartPA AW87319功能特性

  • AW87319支持SpeakerReceiver的二合一应用。在Receiver应用时,Class D功率级电源由VBAT直通提供。

  • AW87319通过I2C接口控制内部寄存器,寄存器参数包括:Boost输出电压,Boost最大输入峰值电流,Class D放大倍数,Triple-level Triple-Rate AGC参数等。

  • AW87319内置限流保护、过热保护和短路保护功能,有效地保护芯片。AW87319采用纤小的2.76mm*2.36mm CSP-19封装。

在kernel中添加对smartPA的支持

因为audio驱动中本身已经对普通的PA进行了配置,所以只需要将普通的PA的配置进行替换以及添加上smartPa的配置即可。

ps: “+”号代表原来没有这行命令或者代码,是新添加的

1. 在配置文件中添加对smartPA的支持

所在文件:
./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

2. 在Makefile中添加对smartPA的支持

所在文件:
./kernel-4.4/drivers/misc/mediatek/Makefile

+ obj-$(CONFIG_EXT_PA_AW87319)  += aw87319/

3. 添加aw87319代码包到对应目录

aw87319代码包添加到 ./kernel-4.4/drivers/misc/mediatek/ 目录下。

4. 修改aw87319代码包根目录的Kconfig

所在文件:
./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.

5. 修改aw87319代码包根目录的Makefile

所在文件:
./kernel-4.4/drivers/misc/mediatek/aw87319/Makefile

+ obj-$(CONFIG_EXT_PA_AW87319) += aw87319_audio.o

6. 在codec驱动中添加对smartPA的函数调用

所在文件:
./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();
+  #elseAudDrv_GPIO_EXTAMP_Select(false, 3);/*udelay(1000); */usleep_range(1 * 1000, 20 * 1000);AudDrv_GPIO_EXTAMP_Select(true, 3);msleep(SPK_WARM_UP_TIME);
+  #endifpr_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();
+  #elseAudDrv_GPIO_EXTAMP_Select(false, 3);
+  #endifudelay(500);pr_debug("Ext_Speaker_Amp_Change OFF-\n");}
}

在ProjectConfig.mk中添加对smartPA的支持

所在文件:
./device/xthink/k63v2_64_bsp/ProjectConfig.mk

+ MTK_AUDIO_SPEAKER_PATH = smartpa_xxxx

在MTK平台配置一个支持smartPA的audio驱动相关推荐

  1. MTK平台 配置GNSS的不同模式

    MTK平台 配置GNSS的不同模式 Android 5.1 相关源码: hardware/mediatek/gps/mnl/mnl_aosp/mnld/src/mnld.c hardware/medi ...

  2. #8ms平台,是一个支持ESP32/Sigamastar201、202/RK等硬件的开发平台,现平台Slogan有奖征集# 我们的广告语,将由你们来定!

    Q:.8ms(www.8ms.xyz)平台是怎么样一个平台? 一.8ms平台定位是帮助开发者实现快速开发,其中包括 GUI拖拽式开发(HMI人机界面).功能积木集成等,可以让开发者免搭建开发环境直接在 ...

  3. Ubuntu真机下MTK平台FAE自助脚本调试工具,无需驱动工程师协助(shell源码开源)

    利用工作的闲余时间,写了2个月的shell脚本仅适用于MTK代码环境.主要是为了改变繁琐的工作量,并且外来FAE前来调试模块,可以不用再去陪着调试.脚本实现主要功能有: (1)git拉取代码,编译好代 ...

  4. MTK 驱动(67)---深入MTK平台bootloader启动之【 lk -amp;gt; kernel】分析笔记

    Pre-loader 运行在ISRAM,待完成 DRAM 的初始化后,再将lk载入DRAM中,最后通过特殊sys call手段实现跳转到lk的执行入口,正式进入lk初始化阶段. 一.lk执行入口: 位 ...

  5. 最新MTK平台芯片简介

    MTK平台是一个广泛意义上的概念,是基础Nucleus OS的嵌入式操作系统.同样的MTK平台的手机,却会有不同的功能,速度也会不一样,所支持的软件也会不一样,这一切都是因为芯片组的原因.可以用WM系 ...

  6. 深入MTK平台bootloader启动之【 lk -> kernel】分析笔记

    接上一篇分析: <深入MTK平台bootloader启动之[ Pre-loader -> Lk]分析笔记> Pre-loader 运行在ISRAM,待完成 DRAM 的初始化后,再将 ...

  7. Android11.0(R) MTK平台添加新分区

    mtk 平台增加一个新分区test,修改文件列表如下 modified: device/mediatek/mt6765/init.mt6765.rcmodified: device/mediatek/ ...

  8. MTK 平台上查询当前使用的摄像头模组及所支持预览分辨率

    1,MTK 平台如何查询当前使用的是哪颗摄像头及相关的模组信息? 在该目录下可以查到当前平台及相关项目的配置文件 ProjectConfig.mk \ALPS.JB.MP.V1_W_20120919\ ...

  9. 零基础学习MTK平台camera引脚配置

    目录 一.MTK平台的GPIO配置 1. MTK平台GPIO驱动程序提供了两个接口: 2.配置dws文件 3.配置dts文件 二.MTK平台camera模块的GPIO配置 一.MTK平台的GPIO配置 ...

最新文章

  1. 为什么中国程序员工作不轻松,加班多?
  2. mysqldump 忽略视图_mysqldump的使用--解决不能导出视图的问题
  3. 八. 输入输出(IO)操作6.文件与目录管理
  4. 获取radio和select的值,获取select的值
  5. Android实现点击通知栏后,先启动应用再打开目标Activity
  6. 【Python金融量化 1- 100 】了解Python及常用财经数据接口包
  7. Linux中Shell的转义用法笔记
  8. 用例子看Swift4的GCD
  9. 基于Jquery WeUI的微信开发H5页面控件的经验总结(2)
  10. python星空代码_Python中的唯美星空代码详解!
  11. Linux修改固定ip 地址,亲测有效
  12. Linux添加硬盘并挂载(超细致)
  13. 通过京东商品ID获取京东商品评论数据,京东商品评论API接口,接口说明接入方案
  14. POJ 2676 Sudoku (数独求解器 DFS)
  15. 菲尔博士的三十六交际方式
  16. 内网环境下CentOs离线安装程序
  17. VMware虚拟机(ubuntu)使用过程中的一些问题及解决方法
  18. 设计文档的内容(概要设计,需求分析,详细设计)
  19. JSP汽车自行车出租系统
  20. oracle客户端下载

热门文章

  1. 用python实现汉字叠加
  2. cocos2dx-js CCBoot.js异步池cc.AsyncPool浅析
  3. XXX接口自动化测试方案
  4. Postgresql Automatic Vacuuming
  5. Google Guava 只是弟弟,什么才是真正的缓存之王?(荣耀典藏版)
  6. 【云原生】一文讲透Kubevela addon如何添加腾讯Crane
  7. Python获取当前时间日期
  8. SQL—授权grant与回收revoke
  9. 三元函数php,PHP三元运算符
  10. 对面向过程与面向对象的一点感悟