# max98357 **Repository Path**: blue_serial/max98357 ## Basic Information - **Project Name**: max98357 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-20 - **Last Updated**: 2026-04-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 这是一个测试max89357的示例 ### 引脚定义 ``` // ==================== 引脚定义 ==================== #define I2S_NUM I2S_NUM_0 #define BCLK_GPIO 21 // BCLK 引脚,输出 #define WS_GPIO 47 // LRC 引脚,输出 #define DOUT_GPIO 48 // DIN 引脚,输出(MAX89357的输入,ESP32的输出) ``` ### ```c void play_wav_file(void) { // 跳过 WAV 文件头 44 字节 const uint8_t *audio_data = test_wav_start + 44; size_t total_len = test_wav_end - test_wav_start - 44; size_t bytes_written; size_t buffer_size = 960; // 每次只播放 1KB,安全稳定 ESP_LOGI(TAG, "WAV总数据长度: %d 字节", total_len); while (1) { size_t offset = 0; // 循环分段播放,不会爆内存,支持任意大文件 while (offset < total_len) { size_t play_len = buffer_size; // 最后一段不足缓冲区时,只播放剩余长度 if (offset + buffer_size > total_len) { play_len = total_len - offset; } // 分段写入 I2S → 关键!不会卡、不会爆内存 i2s_channel_write(tx_chan, audio_data + offset, play_len, &bytes_written, portMAX_DELAY); vTaskDelay(pdMS_TO_TICKS(1)); // 添加微小延时避免过载 实际还是有破音,怎们解决??? offset += play_len; } ESP_LOGI(TAG, "一曲播放完成,循环播放..."); } } ```