-
-
Notifications
You must be signed in to change notification settings - Fork 3.9k
[esp32-C6 and esp-idf V5 branch] Fix ESP32-C6 GPIO pin validation and runtime compatibility #5114
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: V5-C6
Are you sure you want to change the base?
Changes from all commits
b713571
cca17a8
256d2e5
2a43ead
44b98e8
c8fb6f3
58e8a75
5c04ad8
08689d6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -166,14 +166,14 @@ lib_deps = | |
| https://github.com/softhack007/FastLED.git#ESP32-C6 ;; patched version needed for -C6 | ||
| ; IRremoteESP8266 @ 2.8.2 | ||
| makuna/NeoPixelBus @ 2.8.3 | ||
| ; https://github.com/Aircoookie/ESPAsyncWebServer.git#v2.4.2 | ||
| https://github.com/softhack007/ESPAsyncWebServer.git#ESP32-C6 ;; patched version needed for -C6 | ||
| https://github.com/Aircoookie/ESPAsyncWebServer.git#v2.4.2 | ||
| ; https://github.com/softhack007/ESPAsyncWebServer.git#ESP32-C6 ;; patched version needed for -C6 | ||
| marvinroger/AsyncMqttClient @ 0.9.0 | ||
| # for I2C interface | ||
| ;Wire | ||
| # ESP-NOW library | ||
| ;gmag11/QuickESPNow @ ~0.7.0 | ||
| https://github.com/blazoncek/QuickESPNow.git#optional-debug | ||
| gmag11/QuickEspNow@^0.8.1 | ||
| ; https://github.com/blazoncek/QuickESPNow.git#optional-debug | ||
| #For use of the TTGO T-Display ESP32 Module with integrated TFT display uncomment the following line | ||
| #TFT_eSPI | ||
| #For compatible OLED display uncomment following | ||
|
|
@@ -261,10 +261,10 @@ lib_deps_compat = | |
| https://github.com/Aircoookie/ESPAsyncWebServer.git#v2.4.0 | ||
|
|
||
| [esp32_all_variants] | ||
| ;; Common libs for all ESP32 variants - AsyncTCP is defined per-platform due to IDF version differences | ||
| lib_deps = | ||
| esp32async/AsyncTCP @ 3.4.6 | ||
| bitbank2/AnimatedGIF@^1.4.7 | ||
| https://github.com/Aircoookie/GifDecoder#bc3af18 | ||
| https://github.com/Aircoookie/GifDecoder#bc3af189b6b1e06946569f6b4287f0b79a860f8e | ||
| build_flags = | ||
| -D CONFIG_ASYNC_TCP_USE_WDT=0 | ||
| -D CONFIG_ASYNC_TCP_STACK_SIZE=8192 | ||
|
|
@@ -300,14 +300,21 @@ build_flags = -g | |
| ${esp32_all_variants.build_flags} | ||
| -D WLED_DISABLE_INFRARED ;; TODO: remove once we have updated library for V5 | ||
| -D WLED_DISABLE_MQTT ;; TODO: remove once we have updated library for V5 | ||
| -D WLED_DISABLE_ESPNOW ;; ESP-NOW requires compatible AsyncTCP, disabled for IDF5 | ||
| -D WLED_ENABLE_DMX_INPUT | ||
| -D WLED_USE_SHARED_RMT ;; Use standard RMT method instead of incompatible NeoEsp32RmtHI - until updated for V5 | ||
| lib_deps = | ||
| ${esp32_all_variants.lib_deps} | ||
| esp32async/AsyncTCP @ 3.4.7 ;; IDF5 compatible AsyncTCP | ||
| bitbank2/AnimatedGIF@^1.4.7 | ||
| https://github.com/Aircoookie/GifDecoder#bc3af189b6b1e06946569f6b4287f0b79a860f8e | ||
| https://github.com/netmindz/esp_dmx/#esp-idf-v5-fixes | ||
| ${env.lib_deps} | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this change may break other builds. Please explain why you deleted ${env.lib_deps}.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The `${env.lib_deps}` was removed because it was causing dependency conflicts with the IDF5-specific libraries. The IDF5 section now explicitly lists all required dependencies to ensure compatibility. The key differences for IDF5 are:
If this breaks other builds, I can restore `${env.lib_deps}` and find another way to handle the C6-specific dependencies. Would you prefer I split these into a C6-only section?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Let me think about it - basicially we should follow the same approach as the "V4" builds - with an env specific to ESP-IDF V5, and a C6 specific one that "extends=" the V5 environment. |
||
| https://github.com/softhack007/FastLED.git#ESP32-C6 ;; patched version needed for IDF5 | ||
| makuna/NeoPixelBus @ 2.8.3 | ||
| https://github.com/Aircoookie/ESPAsyncWebServer.git#v2.4.2 ;; WLED fork with IDF5 support | ||
| marvinroger/AsyncMqttClient @ 0.9.0 | ||
| lib_ignore = | ||
| NeoESP32RmtHI | ||
| QuickEspNow | ||
|
|
||
| [esp32s2] | ||
| ;; generic definitions for all ESP32-S2 boards | ||
|
|
@@ -347,28 +354,25 @@ board_build.flash_mode = qio | |
|
|
||
|
|
||
| [esp32c6] | ||
| ;; generic definitions for all ESP32-C6 boards | ||
| ;; generic definitions for all ESP32-C6 boards - extends esp32_idf_V5 | ||
| platform = ${esp32_idf_V5.platform} | ||
| platform_packages = | ||
| ;;platform_packages = | ||
| ;; framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.1 | ||
| ;; framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip | ||
|
|
||
| board = esp32-c6-devkitm-1 | ||
| build_unflags = ${common.build_unflags} | ||
| build_flags = -g | ||
| -DARDUINO_ARCH_ESP32 | ||
| -DARDUINO_ARCH_ESP32C6 | ||
| -DCONFIG_IDF_TARGET_ESP32C6=1 | ||
| -D CONFIG_ASYNC_TCP_USE_WDT=0 | ||
| -DCO | ||
| -DARDUINO_USB_MODE=1 ;; this flag is mandatory for ESP32-C3 | ||
| -DARDUINO_USB_MODE=1 ;; this flag is mandatory for ESP32-C6 | ||
| ;; ESP32-C6 uses BitBang method for NeoPixel (RMT not supported in NeoPixelBus for C6) | ||
| -D FASTLED_NO_FASTLED ;; Disable FastLED's own RMT driver to avoid conflict with ESP-IDF | ||
| ;; please make sure that the following flags are properly set (to 0 or 1) by your board.json, or included in your custom platformio_override.ini entry: | ||
| ;; ARDUINO_USB_CDC_ON_BOOT | ||
| ${esp32_idf_V5.build_flags} | ||
| lib_deps = | ||
| ;;https://github.com/pbolduc/AsyncTCP.git @ 1.2.0 | ||
| https://github.com/softhack007/AsyncTCP.git#ESP32-C6 ;; patched version needed for -C6 | ||
| makuna/NeoPixelBus @ 2.8.0 ;; latest version neeeded for -C6 | ||
| ${env.lib_deps} | ||
| ${esp32_idf_V5.lib_deps} | ||
| board = esp32-c6-devkitm-1 | ||
| board_build.partitions = ${esp32.default_partitions} | ||
|
|
||
|
|
||
| [env:esp32c6dev_8MB] | ||
|
|
@@ -382,7 +386,7 @@ board = esp32-c6-devkitc-1 | |
| build_unflags = ${common.build_unflags} | ||
| -D CORE_DEBUG_LEVEL=0 | ||
| -D NDEBUG | ||
| build_flags = ${common.build_flags} ${esp32c6.build_flags} -D WLED_RELEASE_NAME=ESP32-C6_8MB | ||
| build_flags = ${common.build_flags} ${esp32c6.build_flags} -D WLED_RELEASE_NAME=\"ESP32-C6_8MB\" | ||
| -Wno-volatile -Wno-deprecated-declarations ;; silence compiler warnings | ||
| -Wno-cpp ;; silence '#pragma warning' messages | ||
| -D DEBUG -g3 -ggdb | ||
|
|
@@ -399,6 +403,7 @@ upload_speed = 460800 | |
| lib_deps = ${esp32c6.lib_deps} | ||
| lib_ignore = | ||
| IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation | ||
| QuickEspNow ; ESP-NOW not compatible with ESP32-C6 / IDF5 | ||
|
|
||
| board_build.partitions = ${esp32.large_partitions} | ||
| board_build.f_flash = 80000000L | ||
|
|
@@ -411,8 +416,8 @@ monitor_filters = esp32_exception_decoder | |
| extends = env:esp32c6dev_8MB | ||
| board = esp32-c6-devkitm-1 | ||
| board_build.partitions = ${esp32.default_partitions} | ||
| build_unflags = ${env:esp32c6dev_8MB.build_unflags} -D WLED_RELEASE_NAME=ESP32-C6_8MB | ||
| build_flags = ${env:esp32c6dev_8MB.build_flags} -D WLED_RELEASE_NAME=ESP32-C6_4MB | ||
| build_unflags = ${env:esp32c6dev_8MB.build_unflags} -D WLED_RELEASE_NAME=\"ESP32-C6_8MB\" | ||
| build_flags = ${env:esp32c6dev_8MB.build_flags} -D WLED_RELEASE_NAME=\"ESP32-C6_4MB\" | ||
|
|
||
|
|
||
| [esp32s3] | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -231,7 +231,7 @@ | |
| typedef NeoEsp32I2s0Apa106Method X1Apa106Method; | ||
| typedef NeoEsp32I2s0Ws2805Method X1Ws2805Method; | ||
| typedef NeoEsp32I2s0Tm1914Method X1Tm1914Method; | ||
| #elif !defined(CONFIG_IDF_TARGET_ESP32C3) | ||
| #elif !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| // regular ESP32 will use I2S1 | ||
| typedef NeoEsp32I2s1Ws2812xMethod X1Ws2812xMethod; | ||
| typedef NeoEsp32I2s1Sk6812Method X1Sk6812Method; | ||
|
|
@@ -245,7 +245,10 @@ | |
| #endif | ||
|
|
||
| // RMT driver selection | ||
| #if !defined(WLED_USE_SHARED_RMT) && !defined(__riscv) | ||
| #if defined(CONFIG_IDF_TARGET_ESP32C6) | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @willmmiles this is a kind of preprocessor hack, that actually hides " NeoEsp32BitBang" under the NeoEsp32RmtMethod label. Not sure if we should do it this way, what do you think? |
||
| // ESP32-C6 does not support RMT for NeoPixel in NeoPixelBus, use BitBang instead | ||
| #define NeoEsp32RmtMethod(x) NeoEsp32BitBang ## x ## Method | ||
| #elif !defined(WLED_USE_SHARED_RMT) && !defined(__riscv) | ||
| #include <NeoEsp32RmtHIMethod.h> | ||
| #define NeoEsp32RmtMethod(x) NeoEsp32RmtHIN ## x ## Method | ||
| #else | ||
|
|
@@ -447,7 +450,7 @@ class PolyBus { | |
| case I_32_RN_TM1914_3: beginTM1914<B_32_RN_TM1914_3*>(busPtr); break; | ||
| case I_32_RN_SM16825_5: (static_cast<B_32_RN_SM16825_5*>(busPtr))->Begin(); break; | ||
| // I2S1 bus or parellel buses | ||
| #ifndef CONFIG_IDF_TARGET_ESP32C3 | ||
| #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| case I_32_I2_NEO_3: if (_useParallelI2S) (static_cast<B_32_IP_NEO_3*>(busPtr))->Begin(); else (static_cast<B_32_I2_NEO_3*>(busPtr))->Begin(); break; | ||
| case I_32_I2_NEO_4: if (_useParallelI2S) (static_cast<B_32_IP_NEO_4*>(busPtr))->Begin(); else (static_cast<B_32_I2_NEO_4*>(busPtr))->Begin(); break; | ||
| case I_32_I2_400_3: if (_useParallelI2S) (static_cast<B_32_IP_400_3*>(busPtr))->Begin(); else (static_cast<B_32_I2_400_3*>(busPtr))->Begin(); break; | ||
|
|
@@ -479,14 +482,14 @@ class PolyBus { | |
| static void* create(uint8_t busType, uint8_t* pins, uint16_t len, uint8_t channel) { | ||
| // NOTE: "channel" is only used on ESP32 (and its variants) for RMT channel allocation | ||
|
|
||
| #if defined(ARDUINO_ARCH_ESP32) && !defined(CONFIG_IDF_TARGET_ESP32C3) | ||
| #if defined(ARDUINO_ARCH_ESP32) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| if (_useParallelI2S && (channel >= 8)) { | ||
| // Parallel I2S channels are to be used first, so subtract 8 to get the RMT channel number | ||
| channel -= 8; | ||
| } | ||
| #endif | ||
|
|
||
| #if defined(ARDUINO_ARCH_ESP32) && !(defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3)) | ||
| #if defined(ARDUINO_ARCH_ESP32) && !(defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6)) | ||
| // since 0.15.0-b3 I2S1 is favoured for classic ESP32 and moved to position 0 (channel 0) so we need to subtract 1 for correct RMT allocation | ||
| if (!_useParallelI2S && channel > 0) channel--; // accommodate I2S1 which is used as 1st bus on classic ESP32 | ||
| #endif | ||
|
|
@@ -545,7 +548,22 @@ class PolyBus { | |
| case I_8266_BB_SM16825_5: busPtr = new B_8266_BB_SM16825_5(len, pins[0]); break; | ||
| #endif | ||
| #ifdef ARDUINO_ARCH_ESP32 | ||
| // RMT buses | ||
| // RMT buses (directly addressed, accent all LED types) | ||
| // ESP32-C6 uses BitBang methods which don't take a channel parameter | ||
| #if defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| case I_32_RN_NEO_3: busPtr = new B_32_RN_NEO_3(len, pins[0]); break; | ||
| case I_32_RN_NEO_4: busPtr = new B_32_RN_NEO_4(len, pins[0]); break; | ||
| case I_32_RN_400_3: busPtr = new B_32_RN_400_3(len, pins[0]); break; | ||
| case I_32_RN_TM1_4: busPtr = new B_32_RN_TM1_4(len, pins[0]); break; | ||
| case I_32_RN_TM2_3: busPtr = new B_32_RN_TM2_3(len, pins[0]); break; | ||
| case I_32_RN_UCS_3: busPtr = new B_32_RN_UCS_3(len, pins[0]); break; | ||
| case I_32_RN_UCS_4: busPtr = new B_32_RN_UCS_4(len, pins[0]); break; | ||
| case I_32_RN_APA106_3: busPtr = new B_32_RN_APA106_3(len, pins[0]); break; | ||
| case I_32_RN_FW6_5: busPtr = new B_32_RN_FW6_5(len, pins[0]); break; | ||
| case I_32_RN_2805_5: busPtr = new B_32_RN_2805_5(len, pins[0]); break; | ||
| case I_32_RN_TM1914_3: busPtr = new B_32_RN_TM1914_3(len, pins[0]); break; | ||
| case I_32_RN_SM16825_5: busPtr = new B_32_RN_SM16825_5(len, pins[0]); break; | ||
| #else | ||
| case I_32_RN_NEO_3: busPtr = new B_32_RN_NEO_3(len, pins[0], (NeoBusChannel)channel); break; | ||
| case I_32_RN_NEO_4: busPtr = new B_32_RN_NEO_4(len, pins[0], (NeoBusChannel)channel); break; | ||
| case I_32_RN_400_3: busPtr = new B_32_RN_400_3(len, pins[0], (NeoBusChannel)channel); break; | ||
|
|
@@ -558,8 +576,9 @@ class PolyBus { | |
| case I_32_RN_2805_5: busPtr = new B_32_RN_2805_5(len, pins[0], (NeoBusChannel)channel); break; | ||
| case I_32_RN_TM1914_3: busPtr = new B_32_RN_TM1914_3(len, pins[0], (NeoBusChannel)channel); break; | ||
| case I_32_RN_SM16825_5: busPtr = new B_32_RN_SM16825_5(len, pins[0], (NeoBusChannel)channel); break; | ||
| #endif | ||
| // I2S1 bus or paralell buses | ||
| #ifndef CONFIG_IDF_TARGET_ESP32C3 | ||
| #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| case I_32_I2_NEO_3: if (_useParallelI2S) busPtr = new B_32_IP_NEO_3(len, pins[0]); else busPtr = new B_32_I2_NEO_3(len, pins[0]); break; | ||
| case I_32_I2_NEO_4: if (_useParallelI2S) busPtr = new B_32_IP_NEO_4(len, pins[0]); else busPtr = new B_32_I2_NEO_4(len, pins[0]); break; | ||
| case I_32_I2_400_3: if (_useParallelI2S) busPtr = new B_32_IP_400_3(len, pins[0]); else busPtr = new B_32_I2_400_3(len, pins[0]); break; | ||
|
|
@@ -658,7 +677,7 @@ class PolyBus { | |
| case I_32_RN_TM1914_3: (static_cast<B_32_RN_TM1914_3*>(busPtr))->Show(consistent); break; | ||
| case I_32_RN_SM16825_5: (static_cast<B_32_RN_SM16825_5*>(busPtr))->Show(consistent); break; | ||
| // I2S1 bus or paralell buses | ||
| #ifndef CONFIG_IDF_TARGET_ESP32C3 | ||
| #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| case I_32_I2_NEO_3: if (_useParallelI2S) (static_cast<B_32_IP_NEO_3*>(busPtr))->Show(consistent); else (static_cast<B_32_I2_NEO_3*>(busPtr))->Show(consistent); break; | ||
| case I_32_I2_NEO_4: if (_useParallelI2S) (static_cast<B_32_IP_NEO_4*>(busPtr))->Show(consistent); else (static_cast<B_32_I2_NEO_4*>(busPtr))->Show(consistent); break; | ||
| case I_32_I2_400_3: if (_useParallelI2S) (static_cast<B_32_IP_400_3*>(busPtr))->Show(consistent); else (static_cast<B_32_I2_400_3*>(busPtr))->Show(consistent); break; | ||
|
|
@@ -754,7 +773,7 @@ class PolyBus { | |
| case I_32_RN_TM1914_3: return (static_cast<B_32_RN_TM1914_3*>(busPtr))->CanShow(); break; | ||
| case I_32_RN_SM16825_5: return (static_cast<B_32_RN_SM16825_5*>(busPtr))->CanShow(); break; | ||
| // I2S1 bus or paralell buses | ||
| #ifndef CONFIG_IDF_TARGET_ESP32C3 | ||
| #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| case I_32_I2_NEO_3: if (_useParallelI2S) return (static_cast<B_32_IP_NEO_3*>(busPtr))->CanShow(); else return (static_cast<B_32_I2_NEO_3*>(busPtr))->CanShow(); break; | ||
| case I_32_I2_NEO_4: if (_useParallelI2S) return (static_cast<B_32_IP_NEO_4*>(busPtr))->CanShow(); else return (static_cast<B_32_I2_NEO_4*>(busPtr))->CanShow(); break; | ||
| case I_32_I2_400_3: if (_useParallelI2S) return (static_cast<B_32_IP_400_3*>(busPtr))->CanShow(); else return (static_cast<B_32_I2_400_3*>(busPtr))->CanShow(); break; | ||
|
|
@@ -876,7 +895,7 @@ class PolyBus { | |
| case I_32_RN_TM1914_3: (static_cast<B_32_RN_TM1914_3*>(busPtr))->SetPixelColor(pix, RgbColor(col)); break; | ||
| case I_32_RN_SM16825_5: (static_cast<B_32_RN_SM16825_5*>(busPtr))->SetPixelColor(pix, Rgbww80Color(col.R*257, col.G*257, col.B*257, cctWW*257, cctCW*257)); break; | ||
| // I2S1 bus or paralell buses | ||
| #ifndef CONFIG_IDF_TARGET_ESP32C3 | ||
| #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| case I_32_I2_NEO_3: if (_useParallelI2S) (static_cast<B_32_IP_NEO_3*>(busPtr))->SetPixelColor(pix, RgbColor(col)); else (static_cast<B_32_I2_NEO_3*>(busPtr))->SetPixelColor(pix, RgbColor(col)); break; | ||
| case I_32_I2_NEO_4: if (_useParallelI2S) (static_cast<B_32_IP_NEO_4*>(busPtr))->SetPixelColor(pix, col); else (static_cast<B_32_I2_NEO_4*>(busPtr))->SetPixelColor(pix, col); break; | ||
| case I_32_I2_400_3: if (_useParallelI2S) (static_cast<B_32_IP_400_3*>(busPtr))->SetPixelColor(pix, RgbColor(col)); else (static_cast<B_32_I2_400_3*>(busPtr))->SetPixelColor(pix, RgbColor(col)); break; | ||
|
|
@@ -973,7 +992,7 @@ class PolyBus { | |
| case I_32_RN_TM1914_3: col = (static_cast<B_32_RN_TM1914_3*>(busPtr))->GetPixelColor(pix); break; | ||
| case I_32_RN_SM16825_5: { Rgbww80Color c = (static_cast<B_32_RN_SM16825_5*>(busPtr))->GetPixelColor(pix); col = RGBW32(c.R/257,c.G/257,c.B/257,max(c.WW,c.CW)/257); } break; // will not return original W | ||
| // I2S1 bus or paralell buses | ||
| #ifndef CONFIG_IDF_TARGET_ESP32C3 | ||
| #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| case I_32_I2_NEO_3: col = (_useParallelI2S) ? (static_cast<B_32_IP_NEO_3*>(busPtr))->GetPixelColor(pix) : (static_cast<B_32_I2_NEO_3*>(busPtr))->GetPixelColor(pix); break; | ||
| case I_32_I2_NEO_4: col = (_useParallelI2S) ? (static_cast<B_32_IP_NEO_4*>(busPtr))->GetPixelColor(pix) : (static_cast<B_32_I2_NEO_4*>(busPtr))->GetPixelColor(pix); break; | ||
| case I_32_I2_400_3: col = (_useParallelI2S) ? (static_cast<B_32_IP_400_3*>(busPtr))->GetPixelColor(pix) : (static_cast<B_32_I2_400_3*>(busPtr))->GetPixelColor(pix); break; | ||
|
|
@@ -1088,7 +1107,7 @@ class PolyBus { | |
| case I_32_RN_TM1914_3: delete (static_cast<B_32_RN_TM1914_3*>(busPtr)); break; | ||
| case I_32_RN_SM16825_5: delete (static_cast<B_32_RN_SM16825_5*>(busPtr)); break; | ||
| // I2S1 bus or paralell buses | ||
| #ifndef CONFIG_IDF_TARGET_ESP32C3 | ||
| #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| case I_32_I2_NEO_3: if (_useParallelI2S) delete (static_cast<B_32_IP_NEO_3*>(busPtr)); else delete (static_cast<B_32_I2_NEO_3*>(busPtr)); break; | ||
| case I_32_I2_NEO_4: if (_useParallelI2S) delete (static_cast<B_32_IP_NEO_4*>(busPtr)); else delete (static_cast<B_32_I2_NEO_4*>(busPtr)); break; | ||
| case I_32_I2_400_3: if (_useParallelI2S) delete (static_cast<B_32_IP_400_3*>(busPtr)); else delete (static_cast<B_32_I2_400_3*>(busPtr)); break; | ||
|
|
@@ -1185,7 +1204,7 @@ class PolyBus { | |
| case I_32_RN_TM1914_3: size = (static_cast<B_32_RN_TM1914_3*>(busPtr))->PixelsSize()*2; break; | ||
| case I_32_RN_SM16825_5: size = (static_cast<B_32_RN_SM16825_5*>(busPtr))->PixelsSize()*2; break; | ||
| // I2S1 bus or paralell buses (front + DMA; DMA = front * cadence, aligned to 4 bytes) | ||
| #ifndef CONFIG_IDF_TARGET_ESP32C3 | ||
| #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| case I_32_I2_NEO_3: size = (_useParallelI2S) ? (static_cast<B_32_IP_NEO_3*>(busPtr))->PixelsSize()*4 : (static_cast<B_32_I2_NEO_3*>(busPtr))->PixelsSize()*4; break; | ||
| case I_32_I2_NEO_4: size = (_useParallelI2S) ? (static_cast<B_32_IP_NEO_4*>(busPtr))->PixelsSize()*4 : (static_cast<B_32_I2_NEO_4*>(busPtr))->PixelsSize()*4; break; | ||
| case I_32_I2_400_3: size = (_useParallelI2S) ? (static_cast<B_32_IP_400_3*>(busPtr))->PixelsSize()*4 : (static_cast<B_32_I2_400_3*>(busPtr))->PixelsSize()*4; break; | ||
|
|
@@ -1264,7 +1283,7 @@ class PolyBus { | |
| case I_32_RN_2805_5 : size = (size + 2*count)*2; break; // 5 channels | ||
| case I_32_RN_SM16825_5: size = (size + 2*count)*2*2; break; // 16bit, 5 channels | ||
| // I2S1 bus or paralell I2S1 buses (1x front, does not include DMA buffer which is front*cadence, a bit(?) more for LCD) | ||
| #ifndef CONFIG_IDF_TARGET_ESP32C3 | ||
| #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| case I_32_I2_NEO_3 : // fallthrough | ||
| case I_32_I2_400_3 : // fallthrough | ||
| case I_32_I2_TM2_3 : // fallthrough | ||
|
|
@@ -1351,8 +1370,8 @@ class PolyBus { | |
| if (num > 4) return I_NONE; | ||
| if (num > 3) offset = 1; // only one I2S0 (use last to allow Audioreactive) | ||
| } | ||
| #elif defined(CONFIG_IDF_TARGET_ESP32C3) | ||
| // On ESP32-C3 only the first 2 RMT channels are usable for transmitting | ||
| #elif defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) | ||
| // On ESP32-C3/C6 only the first 2 RMT channels are usable for transmitting | ||
| if (num > 1) return I_NONE; | ||
| //if (num > 1) offset = 1; // I2S not supported yet (only 1 I2S) | ||
| #elif defined(CONFIG_IDF_TARGET_ESP32S3) | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.