Hello,
I am trying use ws2812 driver with a samd21 mcu.
I took example from the /boards/arm/rp2040.
added to board.h:
#define BOARD_GPIO_WS2812_PIN 5 /* verifier pin #5 = PA15 */
added to sam_bringup.c:
#ifdef CONFIG_WS2812
/* Configure and initialize the WS2812 LEDs. */
#ifdef CONFIG_WS2812_NON_SPI_DRIVER
#pragma message ("Configure and initialize the WS2812 LEDs with non spi
driver")
if (sam_ws2812_setup("/dev/leds0",
5,
1,
CONFIG_WS2812_LED_COUNT,
HAS_WHITE) == NULL)
{
syslog(LOG_ERR, "Failed to initialize WS2812: %d\n", errno);
return -errno;
}
else
ret = OK;
#else
#pragma message ("Configure and initialize the WS2812 LEDs with spi driver")
ret = board_ws2812_initialize(0, WS2812_SPI, CONFIG_WS2812_LED_COUNT);
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: board_ws2812_initialize() failed: %d\n", ret);
}
#endif
#endif
In arch/arm/src/samd2l2 I copied rp2040_ws2812.c and rp2040_ws2812.h and I
replaced 'rp2040_' with 'sam_'.
The problem I have is that I can not convert #include rp2040_pio.h. It
looks like "rp2040_pio.h", "rp2040_pio.c", "rp2040_pio_instructions.h"
are specifically designed for rp2040.
Am I on the good path?
Do you have any advice to use ws2812 with samd? I would like to use ws2812
driver without spi driver as all the sercom (com ports) are used. I have 12
leds on the strip and I only need to refresh once per 0.1s.
regards,
Bertrand.