常用音频接口:TDM,PDM,I2S,PCM

2023-11-10

折腾:

【整理】SoC CPU MEDIATEK MT8516详解

期间,看到T8516介绍中包含

麦克风语音输入控制和连接的音频产品中包含 I2Sx24 个频道)、TDM(最多 8 个频道)和 PDM 输入(2 个频道)等广泛的接口。

不太熟悉TDMPDM,所以去找找。

tdm 音频接口

硬件基础知识(14—I2SPDMTDM选什么音频接口 – zhangbijun1230的专栏 – CSDN博客

TDM格式介绍音频数据传输的常见IC间数字接口介绍音频技术电子发烧友网

音频接口设计详解!智能硬件设计,I2SPDMTDM选什么接口?

pcm i2s pdm tdm

数字音频接口22条军规

https://www.analog.com/media/en/technical-documentation/technical-articles/MS-2275.pdf

Difference between PDM and i2s Digital Microphones? – Q&A – Audio – EngineerZone

【话说硬件产品经理这些年】——3、接口部件选型 | 音频选型简书

I2S PCM温故知新_apple_新浪博客

【总结】

之前知道I2SPCM,但是没听过TDMPDM

而对于这些技术的细节,不太懂,也不需要太懂。

下面主要从典型使用场景来解释具体区别和用法:

先解释

【音频背景知识】

  • 音频类型
    • analog audio=模拟音频
      • 就是功放输出的,驱动音箱和喇叭的音频
      • 模拟麦克风采样回来的数据也是模拟音频
        • 通常会有单端或差分两种信号
    • digital audio=数字音频
      • 不能直接驱动喇叭
        • 必须要通过DAC转换成模拟音频,才能发出声音来
      • 音频数字化后的编码格式
        • PCM
        • PDM
  • 音频传输场景 -》不同类型的接口
    • 同一块电路板内部的:IC芯片和IC芯片之间(传输音频数据)
      • I2S
      • TDM
      • PDM
    • 电路板A和电路板B之间的:用电缆数据线连接(传输音频数据)
      • PCM
        • PCM接口常用于板级音频数字信号的传输
      • S/PDIF
      • Ethernet AVB
    • 电脑PCAudio子系统声卡的应用
      • Intel HDA (Intel High Definition Audio)

相关:

【整理】什么是Audio Amplifier IC音频功放芯片和Audio Pre-Amplified IC

【音频芯片设计历史演化】

典型的音频的输入和输出的处理过程:

https://www.crifan.com/files/pic/uploads/2019/04/cce8e6cb747730518f10735fa337b6de.png

现代产品设计中用到的音频芯片(audio IC),尺寸越来越小

传统的音频芯片都是模拟芯片的尺寸较大,使用器件较多,所以越来越不适用

-》对比:

  • 1:传统的音频电路:中有麦克风、前置放大器、模/数转换器ADC、数/模转换器DAC、输出放大器,以及扬声器,它们之间使用模拟信号连接
  • 2:全数字音频电路:数字麦克风、DSP、输出放大器,以及扬声器,它们之间使用模拟信号连接

-》所以越来越多的音频都采用数字芯片了

且:抗干扰能力更强,硬件设计更简单

-》数字音频,就涉及到 接口定义,传输格式等内容,统称为:

DAI=Digital Audio Interfaces=数字音频接口

-》所以现在音频数据的传输,更多的涉及到了,上面提到的:

同一块电路板内部的:IC芯片和IC芯片之间

所以才有了先后的不同的音频传输标准的出现:I2STDMPDM等等。

【常见音频(传输)接口/标准总结】

音频接口

中文+全称

主要(技术+应用)场景

备注说明

PCM

Pulse Code Modulation

=脉冲编码调制

AP处理器和通信MODEM/蓝牙之间也是通过PCM来传输语音数据(就是双向打电话的数据)

通过等时间隔(即采样率时钟周期)采样将模拟信号数字化的方法

https://www.crifan.com/files/pic/uploads/2019/04/501aabe80d2d0a07912a0bebcbc5dd9a.png

4-bit PCM的采样量化

接口上传输的音频数据通过PCM方式采样得到的

I2S

Inter-IC Sound

=Integrated Interchip Sound

=IIS

=IC间音频

最早的:CD播放器

I2S速度快,专门用于传音乐

https://www.crifan.com/files/pic/uploads/2019/04/41ef560e00480ceecccf79c82185a992.png

飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内部器件之间传输,例如编解码器CODECDSP、数字输入/输出接口、ADCDAC和数字滤波器等。

I2S是比较简单的数字接口协议,没有地址或设备选择机制

I2S总线上,只能同时存在一个主设备和发送设备。

主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接收设备的其它控制设备。

I2S系统中,提供时钟(SCKWS)的设备为主设备。

https://www.crifan.com/files/pic/uploads/2019/04/f5effc6ee9e6ed25049f5735cd81a8cc.png

I2S设备连接示意图

在高端应用中,CODEC经常作为I2S的主控设备以精确控制I2S的数据流。

多数音频ADCDACDSP,与采样速率转换器,以及一些微控制器都带有I2S接口。

I2S包括两个声道(Left/Right)的数据,在主设备发出声道选择/字选择(WS)控制下进行左右声道数据切换。

一般只支持1路音频数据

通过增加I2S接口的数目或其它I2S设备可以实现多声道(Multi-Channels)应用。

TDM

Time Division Multiplexing

=时分复用

I2S只能传2个声道的数据

->

PCM可以传多达16路数据,采用时分复用的方式,就是TDM

->像现在最流行的语音智能音箱的7麦克风矩阵,一般都是用TDM来传的数据,同时可以传输7路麦克风输入和3路以上的音频反馈信号

TDM不像I2S有统一的标准,不同的IC厂商在应用TDM时可能略有差异,这些差异表现在时钟的极性、声道配置的触发条件和对闲置声道的处理等。

特点:

I2S节省管脚数量

支持多路传输

最多支持16=16通道

https://www.crifan.com/files/pic/uploads/2019/04/6eaf631a6d6ca321b7505485961182c1.png

TDM系统框图

PDM

Pulse Density Modulation

=脉冲分时复用

手机和平板电脑等便携设备的音频

PDM在诸如手机和平板等对于空间限制严格的场合,即尺寸受限应用中优势明显,有着广泛的应用前景

-》在数字麦克风应用很广

手机cpu到蓝牙的通话实时音频和mp3

codec的音频接口

一种用数字信号表示模拟信号的调制方法

PCM使用等间隔采样方法,将每次采样的模拟分量幅度表示为N位的数字分量(N = 量化深度),因此PCM方式每次采样的结果都是N bit字长的数据。

PDM,只有2根线,传音乐,编码方式和I2S不同。

https://www.crifan.com/files/pic/uploads/2019/04/7558dc3f04e8d1c16a0a4e953435fb5d.png

PDM方式表示的正弦波

https://www.crifan.com/files/pic/uploads/2019/04/033ad66a3879fc2be4ee766d08c8e52e.png

PDM格式的音频信号可以在比如LCD屏这样Noise干扰强的电路附近走线(等于没说,这里指数字信号抗干扰能力相比于模拟信号更强,同样PCM也具有此优势)

基于PDM的架构不同于I2STDM之处在于,抽取滤波器(Decimation Filter)不在发送设备,而在接收设备内部。源端输出是原始的高采样率(oversample)调制数据,如Sigma-Delta调制器的输出,而不是像I2S中那样的抽取数据。基于PDM接口的应用降低了发送设备的复杂性,由于作为接收设备的CODEC内部集成抽取滤波器,因此系统整体复杂度大大降低。对于数字麦克风而言,通过使用面向CODEC或处理器制造的更精细硅工艺,而非传统麦克风使用的工艺,可以实现更高效率的抽取滤波器。

综合解释:

  • 传输单声道数据:PCM
    • 比如:麦克风
  • 传输双声道数据:I2S
  • 传输两个及以上声道的数据:TCM

PCM vs PDM

  • PCM
    • 使用等间隔采样方法:将每次采样的模拟分量幅度表示为N位的数字分量(N = 量化深度)
    • 每次采样的结果都是N bit字长的数据
    • 逻辑更加简单
    • 需要用到数据时钟,采样时钟和数据信号三根信号线
  • PDM
    • 使用远高于PCM采样率的时钟采样调制模拟分量
      • PDM采样的音频数据 也常被叫做:Oversampled 1-bit Audio
    • 只有1位输出:要么为0,要么为1
    • 逻辑相对复杂
    • 只需要两根信号线,即时钟和数据

另外:

  • AC’97
    • 不只是一种数据格式:用于音频编码的内部架构规格
      • 还具有控制功能
    • I2S优点:明显减少了整体管脚数
    • 一般来说,AC’97编解码器采用TQFP48封装
  • USB
    • 在很多外接的音频模块上,用的是USB音频
    • 像科大讯飞的多mic降噪模块,用的就是usb接口,方便调试
      • 不管用的什么接口,传输的都是PCM或者PDM编码的数字音频

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常用音频接口:TDM,PDM,I2S,PCM 的相关文章

  • Javascript 制作音频 blob

    我正在测试 html 音频标签 我想制作音频 blob url 就像 youtube 或 vimeo 那样 并将其添加到 src 开始播放音频 我一直在测试new Blob and URL createObjectURL 但我不知道如何使用
  • 声音在模拟器中工作,而不是在真实 iPhone 中工作

    有几短音效播放的样本在模拟器中很好 但在真正的 iPhone 中根本不行3GS 以下是 Apple SysSound 示例中的代码 CFBundleRef mb CFBundleGetMainBundle CFURLRef soundFil
  • 如何使用 Spring Boot 传输音频

    我想让用户能够播放声音 我的实现在 Firefox 上运行良好 在 Safari 上 不播放声音 我验证了音频控制可以在 Safari 中与其他网站一起使用 所以 我认为我必须更改控制器中的某些内容 控制器 RequestMapping v
  • 继续在 Matlab 中一遍又一遍地播放声音?

    我正在尝试创建一个 MATLAB 程序来每隔几分钟一遍又一遍地播放声音 现在我将其设置为每隔几秒播放一次 只是为了消除系统中的一些错误 但是 当我的程序尝试重播声音时 我收到此错误 Error using gt audioplayer au
  • Android Mediaplayer:下载媒体文件的 setDataSource 问题

    我有一个可以录制和播放音频文件的应用程序 一些音频文件是使用 httpclient 使用简单的标准 http 下载来下载的 很长一段时间以来 它就像一种魅力 现在我突然无法播放我下载的文件 该堆栈失败 我将文件存储在 SDCard 上 并且
  • AVAudioPlayer 重置当前播放的声音并从头开始播放

    我在使用 AVAudioPlayer 时遇到问题 我想重置当前正在播放的播放器并再次播放 我尝试以下但没有运气 声音播放一次 但第二次我选择按钮时它会停止声音 第三次再次启动声音 Stop the player and restart it
  • 在 C++ 中处理音频缓冲区时,如何执行从 float -> double -> float 的转换

    我目前正在开发一个应用程序 其中音频样本帧在以下回调中进行处理 void Eav07AudioProcessor processBlock AudioSampleBuffer buffer for int channel 0 channel
  • AudioQueueNewInput 回调延迟

    无论我提供的缓冲区大小如何 提供给 AudioQueueNewInput 的回调都会以大致相同的时间间隔发生 例如 如果您有 0 05 秒的缓冲区并以 44k 录制 则回调将在大约 0 09 秒时首次调用 然后在 0 001 秒 之后立即发
  • 需要在状态改变时关闭MediaRecorder播放的声音

    我已尝试在下面的链接中找到的更改 但没有效果 如何在状态改变时关闭 MediaRecorder 播放的声音 https stackoverflow com questions 6804205 how to shut off the soun
  • 捕获设备活动时未触发 AVAudioSessionInterruptionNotification

    我遇到了问题 AVAudioSessionInterruptNotification 在 iOS 7 0 4 上 我在 NSNotificationCenter 上注册 然后激活 AVAudioSession 一切正常 但如果激活了摄像头
  • 录制视频和音频并上传到服务器

    我想为网站添加视频录制功能 我一直在搜索并尝试所有可能的可用解决方案 但还没有任何工作正常 我已经尝试过以下解决方案 WebRTC 我知道使用 WebRTC 我们可以从网络摄像头和麦克风获取流 我发现了很多关于相同内容的文章 但没有一篇解释
  • pygame.error:此编解码器不支持 set_pos

    我的 python 音频播放器有问题 我使用此功能来暂停正在播放的音乐 def pause event global time pygame mixer music pause time pygame mixer music get pos
  • 如何通过触摸按钮在 swift 2 中播放 m4a 文件?

    当我触摸按钮时 如何播放音频文件 我在网上找不到任何东西 因为它都是 swift 1 我想要音频代码original功能 import UIKit import AVFoundation class ViewController UIVie
  • 如何通过一键或链接切换音频播放()暂停()?

    我有一个在单击锚标记时播放的音频文件 如果再次单击锚标记 我希望音频暂停 我只是对 javascript 了解不够 无法完成后半部分 我不想更改他们单击的锚标记的内容 我只想让音频文件在他们单击标记时启动和暂停 这是我到目前为止所拥有的 它
  • iOS 音频修剪

    我搜索了很多 找不到任何相关的东西 我正在处理 iOS 音频文件 这就是我想做的 录制音频并保存剪辑 已检查 我使用AVAudioRecorder 改变音高 已检查 是用狄拉克做的吗 修剪 我有两个标记 即开始和结束偏移 并使用此信息我想修
  • 如何用SKAction循环播放音乐?

    我想用 SKAction 循环背景音乐 但当我切换到另一个场景时 音乐在一行后停止 有没有办法开始循环并在不同的场景中继续播放 现在代码放置在 MyScene 的 init 方法中 这是正确的位置吗 也许 didFinishLaunchin
  • 在Python中创建32位浮点wav文件?

    我想在 Python 2 x 中创建 32 位浮动 WAV 文件 虽然 标准 WAV 文件通常使用 int 但许多专业音频应用程序将音频数据处理 并保存 为 float 标准波形模块无法执行此操作 http bugs python org
  • 我在 android 上使用 java 时遇到异常 (java.lang.NoClassDefFoundError),为什么?

    这是我运行的线路 AudioInputStream clip1 AudioSystem getAudioInputStream new File wavFile1 这是我得到的异常 来自 LogCat 错误 AndroidRuntime 3
  • 在 Raspberry Pi 4 上的多个输出设备上播放多个 mp3 文件

    我需要 4 8 个同时播放立体声音频音乐频道 连续播放 SD 卡上特定文件夹中的 mp3 音乐 Working 板载 3 5 音频插孔 USB声卡正常播放音乐 Problem 但一旦我尝试在树莓派上使用带有 USB 声卡的第三个音频输出 其
  • 保存录制的 AVAudioRecorder 声音文件:现在怎么办? (iOS、Xcode 4)

    在我的应用程序中 我希望用户能够录制一个声音文件并播放它 然后保存该声音文件以供以后使用 我用了本教程 http www techotopia com index php Recording Audio on an iPhone with

随机推荐

  • 设计模式(1) - UML类图

    1 前言 从这一节开始 我们将一起学习设计模式 我们的学习目标是什么呢 了解常用设计模式以及它们的使用场景 分析实际工程中设计模式的使用 揣摩实际意图 了解作者设计思路 尝试运用设计模式迭代 重构自己的代码 提升软件架构设计思路 最近在阅读
  • react绝对定位导致onClick点击事件不生效,设置了z-index也无效

    这是我最近在开发中遇到的问题 网上也查看了资料 有说 因为点击的 不是当前元素 给元素 设onClike事件的元素 设置z index 就可以解决 有基础的都知道 数值越大层级越高 可是 我设置了没有效果 看了很多示例 也没有我这样的情况
  • integer和long源代码解析

    一 简介 1 Integer和Long的联系与区别 2 源代码中的享元模式 3 常用的方法 二 Integer和Long的联系与区别 相同点 Ingeter和Long都是包装类 初值为null 通过equals比较变量是否相同 在一定的范围
  • Spring Data Elasticsearch篇(1):常用注解

    1 注解 Document 1 1 Document源码 Persistent Inherited Retention RetentionPolicy RUNTIME Target ElementType TYPE public inter
  • 微信小程序简单入门经历分享 [完全新人向+网站分享+心得分享]

    本文适用于 完全不懂小程序的在校学生扫盲 这篇文章是在大二时差不多在跟着老师做了个小程序以后 对小程序有所认识以后 想起来一开始踩过的坑和迷茫 希望大家有一些避开坑的方式 本文由CSDN博主啊七王子原创手打 转载请注明出处 侵权必究 啊七王
  • java中类什么时候被加载

    创建对象实例时 new public class codeblock public static void main String args 创建对象实例时 new 类被加载 AA aa new AA 运行结果 AA的静态代码块被执行 cl
  • mac中查看.ssh文件

    因为一些原因需要重新生成github的ssh Key 但是找不到之前的安装路径的了 好在我是选择默认路径的 因此要找到ssh文件夹下的id rsa pub文件 只需要 打开终端输入 plain view plain copy open ss
  • 【分布式锁】三种分布式锁的实现【原创】

    分布式锁 0x00 概述 0x02 实现方式 0x03 分布式锁 基于数据库 1 实现思想 A 悲观锁 排他锁 B 乐观锁 2 优缺点 0x04 分布式锁 基于Zookeeper 1 实现思想 2 优缺点 0x05 分布式锁 基于Redis
  • Ant之build.xml详解

    Ant之build xml详解 Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它 但只要使用通过Linux系统得读者 应该知道make这个命令 当编译Linux内核及一些软件的源程序时 经常要用这个命令 Make命令其实就是一个
  • 关于&&运算符的机制以及=和>的运算优先级

    今天碰到问题的代码是这样的 最开始以为会输出3 以为 和 gt 的优先级一样 后来查询发现比较运算符的优先级大于赋值运算符 于是觉得输出应该是0 结果输出2 经查询发现是 在判断前一个条件为0后就不会再去判断第二个条件了 以前没见过这个说法
  • 第九届GIS技能应用大赛试题技术文档 -上午

    1 项目概述 1 1 项目要求 如图1 1 1所示为雷尼尔山国家公园 根据题目要求 现有一份雷尼尔山国家公园地形图的一部分扫描图 需要利用该扫描图制作三维模型用来分析和展示 图1 1 1 雷尼尔山国家公园 1 具体任务要求如下 任务一 使扫
  • 递归锁(Recursive Lock)也称为可重入互斥锁(reentrant mutex)

    递归锁 Recursive Lock 也称为可重入互斥锁 reentrant mutex 是互斥锁的一种 同一线程对其多次加锁不会产生死锁 递归锁会使用引用计数机制 以便可以从同一线程多次加锁 解锁 当加锁 解锁次数相等时 锁才可以被其他线
  • response对象设置返回状态_测试开发专题:spring-boot自定义异常返回

    上文测试开发专题 spring boot统一异常捕获我们讨论了java异常以及如何使用Spring Boot捕获异常 但是没有去说捕获异常后该如何进一步处理 这篇文章我们将对这个遗留的问题进行讨论 统一错误响应定义 我们希望在程序发生异常的
  • Linux操作系统之进程间通信—信号量

    文章目录 一 信号量的定义 二 信号量的使用 三 ipcs的使用 一 信号量的定义 信号量是一个特殊的变量 一般取正数值 它的值代表允许访问的资源数目 获取资源时 需要对信号的值进行原子减一 该操作被称为p操作 当信号量值为0时 代表没有资
  • Java复习-20-接口(3)- 代理设计模式

    代理设计模式 Proxy 功能 可以帮助用户将所有的开发注意力只集中在核心业务功能的处理上 代理模式 Proxy Pattern 是一种结构性模式 代理模式为一个对象提供了一个替身 以控制对这个对象的访问 即通过代理对象访问目标目标对象 可
  • Mysql 查询当前时间24小时内的数据

    记录一下mysql查询24小时内的sql语句 where time gt NOW interval 24 hour
  • C++中的内存对齐介绍

    网上有很多介绍字节对齐或数据对齐或内存对齐的文章 虽然名字不一样 但是介绍的内容大致都是相同的 这里以内存对齐相称 注 以下内容主要来自网络 内存对齐 通常也称为数据对齐 是计算机对数据类型合法地址做出了一些限制 要求某种类型对象的地址必须
  • ESP32+Arduino环境搭建教程 合宙ESP32C3

    1 在arduino官网下载安装包并安装 下载地址 https www arduino cc en software 2 安装Arduino对ESP32支持 1 添加ESP32开发板管理器地址 点击文件 gt 首选项 gt 其他开发板管理器
  • Introspector内存溢出的原理解析

    JavaBeans Introspector是一个类 位置在Java bean Introspector 这个类的用途是发现java类是否符合javaBean规范 也就是这个类是不是javabean 具体用法可以参照jdk文档 上面的意思就
  • 常用音频接口:TDM,PDM,I2S,PCM

    折腾 整理 SoC CPU MEDIATEK MT8516详解 期间 看到T8516介绍中包含 麦克风语音输入控制和连接的音频产品中包含 I2Sx2 4 个频道 TDM 最多 8 个频道 和 PDM 输入 2 个频道 等广泛的接口 不太熟悉