esp32-智能语音-mp3(sdcard)

由于官方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文件。

原文地址:https://www.cnblogs.com/llw2017/p/9613751.html