原址

【元器件说明】

本文中使用的 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,之后连接到扬声器喇叭。

原址

Audio驱动开发之音频链路学习笔记相关推荐

  1. MTK 驱动(60)---Audio驱动开发之音频链路

    Audio驱动开发之音频链路 [元器件说明] 本文中使用的 Codec 芯片为 ALC5677. [音频链路模型] 一个常见的音频链路如 图1 所示,包含 音频输入.ADC.DSP.DAC.音频输出 ...

  2. 《Linux设备驱动开发详解》学习笔记一

    Linux设备驱动开发详解学习笔记<一> 书名:<Linux设备驱动开发详解>第二版 主机环境:Linux version 2.6.25-14.fc9.i686@Fedora ...

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

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

  4. Android深度探索--HAL与驱动开发----第五章读书笔记

    第五章主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器它是基于ARMI1内核,广泛应用于移动电话和通用处理等领域. 开发板从技术上说与我们 ...

  5. VHDL编写多功能数字钟,spartan3 FPGA开发板硬件实现-学习笔记

    VHDL编写多功能数字钟,spartan3 FPGA开发板硬件实现-学习笔记 多功能数字钟硬件测试视频: https://www.bilibili.com/video/av62501230 1.数字钟 ...

  6. Java开发面试高频考点学习笔记(每日更新)

    Java开发面试高频考点学习笔记(每日更新) 1.深拷贝和浅拷贝 2.接口和抽象类的区别 3.java的内存是怎么分配的 4.java中的泛型是什么?类型擦除是什么? 5.Java中的反射是什么 6. ...

  7. Unity开发基础——使用字符串学习笔记

    蓝鸥Unity开发基础使用字符串学习笔记 本节内容:使用字符串:字符串拼接.转义字符 一.字符串拼接:字符串可以使用+或+=进行字符串拼接!! using System; namespace Less ...

  8. 《崔庆才Python3网络爬虫开发实战教程》学习笔记(5):将爬虫爬取到的数据存储到TXT,Word,Excel,Json等文件中

    本篇博文是自己在学习崔庆才的<Python3网络爬虫开发实战教程>的学习笔记系列,此套教程共5章,加起来共有34节课,内容非常详细丰富!如果你也要这套视频教程的话,关注我公众号[小众技术] ...

  9. SPRING注解驱动开发-雷神课程超详细笔记

    SPRING注解驱动开发-雷神课程超详细笔记 时间:2021-03-21 2022-04-06更新:最近翻起一年多前写的笔记复习,还是收获颇多,很多当时无法理解的知识现在慢慢能理解了,可能是工作一年的 ...

最新文章

  1. 民用报警服务技术浅谈
  2. python有趣代码-你都知道哪些有趣的Python代码?
  3. 读书笔记 - 企业精简架构
  4. 【DIY】可能是最实用最便宜的 arduino 温湿度计方案,200615整合家用声控温湿度计完整方案...
  5. 发布几个PDF小工具
  6. JS基础语法(04)-逗号运算符
  7. Install Shield制作安装包技巧(SQL篇)
  8. 华为车规芯片麒麟990A架构曝光
  9. python GIL 全局锁,多核cpu下的多线程性能究竟如何?
  10. Python之网络编程(一)
  11. OSChina 周三乱弹 —— 风扇写着先生请自爱
  12. 计算机作文600字关于科学事业,对科学事业的执着追求作文600字
  13. mac访达中显示隐藏的文件夹和文件
  14. B2B企业越早做网络营销会有哪些优势 由上海添力张进老师讲解
  15. VS Code编写HTML-CSS-JS等——代码格式化
  16. 电子信息工程求职目标_实用的信息工程专业求职信四篇
  17. 基于LiFi可见光通信技术的研究及应用转化调查
  18. JavaScript数组函数
  19. Matlab矩阵论矩阵分析计算实现(四)求史密斯标准型和约当标准型
  20. 流程图法编写测试用例

热门文章

  1. 表达式,语句,变量与宏的一些概念
  2. 【Windows编程】系列第六篇:创建Toolbar与Statusbar
  3. Log4j配置和简单使用
  4. 将不确定变为确定~Linq to SQL不能随机排序吗?
  5. Spine 游戏开发的 2D
  6. GPT-J 自然语言处理 AI 模型
  7. FileZilla是一种快速 FTP 上传
  8. matlab神经网络不常见问题
  9. ViT (Vision Transformer) ---- SimpleRNN + Attention
  10. 考软件测试初学者眼影,Summer 大讲堂第一期:如何制作出版级的高分辨率图表?...