play_embed_music

Example of the component espressif/esp_board_manager v0.5.3
# 播放嵌入的 WAV 音乐

- [English](./README.md)

## 例程简介

本例程介绍了如何使用 `esp_board_manager` 初始化 codec,获取设备的句柄,并使用 `esp_codec_dev` 的 API 播放 flash 中的 WAV 格式的音乐。

## 示例创建

### IDF 默认分支

本例程仅支持 IDF release/v5.5 (>=5.5.2) 及 IDF release/v5.4 (>=5.4.3) 分支。

### 准备工作

本例程所需的 WAV 格式的音频文件已经存放在 `main/audio_files` 文件夹中 。

### 编译和下载

编译本例程前需要先确保已配置 ESP-IDF ,如果已配置可跳到下一项配置,如果未配置需要先在 ESP-IDF 根目录运行下面脚本设置编译环境,有关配置和使用 ESP-IDF 完整步骤,请参阅 [《ESP-IDF 编程指南》](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s3/index.html):

```shell
./install.sh
. ./export.sh
```

下面是简略编译步骤:

- 进入播放 Flash 音乐测试工程存放位置

```shell
cd $YOUR_GMF_PATH/packages/esp_board_manager/examples/play_embed_music
```

- 配置 `esp_board_manager` 路径,激活环境(在当前终端下只需要执行一次)

```shell
# Ubuntu and Mac:
export IDF_EXTRA_ACTIONS_PATH=$YOUR_GMF_PATH/packages/esp_board_manager

# Windows PowerShell:
$env:IDF_EXTRA_ACTIONS_PATH = "$YOUR_GMF_PATH/packages/esp_board_manager"

# Windows Command Prompt (CMD):
set IDF_EXTRA_ACTIONS_PATH=$YOUR_GMF_PATH/packages/esp_board_manager
```

- 选择使用的开发板

```shell
idf.py gen-bmgr-config -b esp32_s3_korvo2_v3
```

- 也可以执行以下命令查看支持的开发板列表

```shell
idf.py gen-bmgr-config -l
```

- 编译例程代码

```shell
idf.py build
```

- 烧录程序并运行 monitor 工具来查看串口输出 (替换 PORT 为端口名称):

```shell
idf.py -p PORT flash monitor
```

- 退出调试界面使用 ``Ctrl-]``

## 如何使用例程

### 功能和用法

- 例程开始运行后,将自动播放 flash 中的 `test.wav` 文件。输出如下:

```c
I (918) BMGR_EMBED_SDCARD_MUSIC: Playing embedded music
I (923) PERIPH_I2S: I2S[0] TDM,  TX, ws: 45, bclk: 9, dout: 8, din: 10
I (929) PERIPH_I2S: I2S[0] initialize success: 0x3c1629b0
I (934) DEV_AUDIO_CODEC: DAC is ENABLED
I (938) DEV_AUDIO_CODEC: Init audio_dac, i2s_name: i2s_audio_out, i2s_rx_handle:0x0, i2s_tx_handle:0x3c1629b0, data_if: 0x3fcea7f4
I (950) PERIPH_I2C: I2C master bus initialized successfully
I (960) ES8311: Work in Slave mode
I (963) DEV_AUDIO_CODEC: Successfully initialized codec: audio_dac
I (964) DEV_AUDIO_CODEC: Create esp_codec_dev success, dev:0x3fceaa48, chip:es8311
I (971) BOARD_MANAGER: Device audio_dac initialized
I (976) BOARD_DEVICE: Device handle audio_dac found, Handle: 0x3fce9a7c TO: 0x3fce9a7c
I (983) BMGR_EMBED_SDCARD_MUSIC: Embedded WAV file size: 818920 bytes
I (989) BMGR_EMBED_SDCARD_MUSIC: WAV file info: 48000 Hz, 2 channels, 16 bits
I (996) I2S_IF: channel mode 2 bits:16/16 channel:2 mask:3
I (1002) I2S_IF: TDM Mode 1 bits:16/16 channel:2 sample_rate:48000 mask:3
I (1023) Adev_Codec: Open codec device OK
I (5273) BMGR_EMBED_SDCARD_MUSIC: Embedded WAV file playback completed
I (5273) BOARD_DEVICE: Deinit device audio_dac ref_count: 0 device_handle:0x3fce9a7c
I (5286) BOARD_DEVICE: Device audio_dac config found: 0x3c12f0e4 (size: 92)
I (5286) BOARD_PERIPH: Deinit peripheral i2s_audio_out ref_count: 0
E (5288) i2s_common: i2s_channel_disable(1217): the channel has not been enabled yet
W (5296) PERIPH_I2S: Caution: Releasing TX (0x0).
W (5300) PERIPH_I2S: Caution: RX (0x3c162b64) forced to stop.
E (5306) i2s_common: i2s_channel_disable(1217): the channel has not been enabled yet
I (5313) BOARD_PERIPH: Deinit peripheral i2c_master ref_count: 0
I (5319) PERIPH_I2C: I2C master bus deinitialized successfully
I (5324) BOARD_MANAGER: Device audio_dac deinitialized
I (5329) main_task: Returned from app_main()
```

## 问题解答

1. 如果出现以下错误信息,请执行 `echo $IDF_EXTRA_ACTIONS_PATH` 检查 `esp_board_manager` 路径配置是否正确:

```c
Usage: idf.py gen-bmgr-config [OPTIONS]
Try 'idf.py gen-bmgr-config --help' for help.

Error: No such option: -b
```

2. 如果需要使用自定义的开发板,请参考 [README_CN.md](../../../README_CN.md) 中关于 **自定义板级** 的说明。

To create a project from this example, run:

idf.py create-project-from-example "espressif/esp_board_manager=0.5.3:play_embed_music"

or download archive (~121.90 KB)