MTK 驱动(60)---Audio驱动开发之音频链路
Audio驱动开发之音频链路
【元器件说明】
本文中使用的 Codec 芯片为 ALC5677。
【音频链路模型】
一个常见的音频链路如 图1 所示,包含 音频输入、ADC、DSP、DAC、音频输出 5 大部分。
图1 音频链路模型
【音频输入部分】
在 图1 中,DSP 的音频数据来源,也即音频输入部分只有麦克风。而实际上,这部分音频数据也可以从文件中读取,比如我们在电脑或手机上播放一个 mp3 文件。在我们项目中,DSP 的音频来源分为 3 大部分。如图2 所示:
图2 实际项目的 DSP 音频输入
第 1 部分音频输入是 IF1_DAC_0/1 和 IF2_DAC_0/1,这是从 I2S 接口传递过来的数据,是 CPU 打开并读取的音频文件数据;第 2 部分音频输入是 Stereo1_ADC_Mixer,这是麦克风采集的声音信号经过 ADC 之后得到的;第 3 部分音频输入是 DAC1_FS,目前只知道她是音频输出前对各路信号混音后的产物(见图3),但还不清楚其存在的意义。
MX-A3[14:12] 的作用是决定哪一部分音频可以进入 DSP 进行处理,每个时刻只允许一路数据进入到 DSP。在这里,音频信号重新被拆分成左、右声道数据,用 InBound0、InBound1 表示。
【音频输出部分】
音频输出到扬声器或耳机前,需要对待输出的音频信号进行混音。在项目中,这些音频信号也分为 3 部分。如 图3 所示(如果图比较小可以按下 ctrl 键同时向前滚动鼠标滚轴以放大):
图3 实际项目的音频输出
第1 部分待混音数据是 Stereo1_ADC_Mixer_L/R,这是麦克风采集到声音数据;第 2 部分待混音数据是 OutBound0/1,这是经过 DSP 处理后的音频数据;第 3 部分待混音数据是 IF1_DAC_0/1 和 IF2_DAC_0/1,这是 CPU 从文件读取后,经 I2S 接口传递过来的信号。混音的输出结果是 Stereo1_DAC_MIXL 和 Stereo1_DAC_MIXR,即左右 2 个声道的最终音频流形式。这 2 路最终的数字音频信号输出被送入 DAC 电路转换为模拟音频信号,之后再送入扬声器或耳机进行播放。如图4 所示:
图4 输出部分混音后的音频最终被送入 DAC 电路
在 图3 中我们还可以看到合成了上文提到的 DAC1_FS 音频流。
【实际电路连接】
知道了音频数据的流向之后,我们再来看看电路板上音频相关的实际电路连接。我将所有音频相关的引脚整理成了一个关系图。如 图5 所示(如果图比较小可以按下 ctrl 键同时向前滚动鼠标滚轴以放大):
图5 电路连接结构图
通过这幅结构图我们可以很清晰地看到:
麦克风音频输入通过 MIC2P 接入到 Codec 芯片;音频文件数据输入通过 I2S_2_xxx 接入到 Codec 芯片。
耳机音频输出通过 LOUT1P/N 和 LOUT2P/N 从 Codec 芯片引出到耳机功放芯片 MAX97220,之后连接到耳机喇叭。
扬声器音频输出通过 LOUT1P/N 和 LOUT2P/N 从 Codec 芯片引出到扬声器功放芯片 AW8736FCR,之后连接到扬声器喇叭。
MTK 驱动(60)---Audio驱动开发之音频链路相关推荐
- Audio驱动开发之音频链路学习笔记
原址 [元器件说明] 本文中使用的 Codec 芯片为 ALC5677. [音频链路模型] 一个常见的音频链路如 图1 所示,包含 音频输入.ADC.DSP.DAC.音频输出 5 大部分. 图1 音频 ...
- mtk+android+之mt6577驱动笔记,MTK6577+Android之音频(audio)移植
MTK6577+Android之音频(audio)移植 备注:audio PA音频功放(power amplifier) 先借用<Y1MT6577 design notice V0.1>关 ...
- RK系列开发板音频驱动适配指南(二)
背景: 上一篇文章RK系列开发板音频驱动适配指南-DAI模块适配中已经阐述音频驱动适配的DAI模块适配步骤以及核心代码的展示,本次主要介绍音频驱动适配中的DMA模块适配. RK系列开发板 DMA模块适 ...
- RK系列开发板音频驱动适配指南(一)
背景: 多媒体系统目前在Linux操作系统,windows操作系统已经非常成熟,并且应用场景广泛,但是,基于OpenAtom OpenHarmony(以下简称"OpenHarmony&quo ...
- STM32MP157驱动开发——Linux 音频驱动
STM32MP157驱动开发--Linux 音频驱动 一.简介 1.CS42L51 简介 2.I2S总线 3.STM32MP1 SAI 总线接口 二.驱动开发 1.音频驱动 1)修改设备树 i2c 接 ...
- 在MTK平台配置一个支持smartPA的audio驱动
文章目录 smartPA概述 smartPA AW87319概述 smartPA AW87319功能特性 在kernel中添加对smartPA的支持 1. 在配置文件中添加对smartPA的支持 2. ...
- Linux 音频驱动(四) ASoC音频驱动之Machine驱动
目录 1. 基本介绍 2. 源码分析 2.1. Machine数据结构 struct snd_soc_dai_link 3. 声卡 3.1. 数据结构struct snd_soc_card 3.2. ...
- 解决更新音频驱动后显示驱动异常——Smart Sound Technology
手贱的博主在更新驱动后出现了电脑无声的情况,在电脑右下角的喇叭上出现了一个小红叉,用了某60的驱动大师,最后提示异常,安装不了该驱动,无奈,只能到处去剽窃他人的经验,最后成功解决!!! 在此记 ...
- Waveform Audio 驱动(Wavedev2)之:WAV 驱动解析
Waveform Audio 驱动(Wavedev2)之:WAV 驱动解析 上篇文章中,我们模拟了WAV API.现在进入我们正在要解析的Wave 驱动的架构.我们了解一个驱动的时候,先不去看具体跟硬 ...
最新文章
- 11.13 ethtool:查询网卡参数
- mysql 查看集群状态_MySQL数据库集群正确配置步骤
- python 3.8 新特性_Python 3.8六大新功能
- Redmi K50标准版工信部入网:搭载骁龙870 没有12GB内存
- 面试官:你说对 MySQL 事务很熟?那我问你 10 个问题
- jsx 调用php,JavaScript_JavaScript的React框架中的JSX语法学习入门教程,什么是JSX?
在用React写组件的 - phpStudy...
- python黑白图片上色_百度AI攻略:黑白图像上色
- 随机游走问题的神奇应用(二)
- 6-1 多态性与虚函数
- Windows socket程序演示
- 华为eNSP-动态路由实验
- 一图读懂敏捷开发参与者及基本流程
- 【游戏设计模式】之一 序言:架构,性能与游戏
- 随机密码生成。编写程序,在26个字母大小写和10个数字组成的列表中随机生成10个8位密码。
- js获取最近12个月
- <_main__.类名 object at 0x0000000002A7CEB8>
- 艾永亮:为什么国内品牌很难在市场中生存下去
- 计算机毕业设计ssm千益校园帮跑腿信息平台5e9ev系统+程序+源码+lw+远程部署
- OpenCV-C++实现单应性矩阵的求解
- Vectorworks 2022 mac(3D建模专用工具)v2022.SP3完美支持m1
热门文章
- SVD 与 PCA 的直观解释(3): SVD的直观解释及推导
- mysql 设置utf8mb4_mysql配置utf8_mb4
- 【LeetCode】【HOT】739. 每日温度(栈)
- Java并发编程:如何创建线程?
- java并发:初探用户线程和守护线程
- leetcode 88 Merge Sorted Array
- Cocos2d-x游戏开发之lua编辑器 Sublime 搭建,集成cocos2dLuaApi和自有类
- 软工实践(二)——构建之法读后感
- String常见问题
- Unix Shell 通配符、转义字符、元字符、特殊字符