Is there an officially supported nRF53-compatible driver for WS2812 RGB LEDs? The official Zephyr example (https://github.com/zephyrproject-rtos/zephyr/tree/e3c06c5d8f6b3cb004a8521b3e063649228c61e8/samples/drivers/led_ws2812) does not support the nRF53 series and the only example code I found for the nRF53 series was https://www.hackster.io/mahmood-ul-hassan/how-to-interface-nordic-thingy-53-with-neopixels-ws2812b-c79533 which did not work correctly on the nRF7002DK I am using. (In the second example, I changed the pin to P0.07 since P0.08 was overlapping with some other configuration).
Update: I managed to get the official example working using I2S, but it's unstable. The colors flicker and the wrong colors are displayed randomly. I suspect it may be some timing issues but I could not figure out how to fix it. The overlay config for the nRF7002DK that i created and used is the following:
#include <zephyr/dt-bindings/led/led.h>
#include <nordic/nrf5340_cpuapp_qkaa.dtsi>
&pinctrl {
i2s0_default_alt: i2s0_default_alt {
group1 {
psels = <NRF_PSEL(I2S_SCK_M, 1, 15)>,
<NRF_PSEL(I2S_LRCK_M, 1, 12)>,
<NRF_PSEL(I2S_SDOUT, 1, 13)>, // Output pin to LED strip
<NRF_PSEL(I2S_SDIN, 1, 14)>;
};
};
};
i2s_led: &i2s0 {
status = "okay";
pinctrl-0 = <&i2s0_default_alt>;
pinctrl-names = "default";
};
/ {
//compatible = "nordic,nrf7002-dk-nrf5340-cpuapp";
led_strip: ws2812 {
compatible = "worldsemi,ws2812-i2s";
i2s-dev = < &i2s_led >;
chain-length = <100>;
color-mapping = <LED_COLOR_ID_GREEN
LED_COLOR_ID_RED
LED_COLOR_ID_BLUE>;
reset-delay = <2000>; // not sure if increasing this helped
nibble-one = < 14 >; // default value
nibble-zero = < 8 >; // default value
extra-wait-time = < 600 >; // this did not help
};
aliases {
led-strip = &led_strip;
};
};