由於官方example為針對Esp32_LYRAT開發板的,因此底層需根據板子IO進行重定義:(后續案例使用該定義文件)
官方由於使用menuconfig配置對應V4.2或V4.3的板子驅動,因此根據板子也進行了板層驅動定義:
1.esp-adf\components\audio_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-adf\components\audio_hal\board目錄下,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-adf\components\audio_hal\board目錄下,拷貝一份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-adf\examples\player\pipeline_sdcard_mp3),sdcard使用1線SDIO模式,所以只用到D0數據線(需外部上拉電路),(由於硬件D0線與GPIO2(strapping)共用,由於下載模式時,該電位需為低電平,所以與sdcard驅動有沖突,需注意)。
固件下載后,需要准備一張sdcard,並在sdcard根目錄拷貝一個test.mp3文件。
正常的話,重啟后,系統 播放sdcard的test.mp3文件。