From b60135d54aa875932d5eef12286df1e67033ba23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?King=20K=C3=A9vin?= Date: Sun, 1 May 2016 14:39:05 +0200 Subject: [PATCH] move defines to header --- lib/led_ws2812b.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lib/led_ws2812b.h b/lib/led_ws2812b.h index 5c61ff2..6659532 100644 --- a/lib/led_ws2812b.h +++ b/lib/led_ws2812b.h @@ -23,6 +23,37 @@ /** number of LEDs on the WS2812b strip */ #define WS2812B_LEDS 48 +/** peripheral configuration */ +/** @defgroup led_ws2812b_spi SPI peripheral used to control the WS2812b LEDs + * @{ + */ +#define WS2812B_SPI SPI1 /**< SPI peripheral */ +#define WS2812B_SPI_DR SPI1_DR /**< SPI data register for the DMA */ +#define WS2812B_SPI_RCC RCC_SPI1 /**< SPI peripheral clock */ +#define WS2812B_SPI_PORT GPIOA /**< SPI port */ +#define WS2812B_SPI_CLK GPIO_SPI1_SCK /**< SPI clock pin (PA5), connect to PWM output */ +#define WS2812B_SPI_DOUT GPIO_SPI1_MISO /**< SPI data pin (PA6), connect to WS2812b DIN */ +/** @} */ +/** @defgroup led_ws2812b_timer timer peripheral used to generate SPI clock + * @{ + */ +#define WS2812B_TIMER TIM3 /**< timer peripheral */ +#define WS2812B_TIMER_RCC RCC_TIM3 /**< timer peripheral clock */ +#define WS2812B_TIMER_OC TIM_OC3 /**< timer output compare used to set PWM frequency */ +#define WS2812B_CLK_RCC RCC_GPIOB /**< timer port peripheral clock */ +#define WS2812B_CLK_PORT GPIOB /**< timer port */ +#define WS2812B_CLK_PIN GPIO_TIM3_CH3 /**< timer pin to output PWM (PB0), connect to SPI clock input */ +/** @} */ +/** @defgroup led_ws2812b_dma DMA peripheral used to send the data + * @{ + */ +#define WS2812B_DMA DMA1 /**< DMA peripheral to put data for WS2812b LED in SPI queue (only DMA1 supports SPI1_TX interrupt) */ +#define WS2812B_DMA_RCC RCC_DMA1 /**< DMA peripheral clock */ +#define WS2812B_DMA_CH DMA_CHANNEL3 /**< DMA channel (only DMA1 channel 3 supports SPI1_TX interrupt) */ +#define WS2812B_DMA_IRQ NVIC_DMA1_CHANNEL3_IRQ /**< DMA channel interrupt signal */ +#define WS2812B_DMA_ISR dma1_channel3_isr /**< DMA channel interrupt service routine */ +/** @} */ + /** @brief setup WS2812b LED driver */ void ws2812b_setup(void); /** @brief set color of a single LED