基本配置:   

        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");

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐