我最近在学习 ESP32 的音频播放功能,编写了一个简单的音频播放Demo。
在Demo中,ESP32 通过 SPI
接口读取 SD 卡中的 WAV 文件,利用 I2S
,将音频数据传递给 MAX98357A 放大器进行播放。
- ESP32 开发板
- MAX98357A I2S 数字放大器
- 扬声器或耳机
- 连接线
- ESP-IDF 开发框架
- C 编程环境
ESP32_MAX98357A_PLAY_WAV_Demo/
├── main/
│ └── main.c
├── README.md
└── ...
将 ESP32 与 MAX98357A 连接如下:
- I2S0_BCLK (GPIO 19) -> BCLK
- I2S0_WS (GPIO 20) -> WS
- I2S0_DO (GPIO 18) -> DIN
- I2S0_DI (-1) -> 不连接
- 电源和地线 -> 按照 MAX98357A 模块的引脚说明连接
- 设置 ESP-IDF 环境:确保已正确安装 ESP-IDF 并配置环境变量。
- 克隆项目代码:
git clone https://github.com/ClarkWain/ESP32_MAX98357A_PLAY_WAV_Demo cd ESP32_MAX98357A_PLAY_WAV_Demo
- 配置项目:
idf.py menuconfig
- 设置串口端口、波特率等参数。
- 编译并烧录:
idf.py build idf.py flash
- 监视输出:
idf.py monitor
- 在 SD 卡根目录放置一个名为
test.wav
的音频文件。 - 通过
idf.py build && idf.py flash
烧录程序到 ESP32,随后运行。 - 使用
idf.py monitor
观察输出日志,确认播放过程正常。 - 若需要播放其他文件或修改接口参数,可在
main.c
中进行相应调整。
- 确保 WAV 文件为标准 16 位或 24 位音频格式,并与
main.c
中的采样率及通道数设置匹配。 - 如果播放出现噪音或中断,请检查引脚连接及 DMA 缓冲区设置。