目录
[2.1 什么是 PCM?](#2.1 什么是 PCM?)
[2.2 什么是PDM?](#2.2 什么是PDM?)
[2.3 区别与用途](#2.3 区别与用途)
前言
音频信号处理,是设备智能化的第一步,有了它,设备能够收音和发音。为了对音频信号更好的处理,飞利浦制定了一个专门用来传输音频信号总线协议------I2S。本章将介绍I2S的构成、音频信号的种类、原理与优缺点,再介绍一款音频解码芯片ES8311的作用。
因为内容较多,本章仅做一个知识梳理,具体工程见下一章。
一、I2S是什么?
I2S(Inter-IC Sound,集成电路内置音频总线)是飞利浦制定、嵌入式通用的专用同步串行总线协议,专门传输 PCM 数字音频,分离时钟 + 数据,抗抖动、音质好,MCU/DSP/ 音频 Codec 标配接口。
信号线
核心 4 根信号线(标配 3 根 + 可选 MCLK),每根线的名称可能有多种
BCLK / SCK 位时钟:
- 作用:控制数据传输速度、采样位宽,每一个时钟脉冲,传输 1 位音频数据
- 取值:时钟频率 = 采样率 × 声道数 × 采样位数,
- 例:44.1kHz 16 位双声道 → 44.1k×2×16 = 1.4112MHz
LRCK / WS 帧时钟:
- 作用:帧同步信号,标记当前传输的数据是左声道还是右声道。一高一低,切换一次 = 完成一帧立体声传输。
- WS = 低电平 → 左声道 L
- WS = 高电平 → 右声道 R
- 取值:在非 PDM 模式下,其频率等于采样率。比如 44.1kHz、48kHz。
SDATA / DIN / DOUT 串行数据线:
- 作用:传输 PCM 数字音频采样值,MSB 高位优先发送,左右声道共用这一根线,分时复用。
- WS = 低 → 发左声道数据
- WS = 高 → 发右声道数据
MCLK 主时钟:
- 作用:给音频 Codec 内部 DAC/ADC 做高精度时钟基准,让内部 PLL 锁相精准,杂音、底噪变小,能大幅提升音质,简单播放时可以不用 MCLK。分配的时候注意,MCLK 应该同时是采样率和 BCLK 的倍数。
- 取值:一般,MCLK = 采样率 × 256(或者384、512)
从上面的信号线来看,数据收发只有一根SDATA线,所以是半双工,某一时刻只能录音或者播音,这种工作模式能适应大部分场景。但随着发展,有声返、通话的需求,需要边放边录,于是出现了全双工配置。
全双工配置
SDATA / DIN / DOUT 串行数据线变成了两根,分别是:
- DOUT / SD_TX:播放数据输出(MCU→DAC)
- DIN / SD_RX:录音数据输入(ADC→MCU)
目前90%音频编解码器都是5根信号线,全双工通信。
I2S具有主机和从机两种模式。
- 主机 Master:输出 BCLK+LRCK,掌控时序
- 从机 Slave:跟随外部时钟收发数据
采样率
采样率设置值比较多,如 8 kHz、16 kHz、32 kHz、44.1 kHz、48 kHz、88.2 kHz、96 kHz、128 kHz、192 kHz。越高的采样率,音质越好,对设备的要求也越高。常见的频率设置如下:
| 采样率 | 适用场景 | 嵌入式推荐度 |
|---|---|---|
| 8kHz | 窄带语音、对讲、对讲机、低功耗录音 | ⭐⭐⭐ |
| 16kHz | 人机语音、本地录音、语音指令、蓝牙通话 | ⭐⭐⭐⭐⭐ 首选 |
| 22.05kHz | 压缩音频、低配音乐 | ⭐⭐ |
| 44.1kHz | CD 标准、普通背景音乐、本地歌曲播放 | ⭐⭐⭐⭐ |
| 48kHz | 车载多媒体、视频伴音、高清播放 | ⭐⭐⭐ |
| 96kHz/192kHz | HiFi 高解析音频 | ⭐ 单片机不推荐,资源占用极高 |
数据位宽
一般可设置为8、16、24、32位。常见设置如下:
| 位宽 | 音质 | 资源占用 | 嵌入式推荐度 | 适用场景 |
|---|---|---|---|---|
| 8bit | 差(噪音大、人声模糊) | 低 | ⭐ | 几乎不用,仅极端低功耗 |
| 16bit | 优秀(人声 / 音乐完全够用) | 适中 | ⭐⭐⭐⭐⭐ 首选 / 默认 | 语音、对讲、音乐、通用音频 |
| 24bit | 高清 | 高 | ⭐⭐ | 专业 HiFi(单片机没必要) |
| 32bit | 无损 | 极高 | ⭐ | 几乎不用,浪费性能 |
二、音频信号
2.1 什么是 PCM?
现实声音是连续模拟电压, ADC把这个电压信号变换时间离散、幅度连续采样信号。脉冲编码调制 Pulse Code Modulation(PCM)它是一种数字音频编码格式, 首先将ADC采样信号进行量化,得到时间、幅度均离散的数字信号,接着进行位长标准化,可选16bit / 24bit,最后按:左声道采样 → 右声道采样 → 左 → 右,这种顺序进行声道帧排序,这就从杂乱 ADC 离散值得到 全球通用标准 PCM 音频。
一段 PCM,到底包含完整声音所有信息。
-
**音量:**数值绝对值越大代表声音越大,正负号代表声波相位上下
-
**频率:**数值起伏变化越快代表频率越高、声音越尖
-
**音色:**一串数字整体波形形状决定是人声、钢琴、噪音还是喇叭声
-
**左右声道:**L R L R 交替顺序,区分左右通道
-
**时间长度:**采样率固定(44.1k/48k),总采样点数 ÷ 采样率 = 音频时长
ADC 负责采集,PCM 负责保存、传输、处理。I2S数据线传输的数字信号就是PCM信息。
2.2 什么是PDM?
PDM是脉冲密度调制,不用数字大小,只用 0 和 1 高低电平。这种信号无法通过单片机普通的逐次逼近ADC输出,而是来自于麦克风专用 **Σ-ΔADC,**这种ADC时钟极快(2~6MHz),每秒疯狂几百万次判断,只输出 0 或 1,从而得到PDM信号。
和 PCM 一样,PDM信号完整包含声音三要素
-
**音量:**整体脉冲越密集代表声音越大,整体越稀疏代表声音越小
-
**频率:**脉冲疏密变化越快代表音调越高,疏密变化越慢代表音调越低
-
**音色:**脉冲起伏规律形状来区分人声、杂音、乐器
2.3 区别与用途
首先,PCM和PDM两种信号的区别如下。
| 对比项 | PCM | PDM |
|---|---|---|
| 单采样位数 | 16bit / 24bit | 永远 1bit(只有高低电平) |
| 正常采样率 | 44.1kHz / 48kHz 低速 | 2.8MHz~6MHz 超高过采样 |
| 声道支持 | 单声道、立体声、多声道 TDM | 只能单声道,不支持立体声 |
| 配套 ADC | 普通 SAR 逐次逼近 ADC | 麦内置 Σ-Δ 高速 ADC |
| I2S 总线 | 原生完美支持 | 不兼容,无法直接传输 |
| 音频算法(降噪 / AEC) | 完美运算 | 完全不能运算 |
| Flash 存储 | 标准音频格式,直接存 | 频率太高,无法保存 |
| 信号线数量 | I2S 要 3~5 根 | 仅 CLK+DATA 2 根线 |
| 抗干扰能力 | 一般,长线易受干扰 | 极强,长线几乎无噪 |
| 芯片体积功耗 | 中等 | 极小、超低功耗 |
现在麦克风具有模拟麦和数字麦,区别如下:
| 对比维度 | 模拟麦克风 | 数字麦克风 |
|---|---|---|
| 核心定义 | 纯模拟器件,将声音震动转为连续模拟电压,无数字化环节 | 集成芯片的数字器件,内置ADC,直接输出PDM数字脉冲信号 |
| 接线方式 | 3根线:VCC、GND、OUT(模拟音频输出) | 4根线:VCC、GND、CLK(时钟)、DATA(PDM数据),有效信号仅2根 |
| 输出信号 | 连续变化的模拟电压波形,无标准格式 | 1bit PDM数字脉冲流(仅0/1,靠脉冲疏密表示声音) |
| 配套ADC | 无内置ADC,需外接MCU普通SAR ADC(12位为主),自行采样量化 | 内置Σ-Δ高精度ADC,无需外接,直接输出数字化信号 |
| 抗干扰能力 | 极差,模拟电压易受电磁干扰,长线布线必串杂音、底噪大 | 极强,数字脉冲信号,抗干扰能力突出,长线传输几乎无噪声 |
| 信噪比(SNR) | 60~70dB,嘈杂、底噪明显,声音干瘪 | 95~115dB,安静纯净,人声清晰,HiFi级表现 |
| 动态范围 | 低,高音易爆音、低音模糊,细节丢失严重 | 高,高音通透、低音饱满,声音细节还原完整 |
| 优确点 | 价格极低;老旧方案兼容性好。 抗干扰差;精度低;无噪声整形;音质不稳定;6. AEC回声消除效果极差 | 抗干扰强;动态范围大,音质好; 需要MCU硬件PDM转PCM;需专用I2S/PDM接口;价格稍高 |
| 多麦同步能力 | 无法严格同步,不能组成麦克风阵列,不支持远场拾音 | 可严格同步,完美支持4/6/8麦TDM阵列,适合远场唤醒、降噪 |
| 适用场景 | 低成本玩具、简单提示音、老旧设备、对音质无要求的场景 | 智能音箱、手机、TWS耳机、语音模块、高清通话、远场拾音、智能家居(高音质需求) |
| 价格 | 极低(几毛钱/个) | 稍高(1~3元/个,随精度提升波动) |
I2S 总线只认 PCM,不认 PDM,单片机所有音频算法也只能处理 PCM,喇叭DAC解码器只能识别PCM信号。所以数字麦克风拿到 PDM后一般需要硬件滤波转成 PCM再通过I2S输出给MCU,这个转换叫抽取滤波 Decimation。
麦克风具有模拟麦和数字麦,音响、喇叭这些统称为功放,功放也同样具有PCM 功放和PDM 功放两种。
| 对比项目 | PCM 数字功放 | PDM 功放 |
|---|---|---|
| 输入信号 | I2S 总线输入多比特 PCM 音频 | CLK+DATA 输入1bit PDM 脉冲流 |
| 是否自带格式转换 | 内置PCM→PDM 硬件转换模块(Σ-Δ 调制) | 无任何格式转换模块,只接收现成 PDM |
| 完整信号流程 | PCM → 芯片解码 → DAC 数模转换 → 内部 PCM 转 PDM → 功率放大 → LC 平滑滤波 → 模拟音频→喇叭 | 外部 MCU 输出 PDM → 直接功率放大 → RC 低通平滑 → 模拟音频→喇叭 |
| DAC 类型 | 独立高精度多比特 DAC | 无内置 DAC,直接脉冲放大 |
| 滤波电路 | 精密LC 低通滤波,失真小、音质纯净 | 简单RC 电容电阻滤波,高频杂波多 |
| 音频处理能力 | 支持 EQ 调音、降噪、混音、立体声全功能 | 无法做任何音效算法,只能原样播放 |
| 声道支持 | 立体声双声道、多声道 TDM | 基本单声道,立体声布线复杂无优势 |
| 接线数量 | I2S:WS+BCLK+DIN+DOUT+MCLK(5 线) | 仅 CLK+DATA(2 根信号线) |
| 时钟抖动抗干扰 | 极低,MCLK 主时钟校准,HiFi 低抖动 | 高频 MHz 脉冲,长线易干扰,音质劣化 |
| 音质上限 | 高解析、动态范围大、人声饱满细节丰富 | 上限低,适合语音提示,不适合听歌 HiFi |
| 外部依赖 | 无需 MCU 提前转换格式,直接接收标准 PCM | 必须MCU 外部先把 PCM 转为 PDM,才能使用 |
| 典型场景 | 蓝牙音箱、车载音响、智能家居高保真喇叭、通话全双工设备 | 手表、手环、耳机听筒、门铃提示音、低成本单声道小喇叭 |
把标准 PCM 音频转换成高速 PDM 脉冲,这个转换叫插值滤波 Interpolation。
从表格来看PDM功放加上外部专用的PCM→PDM 硬件转换模块就等于PCM功放,那为什么效果差PDM功放那么多呢?
这是因为PDM 转换越靠近喇叭、越在芯片内部做,音质越好PDM;转换越早、在 MCU 外部走长线,杂音越大、音质越烂。
PDM信号频率高,对噪声敏感性很高,输出端到接收端走线一长就容易失真,加上PCM功放内部一体化设计比PDM外部组合设计能达到更高的采样,更专业处理。故PCM功放优于PDM功放加外部转换模块。
音频处理流程众多,一条高保真完整音频全流程如下:
- 采用数字麦克风,将外界声音模拟量,转换成PDM 信号
- 音频解码器对PDM信号,进行硬件抽取滤波得到标准 16/24bit PCM信号,通过全双工 I2S + MCLK传输给MCU
- MCU对PCM 信号进行各种数字音频算法处理,如降噪 ANC、回声消除 AEC、音量 AGC、EQ 调音
- 将处理好的PCM音频信号,通过全双工 I2S + MCLK传输给 PCM 功放
- 音频 DAC 芯片接收 PCM
- PCM 功放内部自己把 PCM 转成 PDM
- 继续转换成模拟电压,喇叭发声
三、通信模式
音频信号总共有三种通信模式、分别是标准模式、PDM 模式和TDM 模式,区别如下:
| 对比维度 | 标准 I2S | PDM | TDM |
| 数据编码 | 双声道多比特 PCM(16/24/32 位) | 1 比特脉冲密度 | 多通道多比特 PCM(分时复用) |
| 声道数 | 固定 2 声道 | 单声道(麦克风) | 可配置 4~32 声道 |
| 信号线数 | 3~5 线,I2S传输 | 2 线 | 3~5 线,I2S传输 |
| 通道能力 | 固定双声道(左 + 右),单条数据线 | 单声道或立体声(立体声需在时钟上升 / 下降沿分别采样) | 支持多通道(4/8/16/32 通道),单条数据线实现多声道传输 |
| 时钟频率 | 中速(1~3MHz) | 高速(2~6MHz) | 中高速(随声道数增加) |
| 主要用途 | 立体声播放 / 录音 | 低成本录音(麦克风) | 多通道音频采集 / 播放 |
| 功耗 | 中等 | 低(适合电池设备) | 中高(随声道数增加) |
| 解码需求 | 无需(直接使用) | 必须(PDM→PCM) | 无需(直接解析时隙) |
| 典型芯片 | DAC/ADC、音频 Codec | MEMS 数字麦克风 | 多通道 Codec、DSP |
| 信号流向 | MCU→DAC / 功放(播放)或麦克风→MCU(录音) | 麦克风→MCU(需解码)或 MCU→PDM 功放(直接放大) | MCU→多通道 DAC / 功放或多麦克风→MCU(阵列采集) |
|---|
以下各模式具体区别可查看《I2S通信模式》
标准 I2S 模式:立体声高保真首选
标准模式中有且仅有左右两个声道,驱动中将声道称为 slot。这些声道可以支持 8/16/24/32 位宽的采样数据,声道的通信格式主要包括以下几种:(实际中选用哪个模式要看音频解码芯片支持的模式,其中Philips 格式兼容性最好,适用面最广)
-
Philips 格式:数据信号与 WS 信号相比有一个位的位移。WS 信号的占空比为 50%。
-
MSB 格式:与 Philips 格式基本相同,但其数据没有位移。
-
PCM 帧同步:数据有一个位的位移,同时 WS 信号变成脉冲,持续一个 BCLK 周期。
优势:协议成熟、兼容性强、音质稳定,是 HiFi 音频的基础传输方式
局限:仅支持双声道,多声道应用时需要多条 I2S 总线,硬件成本高
PDM 模式:极简硬件的语音应用王者
- 独特优势 :仅需 2 根线,MEMS 麦克风无需复杂 ADC,体积小、成本低、功耗低
- 致命短板 :高频脉冲对 PCB 布线要求极高,长线传输必失真,需专用抽取滤波器处理
TDM 模式:多声道音频的高效解决方案
TDM(Time Division Multiplexing,时分多路复用)模式最多支持 16 个声道。但由于硬件限制,声道设置为 32 位宽时最多只能支持 4 个声道,16 位宽时最多只能支持 8 个声道,8 位宽时最多只能支持 16 个声道。TDM 的声道通信格式与标准模式基本相同,但有一些细微差别。
-
Philips 格式:数据信号与 WS 信号相比有一个位的位移。无论一帧中包含多少个声道,WS 信号的占空比将始终保持为 50%。
-
MSB 格式:与 Philips 格式基本相同,但数据没有位移。
-
PCM 短帧同步:数据有一个位的位移,同时 WS 信号变为脉冲,每帧持续一个 BCLK 周期。
-
PCM 长帧同步:数据有一个位的位移,同时 WS 信号将在每一帧持续一个声道的宽度。例如,如果启用了四个声道,那么 WS 的占空比将是 25%,如果启用了五个声道,则为 20%
核心思想:将多个声道数据 "打包" 在一个 WS 帧周期内,每个声道占用固定时隙
计算示例:8 声道、32 位位深、48kHz 采样率的 TDM 系统,BCLK 频率 = 8×32×48kHz=12.288MHz
典型应用:汽车音响(4/6/8 声道)、家庭影院、专业录音设备,大幅减少 GPIO 占用
四、音频解码芯片
ES8311是顺芯开发的一款低功耗单声道音频编解码器,集成了24 位,采样频率 8 至 96 千赫兹的Σ-Δ ADC(录音)和 24 位,8 至 96 千赫兹的采样频率的Σ-Δ DAC(播放)。构造如图所示:

MIC1P、MIC1N是差分模拟音频输入,接收模拟麦克风采集的原始模拟声音电压。差分接法天生抗干扰,音质远超单端接法。
MCLK与I2S/PCM构成5线全双工I2S信号。
I²C 是芯片参数配置总线,不传输声音,只传设置指令
OUTP、OUTN是差分模拟音频功率输出,驱动PDM功放设备。
但是OUTP、OUTN输出的是毫伏级微弱模拟电压,仅能驱动 3.5mm 耳机,完全推不动喇叭。喇叭需要几百毫安~ 几安大电流才能震动发声,想要驱动无源喇叭,需要接一个D类功放。(有源喇叭一般内置D类功放)
D类功放是D类音频功率放大器,能把这个弱电音频,放大成大电流、大功率、能震动喇叭发声的强电音频。
电源供电组:
PVDD是数字输入和输出的电源供应
DVDD、DGND是数字电源供应
AVDD、AGND是模拟电源供应
数模分开供电接地,隔绝数字开关噪音,保护音频音质
模拟参考偏置组:
ADCVREF :ADC 模数转换基准电压
DACVREF :DAC 数模转换基准电压
VMID:模拟电路中点直流偏置,稳定工作点、消除杂音直流偏移
仅外接对地滤波电容,芯片内部生成稳定电压
该芯片功能还是比较全面的,输入可以接模拟麦克风和数字麦克风,输出可接PCM功放和PDM功放。
五、MCU的I2S资源
ESP32-P4 有三个标准 I2S 接口,为多媒体应用,尤其是为数字音频应用提供了灵活的数据通信接口。I2S 控制器通过 GPIO 交换矩阵可配置使用任意 GPIO 管脚。
ESP32-P4 内置一个 LP I2S 接口,为语音活动检测 (VAD) 模块和一些低功耗模式下的数字音频应用提供了数据接收通信接口。LP I2S 接口通过 LP GPIO 交换矩阵可配置使用任意 LP GPIO 管脚。
I2S 0~2都支持标准模式、PDM发送或接收模式(只利用WS 和 DATA)和TDM发送或接收模式。都可作为主机或从机,都可扩展到5根线实现全双。
其中I2S0内部具有PCM to-PDM 转换器,可以在 PDM TX 主机模式下启用,启用后,I2S 通过 GDMA 从存储器中取得脉冲编码调制 (PCM) 数据,将其转换为脉冲密度调制 (PDM) 数据并发送。
同时I2S0内部具有PDM to-PCM 转换器,可以在 PDM RX 主机或从机模式下启用。启用 后,I2S 接收脉冲密度调制 (PDM) 数据,将其转换为脉冲编码调制 (PCM) 数据,并将其通过 GDMA 存入存储器。
I2S时钟

I2S时钟源来源有4个,其中可配置为APLL_CLK,最大支持到240M。主时钟频率MCLK由时钟源分频而来,N的范围为[2, 256],一般不使用分数b/a。位时钟频率可由MCLK分频而来。这些值具体如何设置见下一篇。