1. WM8960 芯片概述:特性、应用场景、内部框图与引脚功能解析

各位同学,咱们今天正式开讲 WM8960 这颗芯片。说实话,在嵌入式音频领域摸爬滚打这么多年,WM8960 是我个人用得最多、也最愿意推荐给新手的一颗编解码器。为什么?因为它皮实、功能全、资料好找,而且价格还算公道。我记得 2018 年做一款智能音箱项目时,选型会上大家争论了半天,最后还是定了 WM8960——原因很简单,它一颗芯片就把音频编解码、功放、耳机驱动全包了,省了不少外围器件。

1.1 芯片特性速览

先看核心参数。WM8960 是英国 Wolfson(现属 Cirrus Logic)推出的一款低功耗立体声音频编解码器。它支持双通道 DAC 和 ADC,信噪比分别达到 98dB 和 94dB——这个指标在消费级产品里已经相当能打了。

参数项 典型值 备注
DAC 信噪比 98dB A 加权,立体声
ADC 信噪比 94dB A 加权,立体声
采样率范围 8kHz ~ 96kHz 支持标准音频速率
内置功放 2 × 1W @ 8Ω 可直接驱动喇叭
耳机驱动 立体声,无电容输出 Capless 架构
控制接口 I²C / SPI 寄存器配置用
音频接口 I²S / PCM 与 MCU 通信
工作电压 2.7V ~ 3.6V 数字核心 1.8V 内部稳压

重点记住:WM8960 内置了 1W 立体声功放,这意味着你不需要额外加功放芯片就能直接驱动小喇叭。我在做便携式录音笔项目时,就靠这个特性省下了一颗 TPA3110 的空间和成本。

1.2 应用场景

说白了,这颗芯片就是为消费级音频产品量身定做的。你想想看,哪些设备需要同时处理录音和放音,还得体积小、功耗低?

  • 智能音箱与语音助手:双麦克风输入 + 喇叭输出,WM8960 的 ADC 可以直接接 MEMS 麦克风。
  • 便携式录音笔:低功耗模式下的录音续航表现不错,我测过,3.7V 锂电池供电能连续录 8 小时以上。
  • 对讲机与 VoIP 终端:全双工通信场景,WM8960 的 ADC/DAC 同时工作延迟很低。
  • 车载免提系统:虽然车规级有更高要求,但很多后装产品确实在用这颗芯片。
  • 玩具与教育硬件:成本敏感但需要语音交互的产品,WM8960 的性价比优势很明显。

嗯,这里要注意——如果你做的是 Hi-Fi 级产品,WM8960 的 98dB 信噪比可能不够看。但话说回来,消费级市场里,这个指标已经能覆盖 90% 以上的需求了。

1.3 内部框图解析

下面这张 SVG 图是我根据官方 datasheet 重新整理的,把核心模块和信号流向画清楚了。你盯着看两分钟,基本就能理解这颗芯片的工作逻辑。

WM8960 内部功能框图 I²S / PCM 数字音频接口 I²C / SPI 控制接口 数字滤波器 抽取/插值 音量控制 数字增益调节 DAC 数模转换 ADC 模数转换 功放 SPK_L / SPK_R 耳机驱动 HP_L / HP_R 线路输出 OUT3 / OUT4 麦克风输入 MIC1 / MIC2 线路输入 LINPUT1 / LINPUT2 💡 信号流向说明 播放:I²S → 数字滤波 → DAC → 功放/耳机/线路输出 录音:麦克风/线路输入 → ADC → 数字滤波 → I²S 时钟管理 PLL / MCLK 分频

从这张图你能看到,WM8960 的核心架构其实不复杂。数字音频通过 I²S 进来,经过数字滤波和音量控制,送到 DAC 转成模拟信号,最后分配给功放、耳机或线路输出。反过来,录音时模拟信号从麦克风或线路输入进来,经过 ADC 转成数字信号,再通过 I²S 送回 MCU。

个人经验:刚开始接触 WM8960 时,我总搞混它的时钟树。后来发现一个规律——所有模块的时钟都源自 MCLK 或外部晶振,经过 PLL 倍频后分发给各个子模块。你配置寄存器时,只要保证 ADC 和 DAC 的采样率与 MCLK 成整数倍关系,基本不会出问题。

1.4 引脚功能解析

WM8960 采用 QFN-32 封装,5mm × 5mm,体积很小。但别因为它小就轻视——32 个引脚里,有一半以上是模拟信号,布局布线稍有不慎就会引入噪声。

我把引脚按功能分组整理成下表,方便你查阅:

引脚名 引脚号 类型 功能描述
电源类
AVDD 1 电源 模拟电源,2.7V ~ 3.6V
DVDD 2 电源 数字电源,1.71V ~ 3.6V
PVDD 3 电源 功放电源,2.7V ~ 5.5V
DGND / AGND / PGND 4, 5, 6 地 数字地、模拟地、功放地
数字接口类
MCLK 7 输入 主时钟输入,12.288MHz 等
BCLK 8 输入/输出 I²S 位时钟
DACDAT 9 输入 I²S 数据输入(播放)
ADCDAT 10 输出 I²S 数据输出(录音)
LRCLK 11 输入/输出 I²S 左右声道时钟
SCLK / SDA 12, 13 输入/输出 I²C 时钟和数据(或 SPI)
模拟输出类
SPK_L / SPK_R 14, 15 输出 喇叭输出,1W @ 8Ω
HP_L / HP_R 16, 17 输出 耳机输出,无电容
OUT3 / OUT4 18, 19 输出 线路输出或辅助输出
模拟输入类
MIC1 / MIC2 20, 21 输入 麦克风输入,内置偏置
LINPUT1 / LINPUT2 22, 23 输入 线路输入,可配置增益
RINPUT1 / RINPUT2 24, 25 输入 右声道线路输入

⚠️ 避坑指南:我曾经在一个项目里把 AVDD 和 DVDD 用同一路 LDO 供电,结果底噪大得离谱。后来才意识到——模拟电源和数字电源必须分开走线,最好用磁珠隔离。另外,PGND 是大电流回路,千万别和 AGND 混在一起,否则功放开启时你会听到明显的“滋滋”声。

1.5 控制接口与音频接口

WM8960 支持两种控制接口:I²C 和 SPI。默认是 I²C,地址为 0x1A(7 位地址)。如果你要用 SPI,需要把 MODE 引脚拉高。

音频接口方面,它支持标准的 I²S 协议,也兼容左对齐和右对齐格式。我个人习惯用 I²S,因为 STM32 的 HAL 库对 I²S 支持得最好,代码写起来最顺手。

关键配置参数:

  • I²C 地址:0x1A(7 位)或 0x34(8 位)
  • I²S 格式:I²S 左对齐,16/20/24/32 位可选
  • MCLK 频率:通常为 12.288MHz 或 24.576MHz
  • 采样率:48kHz 时 MCLK 为 12.288MHz(256 × fs)