~ruther/qmk_firmware

6b1c7d20aadf40655585df465c4680eca5eca7ae — Joy Lee 3 years ago 5c805e4
Added ws2812_spi support for WB32 MCU (#17143)

Co-authored-by: Joy <chang.li@westberrytech.com>
2 files changed, 13 insertions(+), 2 deletions(-)

M platforms/chibios/drivers/ws2812.c
M platforms/chibios/drivers/ws2812_spi.c
M platforms/chibios/drivers/ws2812.c => platforms/chibios/drivers/ws2812.c +1 -1
@@ 6,7 6,7 @@
/* Adapted from https://github.com/bigjosh/SimpleNeoPixelDemo/ */

#ifndef NOP_FUDGE
#    if defined(STM32F0XX) || defined(STM32F1XX) || defined(GD32VF103) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX)
#    if defined(STM32F0XX) || defined(STM32F1XX) || defined(GD32VF103) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(WB32F3G71xx) || defined(WB32FQ95xx)
#        define NOP_FUDGE 0.4
#    else
#        error("NOP_FUDGE configuration required")

M platforms/chibios/drivers/ws2812_spi.c => platforms/chibios/drivers/ws2812_spi.c +12 -1
@@ 5,7 5,11 @@

// Define the spi your LEDs are plugged to here
#ifndef WS2812_SPI
#    define WS2812_SPI SPID1
#    if defined(WB32F3G71xx) || defined(WB32FQ95xx)
#        define WS2812_SPI SPIDQ
#    else
#        define WS2812_SPI SPID1
#    endif
#endif

#ifndef WS2812_SPI_MOSI_PAL_MODE


@@ 54,6 58,7 @@
#    define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0)
#else
#    define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_1 | SPI_CR1_BR_0) // default
#    define WS2812_SPI_DIVISOR 16
#endif

// Use SPI circular buffer


@@ 148,8 153,14 @@ void ws2812_init(void) {
        NULL, // end_cb
        PAL_PORT(RGB_DI_PIN),
        PAL_PAD(RGB_DI_PIN),
#    if defined(WB32F3G71xx) || defined(WB32FQ95xx)
        0,
        0,
        WS2812_SPI_DIVISOR
#    else
        WS2812_SPI_DIVISOR_CR1_BR_X,
        0
#    endif
#else
    // HAL_SPI_V2
#    if SPI_SUPPORTS_CIRCULAR == TRUE