From c340779c05937582358fe9c4f8a7a75becab4cf0 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Mon, 17 Jul 2023 13:34:14 -0700 Subject: [PATCH] Updated FAQ #7 (markdown) --- FAQ-#7.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/FAQ-#7.md b/FAQ-#7.md index 8bcaa4a..dc5cd35 100644 --- a/FAQ-#7.md +++ b/FAQ-#7.md @@ -12,13 +12,24 @@ RGBW buffer size in bytes = number of pixels * 4 The second factor is what "method" is used to send the data. For most AVR platforms the method used is similar and requires only a few extra bytes beyond what was listed above to manage the buffer. But there are several non-AVR that will incur more memory usage. -#### I2S and DMA: +#### I2S and DMA on ESP: The NeoEsp32I2s1Ws2812xMethods and similar. This is the default method for ESP32. The NeoEsp8266DmaWs2812xMethod and similar. This is the default method for Esp8266. -You can find more information on these methods in the [NeoPixelBus object page](https://github.com/Makuna/NeoPixelBus/wiki/NeoPixelBus-object). These "method"s not only requires the above buffer, but it also requires a DMA buffer for the hardware to use. This DMA buffer requires four bytes per byte used from the primary buffer. +You can find more information on these methods in the [NeoPixelBus object page](https://github.com/Makuna/NeoPixelBus/wiki/NeoPixelBus-object). These "method"s not only require the above buffer, but it also requires a DMA buffer for the hardware to use. This DMA buffer requires four bytes per byte used from the primary buffer. ``` DMA RGB buffer size in bytes = number of pixels * 3 * 4 DMA RGBW buffer size in bytes = number of pixels * 4 * 4 ``` -This equates to approximately 3000 pixels for RGB, and 2250 pixels for RGBW; as long as you don't have anything else that requires much more memory. But this method comes with the benefit in that it doesn't take much of the CPU to send the data like all the other methods; so you can then use the freed CPU cycles to do other important tasks. +This equates to approximately 3000 pixels for RGB, and 2250 pixels for RGBW; as long as you don't have anything else that requires much more memory. But these methods come with the benefit in that they don't take much of the CPU to send the data like all the other methods; so, you can then use the freed CPU cycles to do other important tasks. +#### RMT on ESP32 +The NeoEsp32Rmt1Ws2812xMethods and similar. This is the default method for ESP32S3 & ESP32C3. +These "method"s not only require the above buffer, but it also requires a "sending" buffer of the same size for the hardware RMT to sample. While the RMT hardware is sending, it allows your sketch to continue do other things while it will interrupt periodically to request a refill and translation for its internal DMA buffer. + +#### PWM and DMA on NRF52840 (Nano 33 BLE): +The NeoNrf52xPwm0Ws2812xMethod through NeoNrf52xPwm3Ws2812xMethod and similar. This is the default method for NRF52840. +These "method"s not only require the above buffer, but it also requires a DMA buffer for the hardware PWM to use. This DMA buffer requires 16 bytes per byte used from the primary buffer. +``` +DMA RGB buffer size in bytes = number of pixels * 3 * 16 +``` +These methods come with the benefit in that they don't take much of the CPU to send the data like all the other methods; so, you can then use the freed CPU cycles to do other important tasks.