由于官方example为针对Esp32_LYRAT开发板的,因此底层需根据板子IO进行重定义:(后续案例使用该定义文件)
官方由于使用menuconfig配置对应V4.2或V4.3的板子驱动,因此根据板子也进行了板层驱动定义:
1.esp-adfcomponentsaudio_hal目录下,Kconfig.projbuild:(添加ESP_LYRAT_LLW变量)
1 menu "Audio HAL" 2 3 choice AUDIO_BOARD 4 prompt "Audio board" 5 default ESP_LYRAT_V4_3_BOARD 6 help 7 Select an audio board to use with the ESP-ADF 8 9 config ESP_LYRAT_V4_3_BOARD 10 bool "ESP32-Lyrat V4.3" 11 config ESP_LYRAT_V4_2_BOARD 12 bool "ESP32-Lyrat V4.2" 13 config ESP_LYRAT_LLW 14 bool "ESP32-Lyrat LLW" 15 endchoice 16 17 endmenu
2.进入app目录下,sdkconfig:(配置menuconfig菜单)
1 # 2 # Audio HAL 3 # 4 CONFIG_ESP_LYRAT_V4_3_BOARD= 5 CONFIG_ESP_LYRAT_V4_2_BOARD= 6 CONFIG_ESP_LYRAT_LLW=y
3.配置驱动文件,esp-adfcomponentsaudio_haloard目录下,board.d.h:
1 #ifdef CONFIG_ESP_LYRAT_V4_3_BOARD 2 #include "lyrat_v4_3_board.h" 3 #endif 4 5 #ifdef CONFIG_ESP_LYRAT_V4_2_BOARD 6 #include "lyrat_v4_2_board.h" 7 #endif 8 9 #ifdef CONFIG_ESP_LYRAT_LLW 10 #include "lyrat_llw.h" 11 #endif
4.esp-adfcomponentsaudio_haloard目录下,拷贝一份lyrat_v4_3_board.h,后改名为
lyrat_llw.h,根据实际硬件重定义(主要是GPIO的分配)
1 #ifndef _AUDIO_LYRAT_LLW_H_ 2 #define _AUDIO_LYRAT_LLW_H_ 3 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 8 /* SD card related */ 9 #define SD_CARD_INTR_GPIO GPIO_NUM_26 10 #define SD_CARD_INTR_SEL GPIO_SEL_26 11 #define SD_CARD_OPEN_FILE_NUM_MAX 5 12 13 #define GPIO_AUXIN_DETECT 21 14 15 //#define GPIO_HEADPHONE_DETECT 19 16 17 /* LED indicator */ 18 #define GPIO_LED_BLUE 25 19 20 /* I2C gpios */ 21 #define IIC_CLK 16 22 #define IIC_DATA 17 23 24 /* PA */ 25 //#define GPIO_PA_EN GPIO_NUM_21 26 //#define GPIO_SEL_PA_EN GPIO_SEL_21 27 28 /* Press button related */ 29 //#define GPIO_SEL_REC GPIO_SEL_36 //SENSOR_VP 30 //#define GPIO_SEL_MODE GPIO_SEL_39 //SENSOR_VN 31 //#define GPIO_REC GPIO_NUM_36 32 //#define GPIO_MODE GPIO_NUM_39 33 34 /* Touch pad related */ 35 #define TOUCH_SEL_SET TOUCH_PAD_SEL9 36 #define TOUCH_SEL_PLAY TOUCH_PAD_SEL8 37 #define TOUCH_SEL_VOLUP TOUCH_PAD_SEL7 38 #define TOUCH_SEL_VOLDWN TOUCH_PAD_SEL1 39 #define TOUCH_SET TOUCH_PAD_NUM9 40 #define TOUCH_PLAY TOUCH_PAD_NUM8 41 #define TOUCH_VOLUP TOUCH_PAD_NUM7 42 #define TOUCH_VOLDWN TOUCH_PAD_NUM1 43 44 /* I2S gpios */ 45 #define IIS_SCLK 19 46 #define IIS_LCLK 23 47 #define IIS_DSIN 18 48 #define IIS_DOUT 5 49 50 #ifdef __cplusplus 51 } 52 #endif 53 54 #endif
官方源码(esp-adfexamplesplayerpipeline_sdcard_mp3),sdcard使用1线SDIO模式,所以只用到D0数据线(需外部上拉电路),(由于硬件D0线与GPIO2(strapping)共用,由于下载模式时,该电位需为低电平,所以与sdcard驱动有冲突,需注意)。
固件下载后,需要准备一张sdcard,并在sdcard根目录拷贝一个test.mp3文件。
正常的话,重启后,系统 播放sdcard的test.mp3文件。