Android Audio基础(54)——数字音频接口 I2S、PCM(TDM) 、PDM

1. 概述

本文介绍的数字音频接口全部是硬件接口,是实际的物理连线/通信方式,即同一个PCB板上IC芯片和IC芯片之间的通讯协议。

PCM、PDM也可以用于表示音频编码格式,。编码格式是指模拟信号数字化的方式。

I2S和PCM(TDM)接口传输的数据是PCM格式的音频数据。这两种协议是最为常见的音频传输协议。

PDM接口传输的数据是PDM格式的音频数据。

我们在工作中要根据具体的上下文区分PCM、PDM的含义。

下图体现了数字音频接口硬件接线的一般场景。

2. 数字音频接口

2.1. I2S接口

I2S协议定义了三根信号线:时钟信号SCK、串行数据信号SD、左右声道选择信号WS。

SCK 时钟信号,Serial Clock,也可能称BCLK/Bit Clock或SCL/Serial Clock。

WS 左右声道选择信号,Word Select,也称帧时钟,也可能称LRCLK/Left Right Clock。

SD 串行数据信号,Serial Data,也可能称SDATA、SDIN、SDOUT、DACDAT、ADCDAT等

特点:

效率高;先传高位再传低位。

工作模式:

根据SDATA相对于BCLK和LRCLK位置的不同,I2S分为三种不同的工作模式,分别为标准I2S模式、左对齐模式和右对齐模式:

I2S Phillips Standard I2S格式

Left Justified Standard 左对齐格式

Right Justified Standard 右对齐格式

左对齐:数据的MSB在LRCLK边沿起第一个BCLK上升沿,用的比较少。

右对齐:数据的LSB靠左LRCLK的上升沿,Sony使用这种格式。

在I2S总线上,只能同时存在一个主设备和发送设备。主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接收设备的其它控制设备。在I2S系统中,提供时钟(BCLK和LRCLK)的设备为主设备。主设备(时钟控制)和发射/接收功能是解耦的。

2.2. PCM/TDM接口

PCM接口包括四根信号:

PCM_CLK 数据时钟信号

PCM_SYNC 帧同步时钟信号

PCM_IN 接收数据信号

PCM_OUT 发送数据信号

和I2S接口差不多,PCM接口是4根信号线,通常用于AP处理器和通信MODEM之间传输语音数据(就是双向传输的数据)。

AP处理器和蓝牙之间也是通过PCM来传输语音数据,打电话的蓝牙数据走的是PCM,放音乐的蓝牙数据走的是串口(不是PCM)。

特点:

效率高,多达16路数据;先传高位再传低位。

工作模式:

根据 SD相对帧同步时钟FSYNC的位置,TDM分两种基本模式:

Mode A:数据在FSYNC有效后,BCLK的第2个上升沿有效。

Mode B:数据在FSYNC有效后,BCLK的第1个上升沿有效。

时分复用TDM技术:

I2S只能传2个声道的数据,PCM可以传多达16路数据,采用时分复用的方式,就是TDM(Time Division Multiplexing)。

由此可见,TDM本质上是基于PCM接口的技术。

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

2.3. PDM接口

PDM接口只有两根信号线:

PDM_CLK 时钟信号。

PDM_DATA 数据信号。

特点:

信号线数量少,只需两根;多用于传输麦克风录音;PDM接口发送端IC设计简单。

传输内容:

PDM编码后的音频数据。(不同于I2S接口和PCM接口哦)

在数字麦克风领域,应用最广的就是PDM接口,其次为I2S接口。

PDM在诸如手机和平板等对空间限制严格的场合有着广泛的应用。

3. 附录

编码格式是指模拟信号数字化的方法。也包括音频数据的压缩编码,比如AC3,MP3,DTS等。

本文讨论的硬件接口就是用来传输数字化的音频信号。

3.1. PCM编码

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

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

3.2. PDM编码

PDM(Pulse Density Modulation)是一种用数字信号表示模拟信号的调制方法。同为将模拟量转换为数字量的方法。

PDM使用远高于PCM采样率的时钟采样调制模拟分量,只有1位二进制输出,表示0或1。因此通过PDM方式表示的数字音频也被称为Oversampled 1-bit Audio。

相比PDM一连串的0和1,PCM的量化结果更为直观。

相关推荐
Kapaseker1 小时前
Compose 进阶—巧用 GraphicsLayer
android·kotlin
黄林晴1 小时前
Android17 为什么重写 MessageQueue
android
阿巴斯甜1 天前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker1 天前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95271 天前
Andorid Google 登录接入文档
android
黄林晴1 天前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab2 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿2 天前
Android MediaPlayer 笔记
android
Jony_2 天前
Android 启动优化方案
android
阿巴斯甜2 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android