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封装,价格上也不贵!!!非常适合使用在项目中。

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

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

相关推荐
逐步前行1 小时前
STM32_DMA_寄存器操作
stm32·单片机·嵌入式硬件
Funing72 小时前
无法打开 源 文件 “esp_err.h“
嵌入式硬件·esp32
Hello World . .2 小时前
51单片机基础外设:中断、定时器/计数器(PWM控制蜂鸣器、电机)
单片机·嵌入式硬件·51单片机
国科安芯2 小时前
地面能躲过辐射吗?什么又是软错误或者硬故障呢?
硬件工程
WangLanguager3 小时前
foc最终要求的是相电压,还是线电压
单片机
LCG元3 小时前
基于STM32CubeMX的HAL库串口通信与DMA传输深度优化
stm32·单片机·嵌入式硬件
研究点啥好呢4 小时前
3月22日GitHub热门项目推荐|网页浏览,何须手动
人工智能·python·开源·github
嵌入小生0074 小时前
硬件 --- GPIO/中断/定时器/蜂鸣器
单片机·嵌入式硬件·定时器·pwm·gpio·蜂鸣器·中断
搜佛说4 小时前
下一代操作系统 与现在的操作系统 ,相差几何
开源
forAllforMe5 小时前
LAN9252 从机模式寄存器的配置代码示例
stm32·单片机·嵌入式硬件