espressif/esp-bsp

esp32s3+es8388驱动问题 (BSP-510)

welkinchan opened this issue · 0 comments

Board

ESP32-S3-Korvo-2 V3.0

Hardware Description

将Korvo-2 V3.0的板子的es8311音频芯片以及es7210换成了es8388,并且使用模拟咪头作为麦克风。
另外,把板子上LCD以及摄像头相关的器件都删掉了。
电路图

IDE Name

esp-idf 5.1.0

Operating System

windows10

Description

  1. 在跑如下录音与语音播放的例程的时候,功能无法正常实现。历程项目为:https://github.com/espressif/esp-bsp/tree/master/examples/audio
  2. 由于korvo2配置的默认音频芯片为es8311,而我的板子用的时es8388芯片,为了实现 es8388的音频驱动,将工程代码更改为使用bsp中的esp32_lyrat中的es8388的驱动代码。
  3. 例程跑起来以后,板子上只有一个麦克风能够正常播放音乐,并且录音无法正常工作。
  4. 备注:功能函数代码本身应该是没问题的,因为更改驱动后,代码可以在esp32s3box3上正常跑起来。所以推测问题应该出在驱动部分。

Sketch

1. 运行bsp项目的audio例程,为了实现es8388的音频驱动,使用了bsp中的esp32_lyrat的es8388的驱动代码。并且,把esp32_lyrat.h中的引脚定义按照我的板子上的引脚定义就行了变更(主要是音频I2S以及部分按键的引脚)。
2. 由于默认esp32_lyrat的默认支持芯片为esp32,于是将cmake相关代码以及target对象变更为esp32s3,编译与烧录均成功。
3. 代码运行后,只有一个麦克风可以正常播放音乐,并且麦克风无法录音,录音文件播出后都是沙沙声。
4. 代码都是基于原来的工程代码进行排列组合,部分主要变更包括:

=========================================================
1. esp32_lyrat.h引脚定义:

#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0)
#include "driver/i2s.h"
#else
#include "driver/i2s_std.h"
#endif
/**************************************************************************************************
 *  BSP Capabilities
 **************************************************************************************************/

#define BSP_CAPS_DISPLAY        0
#define BSP_CAPS_TOUCH          0
#define BSP_CAPS_BUTTONS        1
#define BSP_CAPS_AUDIO          1
#define BSP_CAPS_AUDIO_SPEAKER  1
#define BSP_CAPS_AUDIO_MIC      1
#define BSP_CAPS_LED            1
#define BSP_CAPS_SDCARD         1
#define BSP_CAPS_IMU            0


//cwg===0615
#define GPIO_NUM_45 45
#define GPIO_NUM_48 48
#define GPIO_NUM_22 22

/**************************************************************************************************
 *  Board pinout
 **************************************************************************************************/
// /* I2C */
// #define BSP_I2C_SCL           (GPIO_NUM_23)
// #define BSP_I2C_SDA           (GPIO_NUM_18)

// cwg
/* I2C */
#define BSP_I2C_SCL           (GPIO_NUM_18)
#define BSP_I2C_SDA           (GPIO_NUM_17)



// /* Audio */
// #define BSP_I2S_SCLK          (GPIO_NUM_5)
// #define BSP_I2S_MCLK          (GPIO_NUM_0)
// #define BSP_I2S_LCLK          (GPIO_NUM_25)
// #define BSP_I2S_DOUT          (GPIO_NUM_26)
// #define BSP_I2S_DSIN          (GPIO_NUM_35)  // From ADC ES8388
// #define BSP_POWER_AMP_IO      (GPIO_NUM_21)

// cwg=0420
/* Audio */
#define BSP_I2S_SCLK          (GPIO_NUM_9) // >i2s_sclk 4,5
#define BSP_I2S_MCLK          (GPIO_NUM_16) // >i2s_mclk 4,5
#define BSP_I2S_LCLK          (GPIO_NUM_45) // >i2s_lrck 3,4,5
#define BSP_I2S_DOUT          (GPIO_NUM_8) // To Codec ES8311  // >i2s_codec_dsdin 5
#define BSP_I2S_DSIN          (GPIO_NUM_10) // From ADC ES7210  // >i2s_adc_sdout 4   ???
#define BSP_POWER_AMP_IO      (GPIO_NUM_48) // >pa_ctrl 3,5  ????????????
// #define BSP_MUTE_STATUS       (GPIO_NUM_1)  // >mute_status_l 7   ???




// /* uSD card */
// #define BSP_SD_D0             (GPIO_NUM_2)
// #define BSP_SD_D1             (GPIO_NUM_4)
// #define BSP_SD_D2             (GPIO_NUM_12)
// #define BSP_SD_D3             (GPIO_NUM_13)
// #define BSP_SD_CMD            (GPIO_NUM_15)
// #define BSP_SD_CLK            (GPIO_NUM_14)

//cwg
/* uSD card */
#define BSP_SD_D0             (GPIO_NUM_9)
#define BSP_SD_D1             (GPIO_NUM_13)
#define BSP_SD_D2             (GPIO_NUM_42)
#define BSP_SD_D3             (GPIO_NUM_12)
#define BSP_SD_CMD            (GPIO_NUM_14)
#define BSP_SD_CLK            (GPIO_NUM_11)



/* Buttons */
// #define BSP_BUTTON_REC_IO        (GPIO_NUM_36)
// #define BSP_BUTTON_MODE_IO       (GPIO_NUM_39)
// #define BSP_BUTTON_PLAY_TOUCH    (TOUCH_PAD_NUM8) // GPIO33
// #define BSP_BUTTON_SET_TOUCH     (TOUCH_PAD_NUM9) // GPIO32
// #define BSP_BUTTON_VOLUP_TOUCH   (TOUCH_PAD_NUM7) // GPIO27
// #define BSP_BUTTON_VOLDOWN_TOUCH (TOUCH_PAD_NUM4) // GPIO13

//cwg
/* Buttons */
#define BSP_BUTTON_REC_IO        (GPIO_NUM_36)
#define BSP_BUTTON_MODE_IO       (GPIO_NUM_39)
#define BSP_BUTTON_PLAY_TOUCH    (TOUCH_PAD_NUM8) // GPIO33
#define BSP_BUTTON_SET_TOUCH     (TOUCH_PAD_NUM9) // GPIO32
#define BSP_BUTTON_VOLUP_TOUCH   (TOUCH_PAD_NUM7) // GPIO27
#define BSP_BUTTON_VOLDOWN_TOUCH (TOUCH_PAD_NUM4) // GPIO13







/* Leds */
typedef enum bsp_led_t {
    BSP_LED_GREEN = GPIO_NUM_22,
} bsp_led_t;

#ifdef __cplusplus
extern "C" {
#endif


============================================
2. 工程案例代码中的,idf_component.yml代码更改为:
description: BSP Audio example

dependencies:
  esp32_lyrat:
    override_path: "../../../bsp/esp32_lyrat"

Other Steps to Reproduce

audio_cwg_0616.zip
component-bsp-esp32_lyrat.zip

附件为我目前的代码,供参考。

I have checked existing issues, README.md and ESP32 Forum

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.