|
16 | 16 | # define WS2812_SPI_MOSI_PAL_MODE 5
|
17 | 17 | #endif
|
18 | 18 |
|
| 19 | +#ifndef WS2812_SPI_SCK_PAL_MODE |
| 20 | +# define WS2812_SPI_SCK_PAL_MODE 5 |
| 21 | +#endif |
| 22 | + |
19 | 23 | // Push Pull or Open Drain Configuration
|
20 | 24 | // Default Push Pull
|
21 | 25 | #ifndef WS2812_EXTERNAL_PULLUP
|
22 | 26 | # if defined(USE_GPIOV1)
|
23 |
| -# define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL |
| 27 | +# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL |
24 | 28 | # else
|
25 |
| -# define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL |
| 29 | +# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL |
26 | 30 | # endif
|
27 | 31 | #else
|
28 | 32 | # if defined(USE_GPIOV1)
|
29 |
| -# define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN |
| 33 | +# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN |
30 | 34 | # else
|
31 |
| -# define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN |
| 35 | +# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN |
32 | 36 | # endif
|
33 | 37 | #endif
|
34 | 38 |
|
|
63 | 67 | # define WS2812_SPI_BUFFER_MODE 0 // normal buffer
|
64 | 68 | #endif
|
65 | 69 |
|
| 70 | +#if defined(USE_GPIOV1) |
| 71 | +# define WS2812_SCK_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL |
| 72 | +#else |
| 73 | +# define WS2812_SCK_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_SCK_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL |
| 74 | +#endif |
| 75 | + |
66 | 76 | #define BYTES_FOR_LED_BYTE 4
|
67 | 77 | #define NB_COLORS 3
|
68 | 78 | #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) {
|
109 | 119 | }
|
110 | 120 |
|
111 | 121 | void ws2812_init(void) {
|
112 |
| - palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE); |
| 122 | + palSetLineMode(RGB_DI_PIN, WS2812_MOSI_OUTPUT_MODE); |
| 123 | + |
| 124 | +#ifdef WS2812_SPI_SCK_PIN |
| 125 | + palSetLineMode(WS2812_SPI_SCK_PIN, WS2812_SCK_OUTPUT_MODE); |
| 126 | +#endif // WS2812_SPI_SCK_PIN |
113 | 127 |
|
114 | 128 | // TODO: more dynamic baudrate
|
115 | 129 | static const SPIConfig spicfg = {WS2812_SPI_BUFFER_MODE, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), WS2812_SPI_DIVISOR};
|
|
0 commit comments