4. Codec 芯片选型与原理

Codec(Coder-Decoder)是 ALSA 声卡系统中负责模拟音频信号与数字音频数据之间转换的核心器件。本章深入分析三款主流嵌入式 Codec 芯片(WM8960、ES8316、TLV320AIC3x)的硬件特性、控制接口与音频路径,为后续设备树绑定与驱动适配奠定基础。

4.1 常见 Codec 芯片特性对比

三款芯片在通道数、采样率、功耗、接口类型上各有侧重,选型时需结合产品需求(如是否需要双声道输出、是否需要耳机检测、功耗预算等)进行权衡。

特性 WM8960 ES8316 TLV320AIC3x
厂商 Wolfson (Cirrus Logic) Everest Semiconductor Texas Instruments
通道数 2 通道 DAC + 2 通道 ADC 1 通道 DAC + 1 通道 ADC 2 通道 DAC + 2 通道 ADC
最大采样率 48 kHz 192 kHz 96 kHz
位深 16/20/24 bit 16/24/32 bit 16/20/24/32 bit
输出功率 1W @ 8Ω (单声道) 40mW @ 16Ω 138mW @ 16Ω
控制接口 I²C I²C I²C 或 SPI
音频接口 I²S / PCM I²S / PCM I²S / PCM / TDM
内置 PLL 是 是 是
耳机检测 支持 支持 支持
典型应用 便携音箱、智能家居 低功耗 IoT、耳机 车载、工业音频
选型提示: 若项目需要双声道独立输出且对功耗不敏感,WM8960 是成熟选择;若追求高采样率与低功耗,ES8316 更适合单声道 IoT 场景;若需要多通道 TDM 或 SPI 控制,TLV320AIC3x 提供更灵活的配置。

4.2 I²C / SPI 控制接口详解

Codec 芯片的控制接口用于配置寄存器(如音量、采样率、音频路径开关)。I²C 使用两根线(SCL、SDA),SPI 使用四根线(SCLK、MOSI、MISO、CS)。

4.2.1 I²C 控制时序

以 WM8960 为例,其 I²C 设备地址为 0x1A(7 位地址)。写寄存器流程如下:

START + 0x1A(W) + ACK + REG_ADDR(8bit) + ACK + REG_VAL(8bit) + ACK + STOP

读寄存器流程:

START + 0x1A(W) + ACK + REG_ADDR(8bit) + ACK + STOP
START + 0x1A(R) + ACK + REG_VAL(8bit) + NACK + STOP

4.2.2 SPI 控制时序

TLV320AIC3x 支持 SPI 模式,通常使用 16 位传输帧:前 7 位为寄存器地址,第 8 位为 R/W 标志,后 8 位为数据。

CS 拉低
SCLK 时钟驱动
MOSI: [A6:A0] + [R/W] + [D7:D0]
MISO: 返回数据(读操作时)
CS 拉高
内核实现要点: 在设备树中通过 reg 属性指定 I²C 地址或 SPI 片选编号,驱动层使用 regmap API 统一管理寄存器读写,无需手动处理时序。

4.3 音频路径与信号流

音频路径指模拟信号从输入到输出经过的模拟开关、混音器、增益级和滤波器。理解路径是正确配置 Codec 寄存器的基础。

4.3.1 WM8960 音频路径

WM8960 具有灵活的输入输出混音器,支持单端/差分输入、耳机/扬声器输出切换。

WM8960 音频路径框图 LINE_IN_L LINE_IN_R MIC_IN 输入混音器 (增益/静音) ADC 24bit I²S 接口 DAC/ADC DAC 24bit 输出混音器 (音量/开关) SPK_OUT HP_OUT 路径说明: • 录音路径:LINE_IN → 输入混音器 → ADC → I²S 接口 → CPU • 播放路径:CPU → I²S 接口 → DAC → 输出混音器 → SPK_OUT / HP_OUT • 旁路路径:LINE_IN → 输入混音器 → 输出混音器 → HP_OUT(低功耗直通)

4.3.2 ES8316 音频路径

ES8316 为单声道 Codec,路径相对简洁,但内置 ALC(自动电平控制)和噪声门。

ES8316 音频路径框图 MIC_IN 前置放大 +20dB~+40dB ADC 24bit I²S 接口 DAC/ADC I²S 接口 DAC/ADC DAC 24bit 输出驱动 耳机/线路 HP_OUT ES8316 特色: • 内置 ALC 动态范围控制,自动调整增益防止削波 • 支持噪声门,静音时自动关闭输出降低底噪

4.3.3 TLV320AIC3x 音频路径

TLV320AIC3x 系列(如 AIC3100、AIC3204)具有可编程信号处理引擎,支持数字混音、3D 音效和低延迟路径。

TLV320AIC3x 音频路径框图 LINE_IN MIC_IN 输入选择/混音 差分/单端 ADC 可编程增益 数字信号处理 混音/3D/均衡 数字信号处理 混音/3D/均衡 DAC 可编程增益 输出选择/混音 耳机/线路/差分 HP_OUT LINE_OUT TLV320AIC3x 特色: • 内置可编程数字信号处理引擎,支持 3D 音效、低音增强 • 支持差分输入输出,抗干扰能力强,适合车载环境 • 提供低延迟路径(< 2ms),适用于对讲等实时应用

4.4 音频路径配置要点

在设备树和驱动中配置音频路径时,需关注以下关键寄存器:

  • 输入选择寄存器: 选择单端/差分输入,配置输入阻抗和偏置电压。
  • 混音器寄存器: 控制各输入通道是否混入 ADC 或直接旁路到输出。
  • 增益寄存器: 设置 PGA(可编程增益放大器)的 dB 值,通常范围为 -12dB ~ +35dB。
  • 输出开关寄存器: 使能/禁用电荷泵、耳机放大器、扬声器放大器。
  • 静音寄存器: 软静音控制,避免上电/下电时的爆音。
常见陷阱: 许多 Codec 在默认上电状态下所有路径均为关闭状态。若设备树中未正确配置 simple-audio-card 的 widgets 和 routing,或驱动未在 probe 阶段初始化默认路径,会导致无声音输出。务必在调试时先检查 Codec 寄存器状态。

4.5 本章小结

本章对比了 WM8960、ES8316、TLV320AIC3x 三款主流 Codec 的硬件特性,详细说明了 I²C/SPI 控制接口的时序与内核实现要点,并通过三张 SVG 框图清晰展示了各自的音频路径结构。理解这些基础原理是后续编写设备树绑定、配置 DAPM 路由、调试音频问题的前提。