esp32s3+es8388驱动问题 (BSP-510)
welkinchan opened this issue · 0 comments
welkinchan commented
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
- 在跑如下录音与语音播放的例程的时候,功能无法正常实现。历程项目为:https://github.com/espressif/esp-bsp/tree/master/examples/audio
- 由于korvo2配置的默认音频芯片为es8311,而我的板子用的时es8388芯片,为了实现 es8388的音频驱动,将工程代码更改为使用bsp中的esp32_lyrat中的es8388的驱动代码。
- 例程跑起来以后,板子上只有一个麦克风能够正常播放音乐,并且录音无法正常工作。
- 备注:功能函数代码本身应该是没问题的,因为更改驱动后,代码可以在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.