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驱动开发之音频链路相关推荐

  1. Audio驱动开发之音频链路学习笔记

    原址 [元器件说明] 本文中使用的 Codec 芯片为 ALC5677. [音频链路模型] 一个常见的音频链路如 图1 所示,包含 音频输入.ADC.DSP.DAC.音频输出 5 大部分. 图1 音频 ...

  2. mtk+android+之mt6577驱动笔记,MTK6577+Android之音频(audio)移植

    MTK6577+Android之音频(audio)移植 备注:audio PA音频功放(power amplifier) 先借用<Y1MT6577 design notice V0.1>关 ...

  3. RK系列开发板音频驱动适配指南(二)

    背景: 上一篇文章RK系列开发板音频驱动适配指南-DAI模块适配中已经阐述音频驱动适配的DAI模块适配步骤以及核心代码的展示,本次主要介绍音频驱动适配中的DMA模块适配. RK系列开发板 DMA模块适 ...

  4. RK系列开发板音频驱动适配指南(一)

    背景: 多媒体系统目前在Linux操作系统,windows操作系统已经非常成熟,并且应用场景广泛,但是,基于OpenAtom OpenHarmony(以下简称"OpenHarmony&quo ...

  5. STM32MP157驱动开发——Linux 音频驱动

    STM32MP157驱动开发--Linux 音频驱动 一.简介 1.CS42L51 简介 2.I2S总线 3.STM32MP1 SAI 总线接口 二.驱动开发 1.音频驱动 1)修改设备树 i2c 接 ...

  6. 在MTK平台配置一个支持smartPA的audio驱动

    文章目录 smartPA概述 smartPA AW87319概述 smartPA AW87319功能特性 在kernel中添加对smartPA的支持 1. 在配置文件中添加对smartPA的支持 2. ...

  7. Linux 音频驱动(四) ASoC音频驱动之Machine驱动

    目录 1. 基本介绍 2. 源码分析 2.1. Machine数据结构 struct snd_soc_dai_link 3. 声卡 3.1. 数据结构struct snd_soc_card 3.2. ...

  8. 解决更新音频驱动后显示驱动异常——Smart Sound Technology

      手贱的博主在更新驱动后出现了电脑无声的情况,在电脑右下角的喇叭上出现了一个小红叉,用了某60的驱动大师,最后提示异常,安装不了该驱动,无奈,只能到处去剽窃他人的经验,最后成功解决!!!   在此记 ...

  9. Waveform Audio 驱动(Wavedev2)之:WAV 驱动解析

    Waveform Audio 驱动(Wavedev2)之:WAV 驱动解析 上篇文章中,我们模拟了WAV API.现在进入我们正在要解析的Wave 驱动的架构.我们了解一个驱动的时候,先不去看具体跟硬 ...

最新文章

  1. 11.13 ethtool:查询网卡参数
  2. mysql 查看集群状态_MySQL数据库集群正确配置步骤
  3. python 3.8 新特性_Python 3.8六大新功能
  4. Redmi K50标准版工信部入网:搭载骁龙870 没有12GB内存
  5. 面试官:你说对 MySQL 事务很熟?那我问你 10 个问题
  6. jsx 调用php,JavaScript_JavaScript的React框架中的JSX语法学习入门教程,什么是JSX? 在用React写组件的 - phpStudy...
  7. python黑白图片上色_百度AI攻略:黑白图像上色
  8. 随机游走问题的神奇应用(二)
  9. 6-1 多态性与虚函数
  10. Windows socket程序演示
  11. 华为eNSP-动态路由实验
  12. 一图读懂敏捷开发参与者及基本流程
  13. 【游戏设计模式】之一 序言:架构,性能与游戏
  14. 随机密码生成。编写程序,在26个字母大小写和10个数字组成的列表中随机生成10个8位密码。
  15. js获取最近12个月
  16. <_main__.类名 object at 0x0000000002A7CEB8>
  17. 艾永亮:为什么国内品牌很难在市场中生存下去
  18. 计算机毕业设计ssm千益校园帮跑腿信息平台5e9ev系统+程序+源码+lw+远程部署
  19. OpenCV-C++实现单应性矩阵的求解
  20. Vectorworks 2022 mac(3D建模专用工具)v2022.SP3完美支持m1

热门文章

  1. SVD 与 PCA 的直观解释(3): SVD的直观解释及推导
  2. mysql 设置utf8mb4_mysql配置utf8_mb4
  3. 【LeetCode】【HOT】739. 每日温度(栈)
  4. Java并发编程:如何创建线程?
  5. java并发:初探用户线程和守护线程
  6. leetcode 88 Merge Sorted Array
  7. Cocos2d-x游戏开发之lua编辑器 Sublime 搭建,集成cocos2dLuaApi和自有类
  8. 软工实践(二)——构建之法读后感
  9. String常见问题
  10. Unix Shell 通配符、转义字符、元字符、特殊字符