diff --git a/.gitignore b/.gitignore index 176e5c1..bfc369d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ cmake-build-debug build log +# 组件库,配置好idf环境后,运行idf.py reconfigure就会自动生成出来 +managed_components .idea diff --git a/Lib/Audio_Driver/PCM5101.c b/Lib/Audio_Driver/PCM5101.c new file mode 100644 index 0000000..dab1cc7 --- /dev/null +++ b/Lib/Audio_Driver/PCM5101.c @@ -0,0 +1,203 @@ +#include "PCM5101.h" + +static const char *TAG = "AUDIO PCM5101"; + +static i2s_chan_handle_t i2s_tx_chan; +static i2s_chan_handle_t i2s_rx_chan; + +uint8_t Volume = Volume_MAX - 2; +bool Music_Next_Flag = 0; +// static esp_err_t bsp_i2s_write(void *audio_buffer, size_t len, size_t *bytes_written, uint32_t timeout_ms) { // I2S Write Init +// return i2s_channel_write(i2s_tx_chan, (char *)audio_buffer, len, bytes_written, timeout_ms); +// } +static esp_err_t bsp_i2s_write(void *audio_buffer, size_t len, size_t *bytes_written, uint32_t timeout_ms) { + int16_t *samples = (int16_t *)audio_buffer; + size_t sample_count = len / sizeof(int16_t); + + // Calculate the volume scaling factor to convert the volume level from 0-100 to the 0.0-1.0 range + float volume_factor = Volume / 100.0f; + + + for (size_t i = 0; i < sample_count; i++) { + samples[i] = (int16_t)(samples[i] * volume_factor); + } + + return i2s_channel_write(i2s_tx_chan, (char *)audio_buffer, len, bytes_written, timeout_ms); +} +static esp_err_t bsp_i2s_reconfig_clk(uint32_t rate, uint32_t bits_cfg, i2s_slot_mode_t ch) { // I2S Init + esp_err_t ret = ESP_OK; + i2s_std_config_t std_cfg = { + .clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(rate), + .slot_cfg = I2S_STD_PHILIP_SLOT_DEFAULT_CONFIG((i2s_data_bit_width_t)bits_cfg, ch), + .gpio_cfg = BSP_I2S_GPIO_CFG, + }; + ret |= i2s_channel_disable(i2s_tx_chan); + ret |= i2s_channel_reconfig_std_clock(i2s_tx_chan, &std_cfg.clk_cfg); + ret |= i2s_channel_reconfig_std_slot(i2s_tx_chan, &std_cfg.slot_cfg); + ret |= i2s_channel_enable(i2s_tx_chan); + return ret; +} + +static esp_err_t audio_mute_function(AUDIO_PLAYER_MUTE_SETTING setting) { // audio mute function + ESP_LOGI(TAG, "mute setting %d", setting); + return ESP_OK; +} + +static esp_err_t bsp_audio_init(const i2s_std_config_t *i2s_config, i2s_chan_handle_t *tx_channel, i2s_chan_handle_t *rx_channel) { // Audio Init + i2s_chan_config_t chan_cfg = I2S_CHANNEL_DEFAULT_CONFIG(CONFIG_BSP_I2S_NUM, I2S_ROLE_MASTER); + chan_cfg.auto_clear = true; + ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, tx_channel, rx_channel)); + const i2s_std_config_t std_cfg_default = BSP_I2S_DUPLEX_MONO_CFG(22050); + const i2s_std_config_t *p_i2s_cfg = (i2s_config != NULL) ? i2s_config : &std_cfg_default; + if (tx_channel) { + ESP_ERROR_CHECK(i2s_channel_init_std_mode(*tx_channel, p_i2s_cfg)); + ESP_ERROR_CHECK(i2s_channel_enable(*tx_channel)); + } + if (rx_channel) { + ESP_ERROR_CHECK(i2s_channel_init_std_mode(*rx_channel, p_i2s_cfg)); + ESP_ERROR_CHECK(i2s_channel_enable(*rx_channel)); + } + return ESP_OK; +} + +static FILE * Music_File = NULL; +static audio_player_callback_event_t expected_event; +static QueueHandle_t event_queue; +static audio_player_callback_event_t event; + +static void audio_player_callback(audio_player_cb_ctx_t *ctx) { + if (ctx->audio_event == AUDIO_PLAYER_CALLBACK_EVENT_IDLE) { + ESP_LOGI(TAG, "Playback finished"); + Music_Next_Flag = 1; + } + if (ctx->audio_event == expected_event) { + xQueueSend(event_queue, &(ctx->audio_event), 0); + } +} + +void Audio_Init(void) +{ + i2s_std_config_t std_cfg = { + .clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(44100), + .slot_cfg = I2S_STD_PHILIP_SLOT_DEFAULT_CONFIG(I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_STEREO), + .gpio_cfg = BSP_I2S_GPIO_CFG, + }; + esp_err_t ret = bsp_audio_init(&std_cfg, &i2s_tx_chan, &i2s_rx_chan); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to initialize audio: %s", esp_err_to_name(ret)); + return; + } + audio_player_config_t config = { + .mute_fn = audio_mute_function, + .write_fn = bsp_i2s_write, + .clk_set_fn = bsp_i2s_reconfig_clk, + .priority = 3, + .coreID = 1 + }; + ret = audio_player_new(config); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to create audio player: %s", esp_err_to_name(ret)); + return; + } + event_queue = xQueueCreate(1, sizeof(audio_player_callback_event_t)); + if (!event_queue) { + ESP_LOGE(TAG, "Failed to create event queue"); + return; + } + ret = audio_player_callback_register(audio_player_callback, NULL); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to register callback: %s", esp_err_to_name(ret)); + return; + } + if (audio_player_get_state() != AUDIO_PLAYER_STATE_IDLE) { + ESP_LOGE(TAG, "Expected state to be IDLE"); // The player is not idle + return; + } +} +void Play_Music(const char* directory, const char* fileName) +{ + Music_pause(); + const int maxPathLength = 100; + char filePath[maxPathLength]; + if (strcmp(directory, "/") == 0) { + snprintf(filePath, maxPathLength, "%s%s", directory, fileName); + } else { + snprintf(filePath, maxPathLength, "%s/%s", directory, fileName); + } + Music_File = Open_File(filePath); + if (!Music_File) { + ESP_LOGE(TAG, "Failed to open MP3 file: %s", filePath); + return; + } + + expected_event = AUDIO_PLAYER_CALLBACK_EVENT_PLAYING; + esp_err_t ret = audio_player_play(Music_File); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to play audio: %s", esp_err_to_name(ret)); + fclose(Music_File); + return; + } + if (xQueueReceive(event_queue, &event, pdMS_TO_TICKS(100)) != pdPASS) { + ESP_LOGE(TAG, "Failed to receive playing event"); + fclose(Music_File); + return; + } + if (audio_player_get_state() != AUDIO_PLAYER_STATE_PLAYING) { + ESP_LOGE(TAG, "Expected state to be PLAYING"); + fclose(Music_File); + return; + } +} +void Music_resume(void) +{ + if (audio_player_get_state() != AUDIO_PLAYER_STATE_PLAYING){ + expected_event = AUDIO_PLAYER_CALLBACK_EVENT_PLAYING; + esp_err_t ret = audio_player_resume(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to resume audio: %s", esp_err_to_name(ret)); + fclose(Music_File); + return; + } + if (xQueueReceive(event_queue, &event, pdMS_TO_TICKS(100)) != pdPASS) { + ESP_LOGE(TAG, "Failed to receive playing event after resume"); + fclose(Music_File); + return; + } + if (audio_player_get_state() != AUDIO_PLAYER_STATE_PLAYING) { + ESP_LOGE(TAG, "Expected state to be RESUME"); + fclose(Music_File); + return; + } + } +} +void Music_pause(void) +{ + if (audio_player_get_state() == AUDIO_PLAYER_STATE_PLAYING){ + expected_event = AUDIO_PLAYER_CALLBACK_EVENT_PAUSE; + esp_err_t ret = audio_player_pause(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to pause audio: %s", esp_err_to_name(ret)); + fclose(Music_File); + return; + } + if (xQueueReceive(event_queue, &event, pdMS_TO_TICKS(100)) != pdPASS) { + ESP_LOGE(TAG, "Failed to receive pause event"); + fclose(Music_File); + return; + } + if (audio_player_get_state() != AUDIO_PLAYER_STATE_PAUSE) { + ESP_LOGE(TAG, "Expected state to be PAUSE"); + fclose(Music_File); + return; + } + } +} + + +void Volume_adjustment(uint8_t Vol) { + if(Vol > Volume_MAX ) + printf("Audio : The volume value is incorrect. Please enter 0 to 21\r\n"); + else + Volume = Vol; + ESP_LOGI(TAG, "Volume set to %d", Volume); +} diff --git a/Lib/Audio_Driver/PCM5101.h b/Lib/Audio_Driver/PCM5101.h new file mode 100644 index 0000000..b8dc8dd --- /dev/null +++ b/Lib/Audio_Driver/PCM5101.h @@ -0,0 +1,54 @@ +#pragma once + +#include "esp_log.h" +#include "esp_check.h" +#include "unity.h" +#include "audio_player.h" +#include "driver/gpio.h" +#include "freertos/semphr.h" + +#include "SD_MMC.h" + +#define CONFIG_BSP_I2S_NUM 0 + + +#define BSP_I2S_SCLK (GPIO_NUM_48) +#define BSP_I2S_MCLK (GPIO_NUM_NC) +#define BSP_I2S_LCLK (GPIO_NUM_38) +#define BSP_I2S_DOUT (GPIO_NUM_47) +#define BSP_I2S_DSIN (GPIO_NUM_NC) + +#define BSP_I2S_GPIO_CFG \ + { \ + .mclk = BSP_I2S_MCLK, \ + .bclk = BSP_I2S_SCLK, \ + .ws = BSP_I2S_LCLK, \ + .dout = BSP_I2S_DOUT, \ + .din = BSP_I2S_DSIN, \ + .invert_flags = { \ + .mclk_inv = false, \ + .bclk_inv = false, \ + .ws_inv = false, \ + }, \ + } + + +#define BSP_I2S_DUPLEX_MONO_CFG(_sample_rate) \ + { \ + .clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(_sample_rate), \ + .slot_cfg = I2S_STD_PHILIP_SLOT_DEFAULT_CONFIG(I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_MONO), \ + .gpio_cfg = BSP_I2S_GPIO_CFG, \ + } + +#define Volume_MAX 100 +extern bool Music_Next_Flag; +extern uint8_t Volume; +void Audio_Init(void); +void Play_Music(const char* directory, const char* fileName); +void Music_resume(void); +void Music_pause(void); + +uint32_t Music_Duration(void); +uint32_t Music_Elapsed(void); +uint16_t Music_Energy(void); +void Volume_adjustment(uint8_t Volume); \ No newline at end of file diff --git a/dependencies.lock b/dependencies.lock new file mode 100644 index 0000000..6ae631b --- /dev/null +++ b/dependencies.lock @@ -0,0 +1,69 @@ +dependencies: + chmorgan/esp-audio-player: + component_hash: c8ac1998e9af863bc41b57e592f88d1a5791a0f891485122336ddabbf7a65033 + dependencies: + - name: chmorgan/esp-libhelix-mp3 + registry_url: https://components.espressif.com + require: private + version: '>=1.0.0,<2.0.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 1.0.7 + chmorgan/esp-libhelix-mp3: + component_hash: cbb76089dc2c5749f7b470e2e70aedc44c9da519e04eb9a67d4c7ec275229e53 + dependencies: + - name: idf + require: private + version: '>=4.1.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 1.0.3 + espressif/esp-dsp: + component_hash: 3e7bbd487f1357a1d4944d0c85966d049501ea281b8a4c7f93f7cfedd5b7f23d + dependencies: + - name: idf + require: private + version: '>=4.2' + source: + registry_url: https://components.espressif.com + type: service + version: 1.4.12 + espressif/esp-sr: + component_hash: 9b41fd5ae5960c393bfd3559cd6e5fa2a95c0bf833915cebafe57fb8c4e4c396 + dependencies: + - name: espressif/esp-dsp + registry_url: https://components.espressif.com + require: private + version: <=1.5.0 + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 1.9.5 + idf: + source: + type: idf + version: 5.3.2 + lvgl/lvgl: + component_hash: 948bff879a345149b83065535bbc4a026ce9f47498a22881e432a264b9098015 + dependencies: [] + source: + registry_url: https://components.espressif.com/ + type: service + version: 8.3.11 +direct_dependencies: +- chmorgan/esp-audio-player +- chmorgan/esp-libhelix-mp3 +- espressif/esp-sr +- idf +- lvgl/lvgl +manifest_hash: 9bc1eee4314d6f75a0822d5e087c5603182eb609f99c1dd5726d7cea387e4d1d +target: esp32s3 +version: 2.0.0 diff --git a/main/Bionic_sphere.c b/main/Bionic_sphere.c index a951975..8bb9375 100644 --- a/main/Bionic_sphere.c +++ b/main/Bionic_sphere.c @@ -18,5 +18,7 @@ void app_main(void) // pcf85063_test(); - exio_text(); + // exio_text(); + + // audio_test(); } diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 5af1332..8de6a67 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,6 +1,7 @@ idf_component_register(SRCS "Bionic_sphere.c" "../test/driver_test/drivers_test.c" # 测试用例 "../test/EXIO_Test/TCA9554PWR_Test.c" # 测试用例 + "../test/audio_test/audio_test.c" # 测试用例 "../Lib/I2C_Driver/I2C_Driver.c" # IIC底层驱动库 "../Lib/QMI8658/QMI8658.c" # IMU驱动库 "../Lib/BAT_Driver/BAT_Driver.c" # 电池adc驱动库 @@ -8,9 +9,11 @@ idf_component_register(SRCS "Bionic_sphere.c" "../Lib/SD_Card/SD_MMC.c" # SD卡驱动库 "../Lib/PCF85063/PCF85063.c" # RTC驱动库 "../Lib/EXIO/TCA9554PWR.c" # IO拓展库 + "../Lib/Audio_Driver/PCM5101.c" # 音频驱动库(播放) INCLUDE_DIRS "." "../test/driver_test" "../test/EXIO_Test" + "../test/audio_test" "../Lib/I2C_Driver" "../Lib/QMI8658" "../Lib/BAT_Driver" @@ -18,6 +21,7 @@ idf_component_register(SRCS "Bionic_sphere.c" "../Lib/SD_Card" "../Lib/PCF85063" "../Lib/EXIO" + "../Lib/Audio_Driver" PRIV_REQUIRES # 私有依赖 driver bt @@ -25,4 +29,5 @@ idf_component_register(SRCS "Bionic_sphere.c" nvs_flash esp_adc fatfs + unity ) diff --git a/main/idf_component.yml b/main/idf_component.yml new file mode 100644 index 0000000..279ebfa --- /dev/null +++ b/main/idf_component.yml @@ -0,0 +1,6 @@ +dependencies: + idf: ">=4.4" + lvgl/lvgl: "~8.3.0" + chmorgan/esp-audio-player: "==1.0.7" + chmorgan/esp-libhelix-mp3: "==1.0.3" + espressif/esp-sr: "~1.9.4" \ No newline at end of file diff --git a/sdkconfig b/sdkconfig index 0c1b431..0de77d0 100644 --- a/sdkconfig +++ b/sdkconfig @@ -536,6 +536,59 @@ CONFIG_PARTITION_TABLE_OFFSET=0x8000 CONFIG_PARTITION_TABLE_MD5=y # end of Partition Table +# +# ESP Speech Recognition +# +CONFIG_MODEL_IN_FLASH=y +# CONFIG_MODEL_IN_SDCARD is not set +CONFIG_USE_AFE=y +CONFIG_AFE_INTERFACE_V1=y +# CONFIG_USE_NSNET is not set +CONFIG_USE_WAKENET=y +# CONFIG_SR_WN_WN8_ALEXA is not set +CONFIG_SR_WN_WN9_HILEXIN=y +# CONFIG_SR_WN_WN9_XIAOAITONGXUE is not set +# CONFIG_SR_WN_WN9_ALEXA is not set +# CONFIG_SR_WN_WN9_HIESP is not set +# CONFIG_SR_WN_WN9_HIMFIVE is not set +# CONFIG_SR_WN_WN9_NIHAOXIAOZHI_TTS is not set +# CONFIG_SR_WN_WN9_JARVIS_TTS is not set +# CONFIG_SR_WN_WN9_COMPUTER_TTS is not set +# CONFIG_SR_WN_WN9_HEYWILLOW_TTS is not set +# CONFIG_SR_WN_WN9_SOPHIA_TTS is not set +# CONFIG_SR_WN_WN9_NIHAOXIAOXIN_TTS is not set +# CONFIG_SR_WN_WN9_XIAOMEITONGXUE_TTS is not set +# CONFIG_SR_WN_WN9_HIXIAOXING_TTS is not set +# CONFIG_SR_WN_WN9_MYCROFT_TTS is not set +# CONFIG_SR_WN_WN9_HEYPRINTER_TTS is not set +# CONFIG_SR_WN_WN9_XIAOLONGXIAOLONG_TTS is not set +# CONFIG_SR_WN_WN9_MIAOMIAOTONGXUE_TTS is not set +# CONFIG_SR_WN_WN9_HIJOY_TTS is not set +# CONFIG_SR_WN_WN9_HILILI_TTS is not set +# CONFIG_SR_WN_WN9_HITELLY_TTS is not set +# CONFIG_SR_WN_WN9_HEYWANDA_TTS is not set +# CONFIG_SR_WN_WN9_HIMIAOMIAO_TTS is not set +# CONFIG_SR_WN_WN9_XIAOBINXIAOBIN_TTS is not set +# CONFIG_SR_WN_WN9_HAIXIAOWU_TTS is not set +# CONFIG_SR_WN_WN9_ASTROLABE_TTS is not set +# CONFIG_SR_WN_WN9_XIAOYAXIAOYA_TTS2 is not set +# CONFIG_SR_WN_WN9_HIJASON_TTS2 is not set +# CONFIG_SR_WN_WN9_LINAIBAN_TTS2 is not set +# CONFIG_SR_WN_WN9_CUSTOMWORD is not set +# CONFIG_SR_WN_LOAD_MULIT_WORD is not set +CONFIG_USE_MULTINET=y +# CONFIG_SR_MN_CN_NONE is not set +# CONFIG_SR_MN_CN_MULTINET5_RECOGNITION_QUANT8 is not set +CONFIG_SR_MN_CN_MULTINET6_QUANT=y +# CONFIG_SR_MN_CN_MULTINET6_AC_QUANT is not set +# CONFIG_SR_MN_CN_MULTINET7_QUANT is not set +# CONFIG_SR_MN_CN_MULTINET7_AC_QUANT is not set +CONFIG_SR_MN_EN_NONE=y +# CONFIG_SR_MN_EN_MULTINET5_SINGLE_RECOGNITION_QUANT8 is not set +# CONFIG_SR_MN_EN_MULTINET6_QUANT is not set +# CONFIG_SR_MN_EN_MULTINET7_QUANT is not set +# end of ESP Speech Recognition + # # Compiler options # @@ -1239,8 +1292,8 @@ CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES=4 # # Sleep Config # -# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND=y CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU=y CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y @@ -1349,7 +1402,37 @@ CONFIG_PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP=y # # ESP PSRAM # -# CONFIG_SPIRAM is not set +CONFIG_SPIRAM=y + +# +# SPI RAM config +# +# CONFIG_SPIRAM_MODE_QUAD is not set +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_TYPE_AUTO=y +# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set +CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y +CONFIG_SPIRAM_CLK_IO=30 +CONFIG_SPIRAM_CS_IO=26 +# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set +# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set +# CONFIG_SPIRAM_RODATA is not set +CONFIG_SPIRAM_SPEED_80M=y +# CONFIG_SPIRAM_SPEED_40M is not set +CONFIG_SPIRAM_SPEED=80 +# CONFIG_SPIRAM_ECC_ENABLE is not set +CONFIG_SPIRAM_BOOT_INIT=y +# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set +# CONFIG_SPIRAM_USE_MEMMAP is not set +# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set +CONFIG_SPIRAM_USE_MALLOC=y +CONFIG_SPIRAM_MEMTEST=y +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384 +# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set +CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768 +# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set +# CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY is not set +# end of SPI RAM config # end of ESP PSRAM # @@ -1362,9 +1445,9 @@ CONFIG_PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP=y # ESP System Settings # # CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set -CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y -# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set -CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=240 # # Cache config @@ -1502,10 +1585,10 @@ CONFIG_ESP_TIMER_IMPL_SYSTIMER=y CONFIG_ESP_WIFI_ENABLED=y CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 -# CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set -CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y -CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 -CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_STATIC_TX_BUFFER=y +CONFIG_ESP_WIFI_TX_BUFFER_TYPE=0 +CONFIG_ESP_WIFI_STATIC_TX_BUFFER_NUM=16 +CONFIG_ESP_WIFI_CACHE_TX_BUFFER_NUM=32 CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y # CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 @@ -1515,6 +1598,7 @@ CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y CONFIG_ESP_WIFI_TX_BA_WIN=6 CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP_WIFI_RX_BA_WIN=6 +# CONFIG_ESP_WIFI_AMSDU_TX_ENABLED is not set CONFIG_ESP_WIFI_NVS_ENABLED=y CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y # CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set @@ -1607,6 +1691,7 @@ CONFIG_FATFS_API_ENCODING_ANSI_OEM=y CONFIG_FATFS_FS_LOCK=0 CONFIG_FATFS_TIMEOUT_MS=10000 CONFIG_FATFS_PER_FILE_CACHE=y +CONFIG_FATFS_ALLOC_PREFER_EXTRAM=y # CONFIG_FATFS_USE_FASTSEEK is not set CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 # CONFIG_FATFS_IMMEDIATE_FSYNC is not set @@ -1911,6 +1996,7 @@ CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT=y # mbedTLS # CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC is not set # CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set # CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y @@ -2073,6 +2159,8 @@ CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y # CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set # end of Newlib +CONFIG_STDATOMIC_S32C1I_SPIRAM_WORKAROUND=y + # # NVS # @@ -2347,6 +2435,336 @@ CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y # CONFIG_WIFI_PROV_STA_FAST_SCAN is not set # end of Wi-Fi Provisioning Manager + +# +# Audio playback +# +CONFIG_AUDIO_PLAYER_ENABLE_MP3=y +CONFIG_AUDIO_PLAYER_ENABLE_WAV=y +CONFIG_AUDIO_PLAYER_LOG_LEVEL=0 +# end of Audio playback + +# +# DSP Library +# +CONFIG_DSP_OPTIMIZATIONS_SUPPORTED=y +# CONFIG_DSP_ANSI is not set +CONFIG_DSP_OPTIMIZED=y +CONFIG_DSP_OPTIMIZATION=1 +# CONFIG_DSP_MAX_FFT_SIZE_512 is not set +# CONFIG_DSP_MAX_FFT_SIZE_1024 is not set +# CONFIG_DSP_MAX_FFT_SIZE_2048 is not set +CONFIG_DSP_MAX_FFT_SIZE_4096=y +# CONFIG_DSP_MAX_FFT_SIZE_8192 is not set +# CONFIG_DSP_MAX_FFT_SIZE_16384 is not set +# CONFIG_DSP_MAX_FFT_SIZE_32768 is not set +CONFIG_DSP_MAX_FFT_SIZE=4096 +# end of DSP Library + +# +# LVGL configuration +# +CONFIG_LV_CONF_SKIP=y +# CONFIG_LV_CONF_MINIMAL is not set + +# +# Color settings +# +# CONFIG_LV_COLOR_DEPTH_32 is not set +CONFIG_LV_COLOR_DEPTH_16=y +# CONFIG_LV_COLOR_DEPTH_8 is not set +# CONFIG_LV_COLOR_DEPTH_1 is not set +CONFIG_LV_COLOR_DEPTH=16 +# CONFIG_LV_COLOR_16_SWAP is not set +# CONFIG_LV_COLOR_SCREEN_TRANSP is not set +CONFIG_LV_COLOR_MIX_ROUND_OFS=128 +CONFIG_LV_COLOR_CHROMA_KEY_HEX=0x00FF00 +# end of Color settings + +# +# Memory settings +# +# CONFIG_LV_MEM_CUSTOM is not set +CONFIG_LV_MEM_SIZE_KILOBYTES=32 +CONFIG_LV_MEM_ADDR=0x0 +CONFIG_LV_MEM_BUF_MAX_NUM=16 +# CONFIG_LV_MEMCPY_MEMSET_STD is not set +# end of Memory settings + +# +# HAL Settings +# +CONFIG_LV_DISP_DEF_REFR_PERIOD=30 +CONFIG_LV_INDEV_DEF_READ_PERIOD=30 +# CONFIG_LV_TICK_CUSTOM is not set +CONFIG_LV_DPI_DEF=130 +# end of HAL Settings + +# +# Feature configuration +# + +# +# Drawing +# +CONFIG_LV_DRAW_COMPLEX=y +CONFIG_LV_SHADOW_CACHE_SIZE=0 +CONFIG_LV_CIRCLE_CACHE_SIZE=4 +CONFIG_LV_LAYER_SIMPLE_BUF_SIZE=24576 +CONFIG_LV_IMG_CACHE_DEF_SIZE=0 +CONFIG_LV_GRADIENT_MAX_STOPS=2 +CONFIG_LV_GRAD_CACHE_DEF_SIZE=0 +# CONFIG_LV_DITHER_GRADIENT is not set +CONFIG_LV_DISP_ROT_MAX_BUF=10240 +# end of Drawing + +# +# GPU +# +# CONFIG_LV_USE_GPU_ARM2D is not set +# CONFIG_LV_USE_GPU_STM32_DMA2D is not set +# CONFIG_LV_USE_GPU_RA6M3_G2D is not set +# CONFIG_LV_USE_GPU_SWM341_DMA2D is not set +# CONFIG_LV_USE_GPU_NXP_PXP is not set +# CONFIG_LV_USE_GPU_NXP_VG_LITE is not set +# CONFIG_LV_USE_GPU_SDL is not set +# end of GPU + +# +# Logging +# +# CONFIG_LV_USE_LOG is not set +# end of Logging + +# +# Asserts +# +CONFIG_LV_USE_ASSERT_NULL=y +CONFIG_LV_USE_ASSERT_MALLOC=y +# CONFIG_LV_USE_ASSERT_STYLE is not set +# CONFIG_LV_USE_ASSERT_MEM_INTEGRITY is not set +# CONFIG_LV_USE_ASSERT_OBJ is not set +CONFIG_LV_ASSERT_HANDLER_INCLUDE="assert.h" +# end of Asserts + +# +# Others +# +# CONFIG_LV_USE_PERF_MONITOR is not set +# CONFIG_LV_USE_MEM_MONITOR is not set +# CONFIG_LV_USE_REFR_DEBUG is not set +# CONFIG_LV_SPRINTF_CUSTOM is not set +# CONFIG_LV_SPRINTF_USE_FLOAT is not set +CONFIG_LV_USE_USER_DATA=y +# CONFIG_LV_ENABLE_GC is not set +# end of Others + +# +# Compiler settings +# +# CONFIG_LV_BIG_ENDIAN_SYSTEM is not set +CONFIG_LV_ATTRIBUTE_MEM_ALIGN_SIZE=1 +# CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM is not set +# CONFIG_LV_USE_LARGE_COORD is not set +# end of Compiler settings +# end of Feature configuration + +# +# Font usage +# + +# +# Enable built-in fonts +# +# CONFIG_LV_FONT_MONTSERRAT_8 is not set +# CONFIG_LV_FONT_MONTSERRAT_10 is not set +# CONFIG_LV_FONT_MONTSERRAT_12 is not set +CONFIG_LV_FONT_MONTSERRAT_14=y +# CONFIG_LV_FONT_MONTSERRAT_16 is not set +# CONFIG_LV_FONT_MONTSERRAT_18 is not set +# CONFIG_LV_FONT_MONTSERRAT_20 is not set +# CONFIG_LV_FONT_MONTSERRAT_22 is not set +# CONFIG_LV_FONT_MONTSERRAT_24 is not set +# CONFIG_LV_FONT_MONTSERRAT_26 is not set +# CONFIG_LV_FONT_MONTSERRAT_28 is not set +# CONFIG_LV_FONT_MONTSERRAT_30 is not set +# CONFIG_LV_FONT_MONTSERRAT_32 is not set +# CONFIG_LV_FONT_MONTSERRAT_34 is not set +# CONFIG_LV_FONT_MONTSERRAT_36 is not set +# CONFIG_LV_FONT_MONTSERRAT_38 is not set +# CONFIG_LV_FONT_MONTSERRAT_40 is not set +# CONFIG_LV_FONT_MONTSERRAT_42 is not set +# CONFIG_LV_FONT_MONTSERRAT_44 is not set +# CONFIG_LV_FONT_MONTSERRAT_46 is not set +# CONFIG_LV_FONT_MONTSERRAT_48 is not set +# CONFIG_LV_FONT_MONTSERRAT_12_SUBPX is not set +# CONFIG_LV_FONT_MONTSERRAT_28_COMPRESSED is not set +# CONFIG_LV_FONT_DEJAVU_16_PERSIAN_HEBREW is not set +# CONFIG_LV_FONT_SIMSUN_16_CJK is not set +# CONFIG_LV_FONT_UNSCII_8 is not set +# CONFIG_LV_FONT_UNSCII_16 is not set +# CONFIG_LV_FONT_CUSTOM is not set +# end of Enable built-in fonts + +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_8 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_12 is not set +CONFIG_LV_FONT_DEFAULT_MONTSERRAT_14=y +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_16 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_18 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_20 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_22 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_24 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_26 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_28 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_30 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_32 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_34 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_36 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_38 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_40 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_42 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_44 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_46 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_48 is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_12_SUBPX is not set +# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_28_COMPRESSED is not set +# CONFIG_LV_FONT_DEFAULT_DEJAVU_16_PERSIAN_HEBREW is not set +# CONFIG_LV_FONT_DEFAULT_SIMSUN_16_CJK is not set +# CONFIG_LV_FONT_DEFAULT_UNSCII_8 is not set +# CONFIG_LV_FONT_DEFAULT_UNSCII_16 is not set +# CONFIG_LV_FONT_FMT_TXT_LARGE is not set +# CONFIG_LV_USE_FONT_COMPRESSED is not set +# CONFIG_LV_USE_FONT_SUBPX is not set +CONFIG_LV_USE_FONT_PLACEHOLDER=y +# end of Font usage + +# +# Text Settings +# +CONFIG_LV_TXT_ENC_UTF8=y +# CONFIG_LV_TXT_ENC_ASCII is not set +CONFIG_LV_TXT_BREAK_CHARS=" ,.;:-_" +CONFIG_LV_TXT_LINE_BREAK_LONG_LEN=0 +CONFIG_LV_TXT_COLOR_CMD="#" +# CONFIG_LV_USE_BIDI is not set +# CONFIG_LV_USE_ARABIC_PERSIAN_CHARS is not set +# end of Text Settings + +# +# Widget usage +# +CONFIG_LV_USE_ARC=y +CONFIG_LV_USE_BAR=y +CONFIG_LV_USE_BTN=y +CONFIG_LV_USE_BTNMATRIX=y +CONFIG_LV_USE_CANVAS=y +CONFIG_LV_USE_CHECKBOX=y +CONFIG_LV_USE_DROPDOWN=y +CONFIG_LV_USE_IMG=y +CONFIG_LV_USE_LABEL=y +CONFIG_LV_LABEL_TEXT_SELECTION=y +CONFIG_LV_LABEL_LONG_TXT_HINT=y +CONFIG_LV_USE_LINE=y +CONFIG_LV_USE_ROLLER=y +CONFIG_LV_ROLLER_INF_PAGES=7 +CONFIG_LV_USE_SLIDER=y +CONFIG_LV_USE_SWITCH=y +CONFIG_LV_USE_TEXTAREA=y +CONFIG_LV_TEXTAREA_DEF_PWD_SHOW_TIME=1500 +CONFIG_LV_USE_TABLE=y +# end of Widget usage + +# +# Extra Widgets +# +CONFIG_LV_USE_ANIMIMG=y +CONFIG_LV_USE_CALENDAR=y +# CONFIG_LV_CALENDAR_WEEK_STARTS_MONDAY is not set +CONFIG_LV_USE_CALENDAR_HEADER_ARROW=y +CONFIG_LV_USE_CALENDAR_HEADER_DROPDOWN=y +CONFIG_LV_USE_CHART=y +CONFIG_LV_USE_COLORWHEEL=y +CONFIG_LV_USE_IMGBTN=y +CONFIG_LV_USE_KEYBOARD=y +CONFIG_LV_USE_LED=y +CONFIG_LV_USE_LIST=y +CONFIG_LV_USE_MENU=y +CONFIG_LV_USE_METER=y +CONFIG_LV_USE_MSGBOX=y +CONFIG_LV_USE_SPAN=y +CONFIG_LV_SPAN_SNIPPET_STACK_SIZE=64 +CONFIG_LV_USE_SPINBOX=y +CONFIG_LV_USE_SPINNER=y +CONFIG_LV_USE_TABVIEW=y +CONFIG_LV_USE_TILEVIEW=y +CONFIG_LV_USE_WIN=y +# end of Extra Widgets + +# +# Themes +# +CONFIG_LV_USE_THEME_DEFAULT=y +# CONFIG_LV_THEME_DEFAULT_DARK is not set +CONFIG_LV_THEME_DEFAULT_GROW=y +CONFIG_LV_THEME_DEFAULT_TRANSITION_TIME=80 +CONFIG_LV_USE_THEME_BASIC=y +# CONFIG_LV_USE_THEME_MONO is not set +# end of Themes + +# +# Layouts +# +CONFIG_LV_USE_FLEX=y +CONFIG_LV_USE_GRID=y +# end of Layouts + +# +# 3rd Party Libraries +# +# CONFIG_LV_USE_FS_STDIO is not set +# CONFIG_LV_USE_FS_POSIX is not set +# CONFIG_LV_USE_FS_WIN32 is not set +# CONFIG_LV_USE_FS_FATFS is not set +# CONFIG_LV_USE_FS_LITTLEFS is not set +# CONFIG_LV_USE_PNG is not set +# CONFIG_LV_USE_BMP is not set +# CONFIG_LV_USE_SJPG is not set +# CONFIG_LV_USE_GIF is not set +# CONFIG_LV_USE_QRCODE is not set +# CONFIG_LV_USE_FREETYPE is not set +# CONFIG_LV_USE_TINY_TTF is not set +# CONFIG_LV_USE_RLOTTIE is not set +# CONFIG_LV_USE_FFMPEG is not set +# end of 3rd Party Libraries + +# +# Others +# +CONFIG_LV_USE_SNAPSHOT=y +# CONFIG_LV_USE_MONKEY is not set +# CONFIG_LV_USE_GRIDNAV is not set +# CONFIG_LV_USE_FRAGMENT is not set +# CONFIG_LV_USE_IMGFONT is not set +# CONFIG_LV_USE_MSG is not set +# CONFIG_LV_USE_IME_PINYIN is not set +# end of Others + +# +# Examples +# +CONFIG_LV_BUILD_EXAMPLES=y +# end of Examples + +# +# Demos +# +# CONFIG_LV_USE_DEMO_WIDGETS is not set +# CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER is not set +# CONFIG_LV_USE_DEMO_BENCHMARK is not set +# CONFIG_LV_USE_DEMO_STRESS is not set +# CONFIG_LV_USE_DEMO_MUSIC is not set +# end of Demos +# end of LVGL configuration # end of Component config # CONFIG_IDF_EXPERIMENTAL_FEATURES is not set @@ -2579,7 +2997,6 @@ CONFIG_POST_EVENTS_FROM_IRAM_ISR=y CONFIG_GDBSTUB_SUPPORT_TASKS=y CONFIG_GDBSTUB_MAX_TASKS=32 # CONFIG_OTA_ALLOW_HTTP is not set -# CONFIG_ESP_SYSTEM_PD_FLASH is not set CONFIG_ESP32S3_DEEP_SLEEP_WAKEUP_DELAY=2000 CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 CONFIG_ESP32S3_RTC_CLK_SRC_INT_RC=y @@ -2595,11 +3012,13 @@ CONFIG_ESP32_PHY_MAX_TX_POWER=20 # CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y CONFIG_PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP=y -# CONFIG_ESP32S3_SPIRAM_SUPPORT is not set +CONFIG_ESP32S3_SPIRAM_SUPPORT=y +CONFIG_DEFAULT_PSRAM_CLK_IO=30 +CONFIG_DEFAULT_PSRAM_CS_IO=26 # CONFIG_ESP32S3_DEFAULT_CPU_FREQ_80 is not set -CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160=y -# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240 is not set -CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=160 +# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160 is not set +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=240 CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 CONFIG_MAIN_TASK_STACK_SIZE=3584 @@ -2645,10 +3064,10 @@ CONFIG_TIMER_TASK_STACK_SIZE=3584 CONFIG_ESP32_WIFI_ENABLED=y CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 -# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set -CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y -CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 -CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=16 +CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM=32 # CONFIG_ESP32_WIFI_CSI_ENABLED is not set CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y CONFIG_ESP32_WIFI_TX_BA_WIN=6 @@ -2656,6 +3075,7 @@ CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP32_WIFI_RX_BA_WIN=6 CONFIG_ESP32_WIFI_RX_BA_WIN=6 +# CONFIG_ESP32_WIFI_AMSDU_TX_ENABLED is not set CONFIG_ESP32_WIFI_NVS_ENABLED=y CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y # CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set diff --git a/sdkconfig.old b/sdkconfig.old index e1fae28..97f9dd1 100644 --- a/sdkconfig.old +++ b/sdkconfig.old @@ -1239,8 +1239,8 @@ CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES=4 # # Sleep Config # -# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND=y CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU=y CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y @@ -1349,7 +1349,37 @@ CONFIG_PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP=y # # ESP PSRAM # -# CONFIG_SPIRAM is not set +CONFIG_SPIRAM=y + +# +# SPI RAM config +# +# CONFIG_SPIRAM_MODE_QUAD is not set +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_TYPE_AUTO=y +# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set +CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y +CONFIG_SPIRAM_CLK_IO=30 +CONFIG_SPIRAM_CS_IO=26 +# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set +# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set +# CONFIG_SPIRAM_RODATA is not set +CONFIG_SPIRAM_SPEED_80M=y +# CONFIG_SPIRAM_SPEED_40M is not set +CONFIG_SPIRAM_SPEED=80 +# CONFIG_SPIRAM_ECC_ENABLE is not set +CONFIG_SPIRAM_BOOT_INIT=y +# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set +# CONFIG_SPIRAM_USE_MEMMAP is not set +# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set +CONFIG_SPIRAM_USE_MALLOC=y +CONFIG_SPIRAM_MEMTEST=y +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384 +# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set +CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768 +# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set +# CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY is not set +# end of SPI RAM config # end of ESP PSRAM # @@ -1502,10 +1532,10 @@ CONFIG_ESP_TIMER_IMPL_SYSTIMER=y CONFIG_ESP_WIFI_ENABLED=y CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 -# CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set -CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y -CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 -CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_STATIC_TX_BUFFER=y +CONFIG_ESP_WIFI_TX_BUFFER_TYPE=0 +CONFIG_ESP_WIFI_STATIC_TX_BUFFER_NUM=16 +CONFIG_ESP_WIFI_CACHE_TX_BUFFER_NUM=32 CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y # CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 @@ -1515,6 +1545,7 @@ CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y CONFIG_ESP_WIFI_TX_BA_WIN=6 CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP_WIFI_RX_BA_WIN=6 +# CONFIG_ESP_WIFI_AMSDU_TX_ENABLED is not set CONFIG_ESP_WIFI_NVS_ENABLED=y CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y # CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set @@ -1573,9 +1604,9 @@ CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y # FAT Filesystem support # CONFIG_FATFS_VOLUME_COUNT=2 -CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_NONE is not set # CONFIG_FATFS_LFN_HEAP is not set -# CONFIG_FATFS_LFN_STACK is not set +CONFIG_FATFS_LFN_STACK=y # CONFIG_FATFS_SECTOR_512 is not set CONFIG_FATFS_SECTOR_4096=y # CONFIG_FATFS_CODEPAGE_DYNAMIC is not set @@ -1601,9 +1632,13 @@ CONFIG_FATFS_CODEPAGE_437=y # CONFIG_FATFS_CODEPAGE_949 is not set # CONFIG_FATFS_CODEPAGE_950 is not set CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +# CONFIG_FATFS_API_ENCODING_UTF_8 is not set CONFIG_FATFS_FS_LOCK=0 CONFIG_FATFS_TIMEOUT_MS=10000 CONFIG_FATFS_PER_FILE_CACHE=y +CONFIG_FATFS_ALLOC_PREFER_EXTRAM=y # CONFIG_FATFS_USE_FASTSEEK is not set CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 # CONFIG_FATFS_IMMEDIATE_FSYNC is not set @@ -1908,6 +1943,7 @@ CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT=y # mbedTLS # CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC is not set # CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set # CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y @@ -2070,6 +2106,8 @@ CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y # CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set # end of Newlib +CONFIG_STDATOMIC_S32C1I_SPIRAM_WORKAROUND=y + # # NVS # @@ -2576,7 +2614,6 @@ CONFIG_POST_EVENTS_FROM_IRAM_ISR=y CONFIG_GDBSTUB_SUPPORT_TASKS=y CONFIG_GDBSTUB_MAX_TASKS=32 # CONFIG_OTA_ALLOW_HTTP is not set -# CONFIG_ESP_SYSTEM_PD_FLASH is not set CONFIG_ESP32S3_DEEP_SLEEP_WAKEUP_DELAY=2000 CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 CONFIG_ESP32S3_RTC_CLK_SRC_INT_RC=y @@ -2592,7 +2629,9 @@ CONFIG_ESP32_PHY_MAX_TX_POWER=20 # CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y CONFIG_PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP=y -# CONFIG_ESP32S3_SPIRAM_SUPPORT is not set +CONFIG_ESP32S3_SPIRAM_SUPPORT=y +CONFIG_DEFAULT_PSRAM_CLK_IO=30 +CONFIG_DEFAULT_PSRAM_CS_IO=26 # CONFIG_ESP32S3_DEFAULT_CPU_FREQ_80 is not set CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160=y # CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240 is not set @@ -2642,10 +2681,10 @@ CONFIG_TIMER_TASK_STACK_SIZE=3584 CONFIG_ESP32_WIFI_ENABLED=y CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 -# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set -CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y -CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 -CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=16 +CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM=32 # CONFIG_ESP32_WIFI_CSI_ENABLED is not set CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y CONFIG_ESP32_WIFI_TX_BA_WIN=6 @@ -2653,6 +2692,7 @@ CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP32_WIFI_RX_BA_WIN=6 CONFIG_ESP32_WIFI_RX_BA_WIN=6 +# CONFIG_ESP32_WIFI_AMSDU_TX_ENABLED is not set CONFIG_ESP32_WIFI_NVS_ENABLED=y CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y # CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set diff --git a/test/audio_test/audio_test.c b/test/audio_test/audio_test.c new file mode 100644 index 0000000..b539086 --- /dev/null +++ b/test/audio_test/audio_test.c @@ -0,0 +1,122 @@ +// +// Created by misaki on 2025/8/24. +// + +/****************************************************************************** + * test_audio_player.c + * + * 本文件用于对 PCM5101 + SD 卡 MP3 播放方案做一次“黑盒”集成测试。 + * 测试流程: + * 1. 初始化 SD 卡 + * 2. 扫描 /sdcard/music 目录下所有 *.mp3 + * 3. 顺序播放 10 秒 -> 暂停 2 秒 -> 恢复播放 5 秒 -> 停止 + * 4. 动态调节音量 0→50→100 + * 5. 打印运行结果 + * + * 使用须知: + * - 在 menuconfig 里把 "format_if_mount_failed" 设为 false,防止误格式化 + * - 在 /sdcard/music 里放至少 1 首 MP3,文件名不要含中文或空格 + * - 本测试默认用 1-Line SDMMC,若硬件是 4-Line 只需改 slot_config.width = 4 + * - 默认采样率 44.1 kHz,16bit 立体声 + * + * 编译:idf.py build + * 烧录:idf.py flash monitor + ******************************************************************************/ + +#include +#include +#include +#include "unity.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_log.h" +#include "PCM5101.h" // 来自您的工程 + +/*-------------------- 私有宏 --------------------*/ +#define TEST_TAG "TEST_AUDIO" +#define MUSIC_DIR "/sdcard/music" // 测试用目录 +#define MAX_MP3_FILES 64 // 最多扫 64 首 +#define FILE_NAME_LEN 100 // 与 Folder_retrieval 保持一致 + +/*-------------------- 静态变量 --------------------*/ +static char mp3_list[MAX_MP3_FILES][FILE_NAME_LEN]; // 保存扫描到的文件名 +static uint16_t mp3_count = 0; // 实际扫描到的文件数 +static uint16_t current_idx = 0; // 当前播放的索引 + +/*-------------------- 私有函数 --------------------*/ + +/*------------------------------------------------- + * 扫描指定目录的 MP3 + *------------------------------------------------*/ +static void test_scan_music_dir(void) +{ + mp3_count = Folder_retrieval(MUSIC_DIR, ".mp3", mp3_list, MAX_MP3_FILES); + if (mp3_count == 0) { + ESP_LOGE(TEST_TAG, "没扫到任何 MP3,请检查 %s 目录", MUSIC_DIR); + } else { + ESP_LOGI(TEST_TAG, "扫描到 %d 首 MP3", mp3_count); + for (int i = 0; i < mp3_count; i++) { + ESP_LOGI(TEST_TAG, "[%d] %s", i, mp3_list[i]); + } + } +} + +/*------------------------------------------------- + * 播放一首 MP3 并做暂停/恢复/音量测试 + *------------------------------------------------*/ +void test_play_one(const char *dir, const char *file) +{ + ESP_LOGI(TEST_TAG, "开始播放 %s/%s", dir, file); + + /* 1. 播放 10 秒 */ + Volume_adjustment(50); + Play_Music(dir, file); + vTaskDelay(pdMS_TO_TICKS(10000)); + + /* 2. 暂停 2 秒 */ + ESP_LOGI(TEST_TAG, "暂停 2 秒"); + Music_pause(); + vTaskDelay(pdMS_TO_TICKS(2000)); + + /* 3. 恢复播放 5 秒 */ + ESP_LOGI(TEST_TAG, "恢复播放 20 秒"); + Music_resume(); + vTaskDelay(pdMS_TO_TICKS(20000)); + + /* 4. 动态调音量 */ + ESP_LOGI(TEST_TAG, "音量 0%%"); + Volume_adjustment(0); + vTaskDelay(pdMS_TO_TICKS(2000)); + + ESP_LOGI(TEST_TAG, "音量 50%%"); + Volume_adjustment(50); + vTaskDelay(pdMS_TO_TICKS(2000)); + + ESP_LOGI(TEST_TAG, "音量 70%%"); + Volume_adjustment(70); + vTaskDelay(pdMS_TO_TICKS(2000)); + + /* 5. 主动停止 */ + Music_pause(); + ESP_LOGI(TEST_TAG, "测试结束,停止播放"); +} + +/*------------------------------------------------- + * 测试入口 + *------------------------------------------------*/ +void run_audio_test(void) +{ + /* 1. 初始化外设 */ + ESP_LOGI(TEST_TAG, "=== 音频测试开始 ==="); + SD_Init(); // 挂载 SD 卡 + Audio_Init(); // 初始化 I2S + AudioPlayer + + /* 2. 扫描 MP3 */ + test_scan_music_dir(); + TEST_ASSERT_GREATER_THAN(0, mp3_count); // 至少要有 1 首 + + /* 3. 依次测试每首 MP3(这里只演示第一首)*/ + test_play_one(MUSIC_DIR, mp3_list[0]); + + ESP_LOGI(TEST_TAG, "=== 音频测试结束 ==="); +} \ No newline at end of file diff --git a/test/audio_test/audio_test.h b/test/audio_test/audio_test.h new file mode 100644 index 0000000..277ff4e --- /dev/null +++ b/test/audio_test/audio_test.h @@ -0,0 +1,6 @@ +// +// Created by misaki on 2025/8/24. +// +#pragma once + +void run_audio_test(void); \ No newline at end of file diff --git a/test/driver_test/drivers_test.c b/test/driver_test/drivers_test.c index 025faad..e72a15f 100644 --- a/test/driver_test/drivers_test.c +++ b/test/driver_test/drivers_test.c @@ -201,4 +201,12 @@ void exio_text(void) if (EXIO_Test() == ESP_FAIL) { ESP_LOGE("EXIO_TEST", "EXIO_Test() failed"); } +} + + +#include "audio_test.h" + +void audio_test(void) +{ + run_audio_test(); } \ No newline at end of file diff --git a/test/driver_test/drivers_test.h b/test/driver_test/drivers_test.h index a746774..ad20735 100644 --- a/test/driver_test/drivers_test.h +++ b/test/driver_test/drivers_test.h @@ -23,5 +23,8 @@ void pcf85063_test(void); // IO拓展测试 void exio_text(void); +// 音频测试 +void audio_test(void); + #endif //BIONIC_SPHERE_DRIVERS_TEST_H \ No newline at end of file diff --git a/项目开发日志.md b/项目开发日志.md index 339ca44..627126f 100644 --- a/项目开发日志.md +++ b/项目开发日志.md @@ -134,4 +134,15 @@ 00000000) ``` +- [x] 8. 添加了esp-idf的几个组件,基于main/idf_component.yml的配置,用于应用层快速开发 + ```yaml + dependencies: + idf: ">=4.4" + lvgl/lvgl: "~8.3.0" + chmorgan/esp-audio-player: "==1.0.7" + chmorgan/esp-libhelix-mp3: "==1.0.3" + espressif/esp-sr: "~1.9.4" + ``` + +- [x] 9. 测试了音频播放功能,测试通过