NeoPixelBus icon indicating copy to clipboard operation
NeoPixelBus copied to clipboard

ESP32-C3 and ESP32-S3 will not compile with NeoEsp32I2s0800KbpsMethod

Open mariusmotea opened this issue 2 years ago • 7 comments

Describe the bug According to the documentation ESP32-C3 is supported with following note:

NOTE: The ESP32S2 and ESP32C3 only support one i2s hardware bus. Thus you can only use the NeoEsp32I2s0*Method types.

But in Arduino when i set NeoEsp32I2s0800KbpsMethod i get the error "'NeoEsp32I2s0800KbpsMethod' was not declared in this scope"

To Reproduce Steps to reproduce the behavior:

  1. In Arduino set the board to ESPC32C3 Dev Module
  2. Install last NeoPixelBus library

Expected behavior Successfully compile the code.

Development environment (please complete the following information):

  • OS: Ubuntu 21.10
  • Build Environment: Arduino IDE v.1.8.15
  • Board target: ESPC32C3 Dev Module
  • Library version: v2.6.9

Minimal Sketch that reproduced the problem: #include <NeoPixelBus.h> NeoPixelBus<NeoGrbFeature, NeoEsp32I2s0800KbpsMethod>* strip = NULL; ...... strip = new NeoPixelBus<NeoGrbFeature, NeoEsp32I2s0800KbpsMethod>(newCount, 13); // and recreate with new count strip->Begin(); .....

Additional context Compile error:

ESP32_C3_WS281X:56:28: error: 'NeoEsp32I2s0800KbpsMethod' was not declared in this scope NeoPixelBus<NeoGrbFeature, NeoEsp32I2s0800KbpsMethod>* strip = NULL; ^~~~~~~~~~~~~~~~~~~~~~~~~ /home/marius/Documents/ESP32_C3_WS281X/ESP32_C3_WS281X.ino:56:28: note: suggested alternative: 'NeoEsp32Rmt0800KbpsMethod' NeoPixelBus<NeoGrbFeature, NeoEsp32I2s0800KbpsMethod>* strip = NULL; ^~~~~~~~~~~~~~~~~~~~~~~~~

"NeoEsp32Rmt0800KbpsMethod" is working but i got a flickering and i think this method is not the best.

Thanks.

mariusmotea avatar Feb 04 '22 18:02 mariusmotea

They changed the i2s interface/API enough on the C3 that it's not easy to support it with the same code. This is noted at the top of the NeoEsp32i2sMethods.h file.

Makuna avatar Feb 05 '22 07:02 Makuna

@mariusmotea Jump into the discussions area to continue the conversation about RMT and flickering; specifically mention exactly what LEDs you are using.

Makuna avatar Feb 05 '22 20:02 Makuna

Hi,

I'm not able to find in Discussions a topic related to RMT and flickering. I can simply tell that i use a WS2812B strip that i use it with no issues on esp8266 with Neo800KbpsMethod. Also i want to mention that now i'm using a prototype board designed by me as i want to replace all esp8266 in my home with some small boards with ESP32C3 that have also a mostfet which cut the power to the strip when all leds are soft off. Maybe my board don't work properly?

mariusmotea avatar Feb 05 '22 21:02 mariusmotea

This is the wrong area to "discuss" the RMT flicker, this is for reporting bugs not seeking help. Ask the questions in the discussions area about RMT and I will answer there. (https://github.com/Makuna/NeoPixelBus/discussions). The original topic (ESP32C3 and I2s methods) is a valid issue that it is not supported.

Makuna avatar Feb 06 '22 03:02 Makuna

ESP32S3 also has a significant interface change for i2s and currently is not supported. Unknown if it follows the C3 or creates yet another interface.

Makuna avatar Jun 12 '22 20:06 Makuna

Note S3 and C3 are supported by BitBang in the DelayBetweenPixels branch

Makuna avatar Mar 05 '23 03:03 Makuna

https://github.com/adafruit/Adafruit_NeoPXL8 Includes DMA support for S3 (C3?) using the LED parallel peripheral.

Makuna avatar Mar 06 '24 20:03 Makuna