2026 Make Blocks #6阶段2 - 基于MAX98357的D类音频功率放大模块
该项目使用了MAX98357,实现了D类音频功率放大模块的设计,它的主要功能为:D类音频放大。
标签
Make Blocks
D类音频功率放大模块
MAX98357
永不止步
更新2026-10-26
54

一、项目概述

1.1 项目背景

本项目针对便携式蓝牙音箱、桌面提醒器、嵌入式开发板(如树莓派、ESP32)外接扬声器等应用场景,设计一款单声道 D 类音频功率放大器模块。考虑到便携设备对体积、效率与电池续航的严苛要求,本设计选取 Maxim(现 Analog Devices)公司的 MAX98357AETE+T 作为核心功放器件,配合数字 I2S 接口直接对接主控,省去外置 DAC,从而降低整体 BOM 成本与 PCB 面积。

1.2 任务要求

任务书规定两条独立路线,本次仅实现便携路线。

参数

要求值

路线

便携路线

输入电压

2.5 ~ 5.5 V(单电源)

通道数

单声道

扬声器阻抗

4 Ω / 8 Ω

目标输出功率

5 V / 4 Ω ≥ 2 W(8 Ω ≥ 1 W)

音频输入

I2S 数字音频(BCLK / LRCLK / DIN)

静音/关断控制

SD_MODE# 引脚,低电平关断(< 1 µA)

输入端保护

反接 / 过流 / 浪涌保护至少一种

二、硬件详细说明

本设计共使用 8 类有源器件与无源器件,按功能划分为音频功放、电源、保护、接口四大模块。

音频功放模块:MAX98357AETE+T

功放芯片选用 Maxim Integrated(现 Analog Devices)公司的 MAX98357AETE+T。该器件为 I2S 数字输入、单声道 D 类功率放大器,集成升压转换器,可由单电源直接驱动 4 Ω / 8 Ω 扬声器。

项目

规格

制造商

Maxim Integrated / Analog Devices

型号

MAX98357AETE+T

封装

TQFN-16-EP(3 mm × 3 mm,16 引脚 + 1 个散热焊盘 EP)

工作电压

2.5 V ~ 5.5 V

通道数

单声道(BTL 输出)

数据接口

I2S 标准 / 左对齐 / 右对齐(自动识别)

输出功率

5 V / 4 Ω:2.5 W(THD+N=10%)、2.0 W(THD+N=1%)

效率

92%(典型值,2 W / 4 Ω)

THD+N

0.025%(1 W / 4 Ω,1 kHz)

关断电流

< 1 µA(SD_MODE# = 0)

工作温度

-40 °C ~ +85 °C

散热方式

EP 散热焊盘 + 过孔阵列 + 底层铺铜

电源模块

电源输入与去耦

电源由 J1-Pin1(VCC)与 J1-Pin2(GND)引入,采用直插排针 KF128-2.54-7P。

电源去耦分两级:

器件

参数

作用

C1

10 µF / 10 V,0805 封装,X5R 介质

大容量储能,抑制低频纹波(< 100 kHz)

C2

100 nF / 16 V,0402 封装,X7R 介质

高频去耦,抑制 VCC 开关噪声(> 1 MHz)

C1 与 C2 并联,形成宽频段去耦网络。C1 与 C2 物理上应紧贴 U1 的 VDD 引脚(Pin 7、Pin 8),走线宽度 ≥ 0.5 mm,环路面积 ≤ 0.5 cm²。原理图位置:电源网络。

测试点

板边设置 2 个圆盘测试焊盘:

测试点

标识

位置

用途

T1

VCC

J1-Pin1 旁

测量供电电压与纹波(推荐示波器探头 ×1 档)

T2

GND

D1 阴极旁

提供示波器参考地

控制与接口模块

I2S 数字音频接口

音频输入采用标准 I2S 接口,5 个信号通过 J1 排针引入:

信号

方向

J1 引脚

描述

VCC

电源输入

Pin 1

2.5 ~ 5.5 V 供电

GND

电源地

Pin 2

系统参考地

SD

数字输入

Pin 3

SD_MODE# 关断控制(低电平关断)

GAIN

数字输入

Pin 4

增益选择

DIN

数字输入

Pin 5

I2S 串行数据

BCLK

数字输入

Pin 6

I2S 位时钟

LRC

数字输入

Pin 7

I2S 字选择

扬声器输出接口 P1

P1 选用直插排针 KF128-2.54-2P,2 个引脚定义如下:

引脚

连接

描述

Pin 1

U1 Pin 10 (OUTP)

BTL 输出正端,经 C3 滤波

Pin 2

U1 Pin 9 (OUTN)

BTL 输出负端,经 C4 滤波

由于本设计采用 BTL(Bridge-Tied-Load)输出架构,OUTP 与 OUTN 均为浮动差分信号,绝对不得与系统 GND 短路。PCB 走线上,P1 两引脚的焊盘与底层 GND 铜皮保持 ≥ 0.5 mm 隔离带。原理图位置:P1。

三、原理图与 PCB 设计

系统框图

┌─────────┐    ┌──────────┐    ┌────────────┐    ┌──────────┐    ┌─────────┐
│ 主控 I2S│───▶│ J1 接口 │───▶│ TVS + 去耦 │───▶│ MAX98357A│───▶│ 扬声器 │
│ BCLK │ │ 7P 排针 │ │ D1 + C1/C2 │ │ BTL 输出 │ │ 4 Ω/8 Ω│
│ LRCLK │ └──────────┘ └────────────┘ │ + C3/C4 │ └─────────┘
│ DIN │ └──────────┘
│ SD │
└─────────┘

原理图设计要点
0

电源网络设计

VCC 网络由 J1-Pin1 进入后,分为三路:

  1. 保护支路:D1(TVS)跨接于 VCC 与 GND,提供反接与浪涌保护;
  2. 储能支路:C1(10 µF)作为大容量储能电容,抑制低频纹波;
  3. 去耦支路:C2(100 nF)作为高频去耦电容,抑制开关噪声;

输出滤波网络

数据手册第 5.2 节"Application Information / Output Filtering"推荐在每根 BTL 输出端串接 30 Ω @ 100 MHz 磁珠并接 220 pF 至 GND,构成 LC 二阶低通滤波器,用于抑制 D 类开关噪声(载波频率 330 kHz)的高次谐波。

本设计出于 BOM 极简化考虑,省略磁珠,仅保留 C3(220 pF)与 C4(220 pF)两个电容,分别接于 OUTP 与 OUTN 至 GND,构成 RC 一阶低通滤波。截止频率计算:

f_c = 1 / (2π × R_L × C) = 1 / (2π × 4 Ω × 220 pF) ≈ 181 kHz

该截止频率高于音频带宽(20 Hz ~ 20 kHz)一个数量级,远低于 D 类开关频率(330 kHz),可有效衰减载波而不损失音频分量。便携 2 W 输出等级下,4 Ω 扬声器本身阻抗在中高频段已接近 30 Ω 量级,磁珠损耗相对音频信号已不可忽略,故省略磁珠在成本与性能间取得平衡。

PCB 设计要点
0

布局原则

按"信号流最短、电源回路最小"原则进行分区布局:

区域

内容

输入区

J1(I2S + 电源接口)

保护区

D1(TVS)

储能去耦区

C1、C2

核心区

U1(MAX98357A)

输出滤波区

C3、C4

输出区

P1(扬声器接口)

地平面规划

本设计采用单点接地(Single-Point Ground)方案,不区分功率地与模拟地。原因如下:

  1. MAX98357A 内部已对功率地与信号地进行分区设计(数据手册第 4.2 节"Functional Diagram");
  2. 单电源供电(无独立模拟电源),无需额外隔离;
  3. 便携 2 W 等级下大电流回路面积已通过 PCB 布局控制在 < 0.5 cm²。

底层为完整 GND 铺铜,与顶层通过过孔阵列连通。

散热设计

MAX98357A 的散热路径为:芯片结 → 封装内部 → EP 焊盘 → 顶层铺铜 → 过孔阵列 → 底层铺铜 → 环境空气。

最终效果:
0

实物图:
0

四、测试效果

我们这里主要用到的是I2S的驱动设计,使用arduino IDE+ESP32 C5开发板实现的驱动设计,使用的是DFrobot的驱动库实现,实际连接如下:
0

由于驱动扬声器的呻吟效果不好实现,这里我们主要通过驱动配置,让MAX98357有输出,实际上就是通过这个模块把数字信号转换成模拟驱动信号,这里我们使用的驱动代码如下:

#include <Arduino.h>  
#include "driver/i2s.h"

// I2S 配置参数
#define I2S_BCLK 5
#define I2S_LRC 4
#define I2S_DOUT 2

// 音频参数
#define SAMPLE_RATE 44100
#define SAMPLE_BITS 16
#define BUFFER_SIZE 1024

// 生成正弦波测试音频
void generateSineWave(int16_t* buffer, size_t samples, float frequency, float volume) {
static float phase = 0.0;
float phaseIncrement = 2 * PI * frequency / SAMPLE_RATE;

for (size_t i = 0; i < samples; i++) {
buffer[i] = volume * sin(phase) * 32767; // 16位有符号整数范围
//Serial.println(buffer[i]);
phase += phaseIncrement;
if (phase >= 2 * PI) phase -= 2 * PI;
}
}


void setup() {
Serial.begin(921600);

// 配置 I2S
i2s_config_t i2s_config = {
.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
.sample_rate = SAMPLE_RATE,
.bits_per_sample = (i2s_bits_per_sample_t)SAMPLE_BITS,
.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
.communication_format = I2S_COMM_FORMAT_STAND_I2S,
//.communication_format = (i2s_comm_format_t)(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB),
.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
.dma_buf_count = 4,
.dma_buf_len = BUFFER_SIZE,
.use_apll = false
};

i2s_pin_config_t pin_config = {
.bck_io_num = I2S_BCLK,
.ws_io_num = I2S_LRC,
.data_out_num = I2S_DOUT,
.data_in_num = I2S_PIN_NO_CHANGE
};

// 初始化 I2S
i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
i2s_set_pin(I2S_NUM_0, &pin_config);
}

void loop() {
int16_t audioBuffer[BUFFER_SIZE];

// 生成 1000Hz 正弦波
generateSineWave(audioBuffer, BUFFER_SIZE, 100, 0.1);

// 通过 I2S 发送音频数据
size_t bytesWritten;
i2s_write(I2S_NUM_0, audioBuffer, sizeof(audioBuffer), &bytesWritten, portMAX_DELAY);
}

实际上我们在输出端测得的波形就是一个PWM类似的波形:
0

五、总结

本次 D 类音频功放模块设计,从选型到 PCB 落地,最深的体会是"datasheet 要逐字读、热焊盘要打满过孔、BTL不得碰系统地" 这三件硬件设计基本功。选择MAX98357AETE+T 的核心理由是 I2S 直驱省掉 DAC——省一颗 PCM5101A,BOM成本与PCB面积双降,且片上集成升压、单电源即可驱动4 Ω扬声器,非常贴合便携路线定位。很多芯片都支持I2S的输出,还是非常方便的。

附件下载
GROVE-audio-D.epro
ESP32-C5-I2S.zip
团队介绍
无
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号