CuVoodoo STM32F1 firmware template
Macros | Functions
led_ws2812b.h File Reference

library to drive a WS2812B LED chain (API) More...

Go to the source code of this file.

Macros

#define LED_WS2812B_LEDS   48
 number of LEDs on the WS2812B strip
 
#define LED_WS2812B_SPI   SPI1
 SPI peripheral.
 
#define LED_WS2812B_SPI_DR   SPI1_DR
 SPI data register for the DMA.
 
#define LED_WS2812B_SPI_RCC   RCC_SPI1
 SPI peripheral clock.
 
#define LED_WS2812B_SPI_PORT_RCC   RCC_GPIOA
 SPI I/O peripheral clock.
 
#define LED_WS2812B_SPI_PORT   GPIOA
 SPI port.
 
#define LED_WS2812B_SPI_CLK   GPIO_SPI1_SCK
 SPI clock pin (PA5), connect to PWM output.
 
#define LED_WS2812B_SPI_DOUT   GPIO_SPI1_MISO
 SPI data pin (PA6), connect to WS2812B DIN.
 
#define LED_WS2812B_TIMER   TIM3
 timer peripheral
 
#define LED_WS2812B_TIMER_RCC   RCC_TIM3
 timer peripheral clock
 
#define LED_WS2812B_TIMER_OC   TIM_OC3
 timer output compare used to set PWM frequency
 
#define LED_WS2812B_CLK_RCC   RCC_GPIOB
 timer port peripheral clock
 
#define LED_WS2812B_CLK_PORT   GPIOB
 timer port
 
#define LED_WS2812B_CLK_PIN   GPIO_TIM3_CH3
 timer pin to output PWM (PB0), connect to SPI clock input
 
#define LED_WS2812B_DMA   DMA1
 DMA peripheral to put data for WS2812B LED in SPI queue (only DMA1 supports SPI1_TX interrupt)
 
#define LED_WS2812B_DMA_RCC   RCC_DMA1
 DMA peripheral clock.
 
#define LED_WS2812B_DMA_CH   DMA_CHANNEL3
 DMA channel (only DMA1 channel 3 supports SPI1_TX interrupt)
 
#define LED_WS2812B_DMA_IRQ   NVIC_DMA1_CHANNEL3_IRQ
 DMA channel interrupt signal.
 
#define LED_WS2812B_DMA_ISR   dma1_channel3_isr
 DMA channel interrupt service routine.
 

Functions

void led_ws2812b_setup (void)
 setup WS2812B LED driver
 
void led_ws2812b_set_rgb (uint16_t led, uint8_t red, uint8_t green, uint8_t blue)
 set color of a single LED More...
 
bool led_ws2812b_transmit (void)
 transmit color values to WS2812B LEDs More...
 

Detailed Description

library to drive a WS2812B LED chain (API)

Author
King Kévin kingk.nosp@m.evin.nosp@m.@cuvo.nosp@m.odoo.nosp@m..info
Date
2016
Note
peripherals used: SPI SPI peripheral used to control the WS2812B LEDs, timer timer peripheral used to generate SPI clock, DMA DMA peripheral used to send the data

Definition in file led_ws2812b.h.

Function Documentation

◆ led_ws2812b_set_rgb()

void led_ws2812b_set_rgb ( uint16_t  led,
uint8_t  red,
uint8_t  green,
uint8_t  blue 
)

set color of a single LED

Parameters
[in]ledthe LED number to set the color
[in]redthe red color value to set on the LED
[in]greenthe green color value to set on the LED
[in]bluethe blue color value to set on the LED
Note
transmission needs to be done separately

Definition at line 50 of file led_ws2812b.c.

◆ led_ws2812b_transmit()

bool led_ws2812b_transmit ( void  )

transmit color values to WS2812B LEDs

Returns
true if transmission started, false if another transmission is already ongoing

Definition at line 76 of file led_ws2812b.c.