RMT transaction on led strip corrupted by WiFi interrupts
Posted: Thu Aug 01, 2024 9:56 am
Greetings,
I am working on a project in which I use RMT of ESP32S3 to transmit data on a LED strip and WiFi for LED configuration. I have observed that some of the LEDs will flicker especially when the number of connected sockets changes in WiFi driver. And the LEDs will be much more stable if WiFi is off.
The LED driver I am using is https://components.espressif.com/compon ... /led_strip (version 2.5.3). So far I have done the following changes and the flickering still exists:
1. DMA is enabled on RMT Tx
2. the freeRToS thread that calls the LED driver (led_strip_new_rmt_device) runs in Core 1.
3. WiFi task is pinned to Core 0 in menuconfig. So do the other application threads in freeRToS.
4. the priority of interrupts in RMT TX is set to level 3. Higher than 3 is not possbile.
5. SPI RAM config: allocate memory of WiFi and LWIP in SPIRAM first. [/list]
I don't understand why the RMT transaction is still corrupted by WiFi driver because the tasks and ISR are supposed to run on different cores. Does anybody have any idea? Thanks!
I am working on a project in which I use RMT of ESP32S3 to transmit data on a LED strip and WiFi for LED configuration. I have observed that some of the LEDs will flicker especially when the number of connected sockets changes in WiFi driver. And the LEDs will be much more stable if WiFi is off.
The LED driver I am using is https://components.espressif.com/compon ... /led_strip (version 2.5.3). So far I have done the following changes and the flickering still exists:
1. DMA is enabled on RMT Tx
2. the freeRToS thread that calls the LED driver (led_strip_new_rmt_device) runs in Core 1.
3. WiFi task is pinned to Core 0 in menuconfig. So do the other application threads in freeRToS.
4. the priority of interrupts in RMT TX is set to level 3. Higher than 3 is not possbile.
5. SPI RAM config: allocate memory of WiFi and LWIP in SPIRAM first. [/list]
I don't understand why the RMT transaction is still corrupted by WiFi driver because the tasks and ISR are supposed to run on different cores. Does anybody have any idea? Thanks!