|
|
@ -34,7 +34,7 @@ |
|
|
|
|
|
|
|
// Define SPI config speed |
|
|
|
// baudrate should target 3.2MHz |
|
|
|
// F072 fpclk = 48MHz |
|
|
|
// F072 fpclk = 48MHz |
|
|
|
// 48/16 = 3Mhz |
|
|
|
#if WS2812_SPI_DIVISOR == 2 |
|
|
|
# define WS2812_SPI_DIVISOR (0) |
|
|
@ -42,7 +42,7 @@ |
|
|
|
# define WS2812_SPI_DIVISOR (SPI_CR1_BR_0) |
|
|
|
#elif WS2812_SPI_DIVISOR == 8 |
|
|
|
# define WS2812_SPI_DIVISOR (SPI_CR1_BR_1) |
|
|
|
#elif WS2812_SPI_DIVISOR == 16 //same as default |
|
|
|
#elif WS2812_SPI_DIVISOR == 16 // same as default |
|
|
|
# define WS2812_SPI_DIVISOR (SPI_CR1_BR_1 | SPI_CR1_BR_0) |
|
|
|
#elif WS2812_SPI_DIVISOR == 32 |
|
|
|
# define WS2812_SPI_DIVISOR (SPI_CR1_BR_2) |
|
|
@ -53,14 +53,14 @@ |
|
|
|
#elif WS2812_SPI_DIVISOR == 256 |
|
|
|
# define WS2812_SPI_DIVISOR (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0) |
|
|
|
#else |
|
|
|
# define WS2812_SPI_DIVISOR (SPI_CR1_BR_1 | SPI_CR1_BR_0) //default |
|
|
|
# define WS2812_SPI_DIVISOR (SPI_CR1_BR_1 | SPI_CR1_BR_0) // default |
|
|
|
#endif |
|
|
|
|
|
|
|
// Use SPI circular buffer |
|
|
|
#ifdef WS2812_SPI_USE_CIRCULAR_BUFFER |
|
|
|
# define WS2812_SPI_BUFFER_MODE 1 //circular buffer |
|
|
|
# define WS2812_SPI_BUFFER_MODE 1 // circular buffer |
|
|
|
#else |
|
|
|
# define WS2812_SPI_BUFFER_MODE 0 //normal buffer |
|
|
|
# define WS2812_SPI_BUFFER_MODE 0 // normal buffer |
|
|
|
#endif |
|
|
|
|
|
|
|
#define BYTES_FOR_LED_BYTE 4 |
|
|
@ -112,10 +112,7 @@ void ws2812_init(void) { |
|
|
|
palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE); |
|
|
|
|
|
|
|
// 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 |
|
|
|
}; |
|
|
|
static const SPIConfig spicfg = {WS2812_SPI_BUFFER_MODE, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), WS2812_SPI_DIVISOR}; |
|
|
|
|
|
|
|
spiAcquireBus(&WS2812_SPI); /* Acquire ownership of the bus. */ |
|
|
|
spiStart(&WS2812_SPI, &spicfg); /* Setup transfer parameters. */ |
|
|
|