基本配置:
1. ESP-IDF版本5.5.1,使用最新的ESP-ADF(20250915)里的Demo例程:play_mp3_control,使用自己的板子ESP32-KORVO_V1.1,而不是ADF里支持的样板,那就需要先配置成用户自己的板子:
idf.py menuconfig ->
My Audio Board -> 必须选择上
Audio HAL -> Audio board -> Custom audio board 选择上
这两个必须同时选择上,否则会运行选中的Demo板配置。
2. 配置my_board_v1_0文件夹下的四个文件即可。根据实际的原理图,配置Codec芯片ES8311的IIC通信引脚,在board_pins_config.c文件里,配置get_i2c_pins()里的IIC引脚。
3. 配置Codec芯片ES8311的IIS引脚,在board_pins_config.c文件里,配置get_i2s_pins()里的IIS引脚。注意:ES8311的7脚ASDOUT对应的IIS信号为i2s_config->data_in_num,芯片的9脚DSDIN对应的IIS信号为i2s_config->data_out_num.
4. 无需配置ES7210等ADC芯片,此项目直接从Flash里读取现成的MP3文件,然后从ES8311直接输出音频,不支持音频输入。
更新MP3音频文件:
1. 将已经下载的mp3格式文件meme.mp3放在已经有mp3文件的目录(main)里,不用删除源文件;
2. 更改main文件里的CmakeList.txt文件内容,键meme.mp3添加到下面的设置里:
set(COMPONENT_EMBED_TXTFILES meme.mp3 music-16b-2c-8000hz.mp3 music-16b-2c-22050hz.mp3 music-16b-2c-44100hz.mp3)
备注:set(COMPONENT_EMBED_TXTFILES.....)的功能是:ESP-IDF 的构建系统会自动将指定的文件(如你的 MP3 文件)编译进固件,并生成可在 C 代码中访问的符号,无需手动使用 objcopy 工具。这些文件会被存储在固件的只读数据段(.rodata)中,程序运行时可直接通过内存地址访问,适合嵌入音频、配置文件、二进制资源等。
ESP-IDF 会为每个嵌入的文件自动生成 3 个符号(类似 objcopy 的机制),格式为:
-
_binary_<文件名>_<后缀>_start:文件数据的起始地址 -
_binary_<文件名>_<后缀>_end:文件数据的结束地址(最后一个字节的下一位) -
_binary_<文件名>_<后缀>_size:文件大小(字节数)
文件名处理规则:文件名中的特殊字符(如 -、.)会被替换为 _。例如 music-16b-2c-8000hz.mp3 对应的符号会自动转换为:
_binary_music_16b_2c_8000hz_mp3_start_binary_music_16b_2c_8000hz_mp3_end_binary_music_16b_2c_8000hz_mp3_size
3. 在C文件中引用MP3文件:
extern const uint8_t lr_mp3_start[] asm("_binary_meme_mp3_start");
extern const uint8_t lr_mp3_end[] asm("_binary_meme_mp3_end");
2222

被折叠的 条评论
为什么被折叠?



