MAX98357A_音频输出测试

提示:本文内容仅供学习参考。Author: Jonnie Walker CGC

目录

一、Max98357A是什么?

二、测试步骤

1.硬件

2.软件

总结


一、Max98357A是什么?

MAX98357A/MAX98357B 是 Maxim Integrated(现为 Analog Devices 旗下)生产的一款小型、低成本、数字 PCM 输入式 D 类音频放大器,具有接近 AB 类放大器的音频性能,同时具备 D 类放大器的高效率。

主要特性概览:

  1. 高效能 D 类输出

    • 效率高达 92%(8Ω负载,1W输出)

    • 无需外部输出滤波器(滤波less 设计)

  2. 数字音频接口灵活

    • MAX98357A 支持 I²S 格式

    • MAX98357B 支持 左对齐(Left-Justified) 格式

    • 两者均支持 TDM 格式(最多8通道)

    • 支持 8kHz 至 96kHz 采样率

    • 支持 16/24/32 位数据宽度

  3. 无需外部 MCLK

    • 自动识别时钟方案,简化设计
  4. 低功耗与高集成度

    • 静态电流仅 2.4mA

    • 支持关机模式(<0.6µA)

    • 内置点击与爆音抑制电路

  5. 电源与保护特性

    • 单电源供电:2.5V 至 5.5V

    • 输出功率:3.2W(4Ω,5V)

    • 具备短路保护与热保护

    • 高 PSRR(77dB @ 1kHz)

  6. 封装小巧

    • 提供 9 引脚 WLP(1.345mm × 1.435mm)和 16 引脚 TQFN(3mm × 3mm)封装
  7. 增益可调

    • 在 I²S/左对齐模式下支持 5 档增益(3dB 至 15dB)

    • TDM 模式下固定为 12dB

  8. EMI 抑制

    • 采用扩展频谱调制与边沿控制技术,降低电磁干扰

二、测试步骤

1.硬件

图1

以上为本次测试的使用的硬件原理图。

图2

图2是实体封装

2.软件

代码如下(示例):

cpp 复制代码
/**
 * @file I2S_T.ino
 * @author Jonnie walker iTEM  (CGC)
 * @brief  
 * @version 0.1
 * @date 2025-02-04
 * 
 * @copyright Copyright (c) 2025
 * 
 * 描述:以下为max98357A测试程序
 * 使用控制器ESP32S3进行测试的。
 * 
 */

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

// I2S配置引脚
//ESP32S3------------------/
//#define I2S_BCLK   17   
//#define I2S_DIN    18 
//#define I2S_LRCLK  16  

//esp32s3--------1.85----------/
#define I2S_BCLK   34   
#define I2S_DIN    33 
#define I2S_LRCLK  35  





// I2S缓冲区大小
#define I2S_BUFFER_SIZE 512


// 音调频率(Hz)和持续时间(ms)的数组
const int melody[] = {
    262, 250, 294, 250, 330, 250, 349, 250, 392, 500, 0, 250, 392, 500,
    349, 250, 330, 250, 294, 250, 262, 500, 0, 250, 262, 500, 294, 500,
    330, 500, 349, 500, 392, 1000
};


// I2S初始化
void setupI2S() {
  i2s_config_t i2s_config = {
      .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
      .sample_rate = 16000,
      .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
      .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,
      .communication_format = I2S_COMM_FORMAT_I2S_MSB,
      .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
      .dma_buf_count = 8,
      .dma_buf_len = I2S_BUFFER_SIZE,
      .use_apll = false,
      .tx_desc_auto_clear = true,
      .fixed_mclk = 0,
  };


  i2s_pin_config_t pin_config = {
      .bck_io_num = I2S_BCLK,
      .ws_io_num = I2S_LRCLK,
      .data_out_num = I2S_DIN ,
      .data_in_num = I2S_PIN_NO_CHANGE,
  };


  // 初始化I2S
  if (i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL) != ESP_OK) {
    Serial.println("I2S驱动初始化失败!");
    while (true);
  }


  if (i2s_set_pin(I2S_NUM_0, &pin_config) != ESP_OK) {
    Serial.println("I2S引脚设置失败!");
    while (true);
  }


  Serial.println("I2S初始化成功");
}


// 播放一个音调
void playTone(int frequency, int duration) {
  if (frequency == 0) {
    delay(duration); // 休止符
    return;
  }


  const int sampleRate = 16000; // 采样率
  const int sampleCount = (sampleRate * duration) / 1000; // 样本总数
  const float amplitude = 1.0 * INT16_MAX; // 振幅(50%)


  for (int i = 0; i < sampleCount; i++) {
    int16_t sample = (int16_t)(amplitude * sin(2.0 * PI * frequency * i / sampleRate));
    size_t bytes_written = 0;
    i2s_write(I2S_NUM_0, &sample, sizeof(sample), &bytes_written, portMAX_DELAY);
  }
}


void setup() {
  Serial.begin(115200);
  setupI2S();


  Serial.println("开始播放《爱丽丝》的旋律");
  for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i += 2) {
    int frequency = melody[i];
    int duration = melody[i + 1];
    playTone(frequency, duration);
  }
  Serial.println("旋律播放完成");
}


void loop() {
  // 主循环无操作
}

使用ArduinoIDE将程序编译下载到ESP32S3启动就会有简单声音播放!程序是非常简单的!


总结

通过此测试过程能让我们快速掌握MAX98357使用情况。在设计电路时有助于参考。此小封装max98357焊接有点麻烦BGA封装,价格上也不贵!!!非常适合使用在项目中。

注:部分内容来自官方文件。

非常感谢你能看到这里,如果文章可以的话非常感谢你的支持!

相关推荐
逐步前行6 小时前
STM32_标准库结构
stm32·单片机·嵌入式硬件
猫头虎7 小时前
如何使用Docker部署OpenClaw汉化中文版?
运维·人工智能·docker·容器·langchain·开源·aigc
不做无法实现的梦~7 小时前
PX4各个模块的作用(3)
linux·stm32·嵌入式硬件·机器人·自动驾驶
清风6666667 小时前
基于单片机的喷漆机器人自动控制系统
单片机·嵌入式硬件·机器人·毕业设计·课程设计·期末大作业
一只大侠的侠7 小时前
Flutter开源鸿蒙跨平台训练营 Day 15React Native Formik 表单实战
flutter·开源·harmonyos
不能跑的代码不是好代码7 小时前
STM32独立看门狗(IWDG)知识点及标准库使用指南
stm32·嵌入式硬件
yumgpkpm7 小时前
预测:2026年大数据软件+AI大模型的发展趋势
大数据·人工智能·算法·zookeeper·kafka·开源·cloudera
晚霞的不甘7 小时前
Flutter for OpenHarmony实现 RSA 加密:从数学原理到可视化演示
人工智能·flutter·计算机视觉·开源·视觉检测
程序员良许7 小时前
嵌入式处理器架构
后端·单片机·嵌入式