diff --git a/platformio.ini b/platformio.ini index 11ff132c..bdd6fe4d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -778,7 +778,7 @@ build_flags = ${esp32_4MB_V4_max_base.build_flags} ; RAM: [== ] 24.8% (used 81316 bytes from 327680 bytes) ; Flash: [======= ] 72.9% (used 1528253 bytes from 2097152 bytes) -;; experiemtal environment for boards with PSRAM (needs ESP-IDF 4.4.1). +;; experimental environment for boards with PSRAM (needs ESP-IDF 4.4.1). ; esp32_4MB_PSRAM_max: bin entry, uses esp32_4MB_V4_max_base and adds specific settings [env:esp32_4MB_PSRAM_max] extends = esp32_4MB_V4_max_base diff --git a/usermods/audioreactive/audio_reactive.h b/usermods/audioreactive/audio_reactive.h index 21ae6547..841e544d 100644 --- a/usermods/audioreactive/audio_reactive.h +++ b/usermods/audioreactive/audio_reactive.h @@ -1252,7 +1252,11 @@ class AudioReactive : public Usermod { if (enabled) disableSoundProcessing = false; // all good - enable audio processing if((!audioSource) || (!audioSource->isInitialized())) { // audio source failed to initialize. Still stay "enabled", as there might be input arriving via UDP Sound Sync + #ifdef WLED_DEBUG + DEBUG_PRINTLN(F("AR: Failed to initialize sound input driver. Please check input PIN settings.")); + #else DEBUGSR_PRINTLN(F("AR: Failed to initialize sound input driver. Please check input PIN settings.")); + #endif disableSoundProcessing = true; } @@ -1853,13 +1857,13 @@ class AudioReactive : public Usermod { oappend(SET_F("addOption(dd,'Send',1);")); oappend(SET_F("addOption(dd,'Receive',2);")); oappend(SET_F("addInfo('AudioReactive:digitalmic:type',1,'requires reboot!');")); // 0 is field type, 1 is actual field - oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',0,'I2S Serial Data: SD / DOUT /DATA');")); + oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',0,'I2S Serial Data: SD / DOUT / DATA');")); oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',1,'I2S Left/Right Clock: WS / LRCK / CLK');")); oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',2,'I2S Serial Clock: SCK / BCLK');")); #if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S3) - oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',3,'MCLK - I2S Master CLK
only use -1, 0, 1 or 3 for MCLK');")); + oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',3,'MCLK: I2S Master CLK
only use -1, 0, 1 or 3 for MCLK');")); #else - oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',3,'MCLK - I2S Master CLK');")); + oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',3,'MCLK: I2S Master CLK');")); #endif oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',4,'ES7243 I2C: SDA');")); oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',5,'ES7243 I2C: SCL');")); diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index 50627dc5..e32eff1a 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -271,6 +271,8 @@ class I2SSource : public AudioSource { .data_in_num = i2ssdPin }; + //DEBUGSR_PRINTF("[AR] I2S: SD=%d, WS=%d, SCK=%d, MCLK=%d\n", i2ssdPin, i2swsPin, i2sckPin, mclkPin); + esp_err_t err = i2s_driver_install(I2S_NUM_0, &_config, 0, nullptr); if (err != ESP_OK) { DEBUGSR_PRINTF("AR: Failed to install i2s driver: %d\n", err); @@ -282,7 +284,8 @@ class I2SSource : public AudioSource { if(_config.mode & I2S_MODE_MASTER) { if (_config.mode & I2S_MODE_PDM) DEBUGSR_PRINTLN(F("AR: I2S#0 driver installed in PDM MASTER mode.")); - else DEBUGSR_PRINTLN(F("AR: I2S#0 driver installed in MASTER mode.")); + else + DEBUGSR_PRINTLN(F("AR: I2S#0 driver installed in MASTER mode.")); } else DEBUGSR_PRINTLN(F("AR: I2S#0 driver installed in SLAVE mode.")); @@ -425,6 +428,12 @@ public: DEBUGSR_PRINTF("\nAR: invalid ES7243 I2C pins: SDA=%d, SCL=%d\n", sdaPin, sclPin); return; } + + if ((i2sckPin < 0) || (mclkPin < 0)) { + DEBUGSR_PRINTF("\nAR: invalid I2S pin: SCK=%d, MCLK=%d\n", i2sckPin, mclkPin); + return; + } + // Reserve SDA and SCL pins of the I2C interface PinManagerPinType es7243Pins[2] = { { sdaPin, true }, { sclPin, true } }; if (!pinManager.allocateMultiplePins(es7243Pins, 2, PinOwner::HW_I2C)) {