• 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文件。

  • 相关阅读:
    追寻缺失的大学精神 一个民族需要关注天空的人
    图论简介
    18个分形图形的GIF动画演示
    平行宇宙
    eclipse经常出现——未响应!!!
    单例模式
    Java内存区域
    编译与解释(java)
    正则表达式判断QQ号格式是否正确
    正则表达式判断手机号格式是否正确
  • 原文地址:https://www.cnblogs.com/llw2017/p/9613751.html
Copyright © 2020-2023  润新知