Skip to content

modm:driver:sk6812: SK6812 RGBW Driver

Drives any number of chained SK6812 RGBW LEDs using a 3-bit SPI encoding (0 -> 100, 1 -> 110) running at 3 MHz. Thus, writing one LED takes 32µs and 12 bytes of memory.

There are several caveats:

  1. This only provides a blocking write API, due to technical limitations.
  2. Atomicity is not enforced, this should be done externally if required.
  3. The memory footprint is 4x as large, due to the bit stuffing for SPI.
  4. There is no enforced reset period of at least 50µs after the write is finished, it is up to the user to not trigger another write too early.

This driver directly accesses the STM32 HAL to keep the transmit register full, due to a lack of DMA capability in modm, thus this driver is STM32-only for now.

SystemClock Limitations

This driver requires a 3 MHz ±10% SPI clock in order to get the protocol timing right. Depending on your device clock tree and the SPI prescalers, this might require lowering the frequency of the entire device! If this is unacceptable, consider using APA102.

This module is only available for stm32.

Dependencies

modm:driver:sk6812 modm_driver_sk6812 modm: driver: sk6812 modm_architecture_spi modm: architecture: spi modm_driver_sk6812->modm_architecture_spi modm_architecture_unaligned modm: architecture: unaligned modm_driver_sk6812->modm_architecture_unaligned modm_math_units modm: math: units modm_driver_sk6812->modm_math_units modm_ui_color modm: ui: color modm_driver_sk6812->modm_ui_color

Limited availability: Check with 'lbuild discover' if this module is available for your target!