|
@@ -16,19 +16,23 @@
|
|
|
# define WS2812_SPI_MOSI_PAL_MODE 5
|
|
|
#endif
|
|
|
|
|
|
+#ifndef WS2812_SPI_SCK_PAL_MODE
|
|
|
+# define WS2812_SPI_SCK_PAL_MODE 5
|
|
|
+#endif
|
|
|
+
|
|
|
// Push Pull or Open Drain Configuration
|
|
|
// Default Push Pull
|
|
|
#ifndef WS2812_EXTERNAL_PULLUP
|
|
|
# if defined(USE_GPIOV1)
|
|
|
-# define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
|
|
|
+# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
|
|
|
# else
|
|
|
-# define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL
|
|
|
+# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL
|
|
|
# endif
|
|
|
#else
|
|
|
# if defined(USE_GPIOV1)
|
|
|
-# define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN
|
|
|
+# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN
|
|
|
# else
|
|
|
-# define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN
|
|
|
+# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN
|
|
|
# endif
|
|
|
#endif
|
|
|
|
|
@@ -63,6 +67,12 @@
|
|
|
# define WS2812_SPI_BUFFER_MODE 0 // normal buffer
|
|
|
#endif
|
|
|
|
|
|
+#if defined(USE_GPIOV1)
|
|
|
+# define WS2812_SCK_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
|
|
|
+#else
|
|
|
+# define WS2812_SCK_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_SCK_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL
|
|
|
+#endif
|
|
|
+
|
|
|
#define BYTES_FOR_LED_BYTE 4
|
|
|
#define NB_COLORS 3
|
|
|
#define BYTES_FOR_LED (BYTES_FOR_LED_BYTE * NB_COLORS)
|
|
@@ -109,7 +119,11 @@ static void set_led_color_rgb(LED_TYPE color, int pos) {
|
|
|
}
|
|
|
|
|
|
void ws2812_init(void) {
|
|
|
- palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE);
|
|
|
+ palSetLineMode(RGB_DI_PIN, WS2812_MOSI_OUTPUT_MODE);
|
|
|
+
|
|
|
+#ifdef WS2812_SPI_SCK_PIN
|
|
|
+ palSetLineMode(WS2812_SPI_SCK_PIN, WS2812_SCK_OUTPUT_MODE);
|
|
|
+#endif // WS2812_SPI_SCK_PIN
|
|
|
|
|
|
// TODO: more dynamic baudrate
|
|
|
static const SPIConfig spicfg = {WS2812_SPI_BUFFER_MODE, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), WS2812_SPI_DIVISOR};
|