本系列每篇文章的链接:
Linux音频三部曲(1):嵌入式 Linux 音频基础与硬件体系 - 知乎
Linux音频三部曲(2):Linux ASoC驱动深度开发 - 知乎
Linux音频三部曲(3):嵌入式 Linux 音频用户态开发:ALSA、PipeWire、WirePlumber 与 GStreamer 实战 - 知乎
本文参考 Bootlin 文档,内容覆盖音频物理原理、数字化标准、嵌入式音频硬件架构、Codec 工作机制、数字音频接口、时钟系统、辅助外设等体系,梳理嵌入式音频从模拟信号到数字传输的完整链路。
如有专业词汇翻译不当、内容理解有误的地方,还望指正。
一、 嵌入式 Linux 音频开发的工程定位
嵌入式 Linux 音频开发区别于 PC 音频体系,核心特征为硬件模块化、组件可复用、低功耗约束、接口多样化。嵌入式场景中,音频硬件由 SoC、Codec、功放、连接器、时钟源等独立组件组合而成,不同硬件平台的接口、时钟、路由存在差异,需要一套标准化的软件架构适配硬件组合,这也是 Linux 内核中 ASoC(ALSA System on Chip)子系统产生的背景。
嵌入式音频广泛应用于车载设备、工业终端、智能家居、可穿戴设备、多媒体播放器等场景,系统需同时支持播放(Playback)与采集(Capture)功能,部分场景要求多通道、低延迟、高保真、动态电源管理。开发流程遵循从硬件原理到数字化规范,再到硬件架构设计,最终对接软件驱动的逻辑,本文关注硬件与数字化基础,不涉及软件驱动实现。
二、声音的物理特性与数字化原理
2.1 声音的物理本质
声音由物体振动产生,振动在介质中形成波动并传播。人类通过耳膜接收声波振动,将机械信号转换为神经信号传递至大脑,形成听觉感知。声波在空气与水中以纵波形式传播,表现为介质的压缩与稀疏;在固体中以横波形式传播,工程上通常使用正弦波简化表示声波形态。

sound
声波包含两个核心物理参数:频率与振幅。频率单位为赫兹(Hz),对应声音的音调,频率越高音调越高;振幅单位为分贝(dB),对应声音的响度,振幅越大响度越高。自然声音由不同频率、不同振幅的波形叠加而成,叠加结果决定声音的音色与音质。

人耳可感知的频率范围约为 20Hz 至 20kHz,超出此范围的声波分别为次声波与超声波,不用于常规音频系统。嵌入式音频系统的设计指标以人耳感知范围为基础,确定采样率、频率响应、动态范围等参数。
2.2 音频数字化的核心流程
模拟声波是连续曲线,包含无限个数据点,无法直接由数字系统处理,需通过采样、量化、编码转换为数字信号,该过程称为音频数字化。数字化的核心操作是在连续波形上按固定时间间隔采集幅度值,单次采集结果称为采样(Sample)。
数字化过程包含三个关键参数:采样率、采样位深、采样格式。三项参数共同决定数字音频的还原精度、数据量与系统资源占用。
2.2.1 采样率与奈奎斯特定理
采样率指每秒采集的采样数量,单位为 Hz。采样率直接决定信号还原精度,采样率过低会导致混叠(Aliasing),即采样后的信号无法还原原始模拟波形。奈奎斯特定理规定,采样率必须大于信号最高频率的 2 倍,才能实现无失真数字化。

Aliasing example, the sampled signal is in blue
针对人耳 20kHz 上限频率,理论最低采样率为 40kHz,实际工程中常用 44.1kHz(CD 标准)、48kHz(嵌入式与视频伴音标准)、96kHz(高保真场景)。部分专业音频设备使用 192kHz 采样率,适用于高动态范围场景。
2.2.2 采样位深
采样位深表示单个采样使用的二进制位数,决定音频的动态范围与信噪比。位深越高,可表示的幅度精度越高,噪声越低。嵌入式系统常用位深为 16bit 与 24bit,8bit 因动态范围过低已极少使用,32bit 多用于特定对齐需求场景。
采样值的表示范围以 0 为中心对称,归一化范围为 -1.0 至 1.0,对应硬件的电压范围。位深直接决定量化噪声水平,16bit 系统的理论动态范围约为 96dB,24bit 系统约为 144dB,满足绝大多数嵌入式场景需求。
2.2.3 采样格式
采样格式定义采样数据在内存与存储设备中的编码方式,包含符号类型、存储序、打包方式三类属性。
符号类型分为有符号整数、无符号整数、浮点数。嵌入式播放与采集主流使用有符号整数,浮点数多用于音频处理算法。
存储序分为小端序(Little-endian)与大端序(Big-endian),x86 与多数 ARM 平台使用小端序。
打包方式针对 24bit 采样,存在两种实现:3 字节紧凑打包、4 字节对齐打包(最高 8bit 忽略)。驱动与硬件需保持一致的打包规则,否则会出现数据解析错误。
2.3 线性脉冲编码调制(LPCM)
LPCM 是音频数字化的标准实现方式,直接按固定采样率、固定位深对模拟波形进行采样编码,不进行压缩处理。WAV 格式基于 RIFF 容器,封装 LPCM 数据,是嵌入式系统调试与测试的标准音频文件格式。
WAV 文件头部包含固定结构,前 4 字节为 RIFF 标识,5-8 字节为文件大小,9-12 字节为 WAVE 标识,后续为格式块与数据块。格式块中记录音频格式、通道数、采样率、字节率、位深等参数,数据块存储 LPCM 采样数据。驱动初始化时需解析 WAV 头部参数,匹配硬件支持的格式与采样率。
三、嵌入式音频硬件整体架构
3.1 硬件组成与信号流向

Example of an embedded system sound card
嵌入式音频硬件为模块化架构,标准组成包括:SoC 主芯片、Codec 芯片、功率放大器、模拟连接器、数字音频接口(DAI)、配置接口、时钟源。
信号流向分为两路: 播放链路:SoC 内存数字信号 → DAI 传输 → Codec 数字转模拟(DAC) → 功率放大器 → 扬声器/耳机。 采集链路:麦克风/线路输入 → 模拟信号 → Codec 模拟转数字(ADC) → DAI 传输 → SoC 内存。
配置链路独立于音频信号,SoC 通过 I2C 或 SPI 接口配置 Codec 的寄存器,设置通道、增益、静音、格式、时钟等参数。
3.2 核心组件功能定义
3.2.1 SoC 音频部分
SoC 集成数字音频接口控制器(CPU DAI)、DMA 控制器、音频时钟生成模块。DAI 控制器负责数字信号的收发与时序控制,DMA 实现内存与 DAI 控制器之间的数据搬运,不占用 CPU 资源。部分 SoC 集成 Codec 与功放,如全志 A33、Microchip SAMA5D2,形成单芯片音频方案。
3.2.2 Codec 芯片
Codec 即编码解码器(Coder-Decoder),集成 ADC 与 DAC,实现模拟信号与数字信号的双向转换。Codec 包含数字音频接口、配置接口、模拟前端、电源管理模块,是音频硬件的核心组件。
3.2.3 功率放大器
功放位于 Codec 输出与扬声器之间,将低压模拟信号放大至驱动扬声器的功率等级。部分功放支持增益调节、使能控制、短路保护,由 GPIO 或 I2C 控制。
3.2.4 连接器与模拟器件
连接器包含耳机插孔、麦克风插孔、线路输入/输出接口。模拟器件包含电容、电阻、混音器、多路选择器、偏置电路,用于阻抗匹配、信号耦合、通道切换。
四、Codec 芯片工作原理
4.1 Codec 核心功能
Codec 的核心功能是完成 ADC 与 DAC 转换,同时提供通道控制、增益调节、静音、低功耗、时钟管理等附加功能。Codec 接收来自 DAI 的数字信号,经 DAC 转换为模拟电压信号输出;接收模拟输入信号,经 ADC 转换为数字信号通过 DAI 发送至 SoC。
Codec 必须由时钟驱动才能工作,时钟来源包括 SoC 输出、外部晶振、部分 Codec 支持从 BCLK 或 LRCLK 提取时钟。Codec 的配置接口多为 I2C,部分高速设备使用 SPI,配置操作包括寄存器读写、批量配置、上电初始化。
4.2 ADC 模块
ADC(模拟转数字)模块处理麦克风、线路输入等模拟信号,流程为:模拟信号输入 → 增益调节 → 抗混叠滤波 → 采样保持 → 量化编码 → 数字信号输出。ADC 支持单端与差分输入,差分输入可抑制共模噪声,提升采集质量。
4.3 DAC 模块
DAC(数字转模拟)模块处理来自 SoC 的数字信号,流程为:数字信号输入 → 插值滤波 → 数模转换 → 低通滤波 → 模拟信号输出。DAC 输出信号幅度较小,需经过功放驱动外放设备。
4.4 Codec 内部路由与电源管理
Codec 内部包含模拟混音器、数字混音器、多路选择器,支持输入通道切换、输出混音、音量衰减。电源管理模块支持模块独立上下电,配合软件 DAPM 实现动态功耗控制。Codec 通常提供麦克风偏置电压(MICBIAS),为驻极体麦克风供电。
五、数字音频接口(DAI)
5.1 DAI 接口定义
数字音频接口(DAI)是 SoC 与 Codec 之间传输数字音频信号的同步串行总线,所有信号由时钟同步,保证数据传输时序正确。DAI 包含三类时钟信号与两类数据信号,部分接口包含同步信号。

Digital audio interface - signals
5.2 DAI 时钟信号
5.2.1 MCLK
MCLK 为系统主时钟,是 Codec 内部 PLL、ADC、DAC 的工作时钟,频率通常为采样率的 256 倍、384 倍或 512 倍。MCLK 可由 SoC 提供、外部晶振提供,部分 Codec 支持无 MCLK 工作,从 BCLK 提取时钟。
5.2.2 BCLK
BCLK 为位时钟,每一个周期传输一位数据,频率计算公式为: BCLK = 采样率 × 通道数 × 位深 例如 48kHz、2 通道、16bit 格式,BCLK 频率为 48000×2×16=1.536MHz。
5.2.3 WCLK/LRCLK
WCLK 为字时钟,也称帧时钟、左右通道时钟(LRCLK),频率等于采样率,用于切换左右通道传输。LRCLK 为低电平传输左通道,高电平传输右通道。
5.3 DAI 数据信号
数据信号分为发送(TXD/DOUT)与接收(RXD/DIN),TXD 为 SoC 输出至 Codec(播放),RXD 为 Codec 输出至 SoC(采集)。多通道 Codec 支持多组数据信号,如 4 通道设备使用 2 组数据信号线。
5.4 常用数字音频接口格式
嵌入式系统使用多种 DAI 格式,硬件与驱动必须配置为相同格式才能正常通信。
5.4.1 I2S 格式
I2S 是飞利浦定义的标准音频格式,LRCLK 切换后延迟 1 个 BCLK 周期传输数据,MSB 优先传输,是嵌入式系统最常用格式。

5.4.2 Left Justified(左对齐)
左对齐格式中,数据在 LRCLK 切换后立即传输,无延迟,MSB 与帧边沿对齐。

5.4.3 Right Justified(右对齐)
右对齐格式中,数据 LSB 与帧边沿对齐,适用于旧款 Codec 设备。

5.4.4 DSP A/DSP B 格式
DSP 格式为时分复用模式,LRCLK 为短脉冲信号,数据在脉冲后连续传输,适用于多通道传输。DSP A 与 DSP B 的区别为帧同步相位不同。

DSP A

DSP B
5.4.5 TDM 格式
TDM(Time Division Multiplexing)即时分多路复用,在一个帧周期内传输多个通道数据,常见为 4 通道、8 通道、16 通道。TDM 格式可减少硬件信号线数量,适用于多通道音频设备。单速率模式下每个通道占用 32 个 BCLK,双速率模式占用 16 个 BCLK。

5.4.6 AC-link 格式
AC-link 用于 AC97 标准,采用 TDM 时隙传输,时隙 0 为标签,后续 12 个时隙传输音频数据与控制命令,采样率固定为 48kHz,时钟频率 12.288MHz。

5.4.7 PDM 格式
PDM(脉冲密度调制)为单比特编码格式,每个通道包含时钟与数据信号,数据只有 0/1 两种状态,多用于微型数字麦克风,适用于空间受限设备。
5.4.8 S/PDIF 格式
S/PDIF 为消费类数字音频接口,单信号线传输,采用双相标记编码(BMC),传输立体声 PCM 数据,支持光纤与同轴传输,用于音频输出设备。


六、时钟系统与主从配置
6.1 时钟生产者与消费者
DAI 总线存在时钟主从关系,产生时钟的设备为生产者(Provider),接收时钟的为消费者(Consumer)。时钟分为位时钟生产者与帧时钟生产者,两者可由同一设备提供,也可分离。
嵌入式音频系统中,Codec 通常作为时钟生产者,原因是 Codec 内部集成高精度 PLL 与分频器,可从 MCLK 生成稳定的 BCLK 与 LRCLK。部分 SoC 集成专用音频 PLL,可作为时钟主设备。时钟主从配置错误会导致无声、噪声、采样率不匹配等问题。
6.2 时钟频率匹配原则
MCLK 频率必须为 BCLK 与 LRCLK 的整数倍,Codec 数据手册会明确标注支持的时钟比率。常见比率为: MCLK = 256 × Fs(采样率) MCLK = 384 × Fs MCLK = 512 × Fs
时钟频率不匹配会导致 PLL 无法锁定,出现丢数据、爆音、underflow/overflow 等异常。
6.3 时钟源选择
时钟源包括三类:SoC 音频时钟、外部晶振、Codec 内部时钟。外部晶振精度最高,适用于高保真场景;SoC 时钟可简化硬件,降低成本;Codec 内部时钟适用于低功耗设备。
七、辅助音频硬件
7.1 功率放大器
功放分为模拟功放与数字功放,模拟功放线性度好,数字功放效率高。嵌入式常用简单功放,由 GPIO 控制使能,无需 I2C 配置。高保真设备使用 I2C 可控功放,支持增益调节、静音、保护功能。
功放的连接位置为 Codec 模拟输出与扬声器之间,部分 Codec 集成功放,可直接驱动耳机。
7.2 模拟多路选择器与混音器
多路选择器用于切换模拟输入源,如麦克风、线路输入、蓝牙输入。混音器用于多路信号混合,适用于通话、音效叠加场景。模拟器件由 GPIO 或 Codec 寄存器控制。
7.3 麦克风偏置与输入电路
驻极体麦克风需要 1.5V-3V 偏置电压,由 Codec MICBIAS 引脚提供。输入电路包含滤波电容、限流电阻、ESD 保护器件,抑制电源噪声与静电干扰。
7.4 简单音频外设驱动支持
Linux 内核提供通用驱动支持简单音频外设: simple-amplifier:GPIO 控制功放驱动。 simple-mux:GPIO 控制模拟多路选择器驱动。 这类外设通过设备树配置,挂载到音频声卡,作为辅助组件工作。
八、总结
嵌入式 Linux 音频硬件体系以模拟信号数字化为基础,以 Codec 为核心,以同步串行 DAI 为传输通道,以时钟系统为时序保障,形成完整的音频采集与播放链路。