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的量化结果更为直观。

相关推荐
星际编程喵6 分钟前
Flask实时监控:打造智能多设备在线离线检测平台(升级版)
后端·python·单片机·嵌入式硬件·物联网·flask
VincentStory7 分钟前
分享一个项目中遇到的一个算法题
android·算法
yechaoa2 小时前
【揭秘大厂】技术专项落地全流程
android·前端·后端
天天爱吃肉82182 小时前
【新能源汽车“心脏”赋能:三电系统研发、测试与应用匹配的恒压恒流源技术秘籍】
嵌入式硬件·汽车·学习方法
嵌入式届的关宏峰3 小时前
电路原理(电容 集成电路NE555)
单片机·嵌入式硬件
Cachel wood3 小时前
Mysql相关知识:存储引擎、sql执行流程、索引失效
android·人工智能·sql·mysql·算法·前端框架·ab测试
alexhilton4 小时前
实战:在Compose中绘制睡眠时间线
android·kotlin·android jetpack
kanhao1004 小时前
硬件设计抽象级别详解:门级、RTL级、行为级与HLS
嵌入式硬件·fpga开发
每次的天空4 小时前
Android第四次面试总结(基础算法篇)
android·算法·面试
王景程4 小时前
Android Zygote的进程机制
android·github·模块测试·zygote