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、耳机 | 车载、工业音频 |
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 具有灵活的输入输出混音器,支持单端/差分输入、耳机/扬声器输出切换。
4.3.2 ES8316 音频路径
ES8316 为单声道 Codec,路径相对简洁,但内置 ALC(自动电平控制)和噪声门。
4.3.3 TLV320AIC3x 音频路径
TLV320AIC3x 系列(如 AIC3100、AIC3204)具有可编程信号处理引擎,支持数字混音、3D 音效和低延迟路径。
4.4 音频路径配置要点
在设备树和驱动中配置音频路径时,需关注以下关键寄存器:
- 输入选择寄存器: 选择单端/差分输入,配置输入阻抗和偏置电压。
- 混音器寄存器: 控制各输入通道是否混入 ADC 或直接旁路到输出。
- 增益寄存器: 设置 PGA(可编程增益放大器)的 dB 值,通常范围为 -12dB ~ +35dB。
- 输出开关寄存器: 使能/禁用电荷泵、耳机放大器、扬声器放大器。
- 静音寄存器: 软静音控制,避免上电/下电时的爆音。
simple-audio-card 的 widgets 和 routing,或驱动未在 probe 阶段初始化默认路径,会导致无声音输出。务必在调试时先检查 Codec 寄存器状态。
4.5 本章小结
本章对比了 WM8960、ES8316、TLV320AIC3x 三款主流 Codec 的硬件特性,详细说明了 I²C/SPI 控制接口的时序与内核实现要点,并通过三张 SVG 框图清晰展示了各自的音频路径结构。理解这些基础原理是后续编写设备树绑定、配置 DAPM 路由、调试音频问题的前提。