diff options
author | Nick Brassel <nick@tzarc.org> | 2020-07-16 16:39:49 +1000 |
---|---|---|
committer | Drashna Jael're <drashna@live.com> | 2020-09-30 02:59:52 -0700 |
commit | 6a5700b31acafb69d4abed0806b753dda6feac70 (patch) | |
tree | 6fb44c583473505c35448949cf4928e68abb2b50 /drivers/chibios | |
parent | 8c38482ebd1594988a3c3797b73cc534dca9a447 (diff) |
Add support for DMAMUX-capable MCU configuration with WS2812 PWM driver. (#9471)
Diffstat (limited to 'drivers/chibios')
-rw-r--r-- | drivers/chibios/ws2812_pwm.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/chibios/ws2812_pwm.c b/drivers/chibios/ws2812_pwm.c index 7113db11e0..d93fa24735 100644 --- a/drivers/chibios/ws2812_pwm.c +++ b/drivers/chibios/ws2812_pwm.c @@ -23,6 +23,9 @@ #ifndef WS2812_DMA_CHANNEL # define WS2812_DMA_CHANNEL 2 // DMA Channel for TIMx_UP #endif +#if (STM32_DMA_SUPPORTS_DMAMUX == TRUE) && !defined(WS2812_DMAMUX_ID) +# error "please consult your MCU's datasheet and specify in your config.h: #define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM?_UP" +#endif // Push Pull or Open Drain Configuration // Default Push Pull @@ -184,6 +187,11 @@ void ws2812_init(void) { dmaStreamSetMode(WS2812_DMA_STREAM, STM32_DMA_CR_CHSEL(WS2812_DMA_CHANNEL) | STM32_DMA_CR_DIR_M2P | STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_WORD | STM32_DMA_CR_MINC | STM32_DMA_CR_CIRC | STM32_DMA_CR_PL(3)); // M2P: Memory 2 Periph; PL: Priority Level +#if (STM32_DMA_SUPPORTS_DMAMUX == TRUE) + // If the MCU has a DMAMUX we need to assign the correct resource + dmaSetRequestSource(WS2812_DMA_STREAM, WS2812_DMAMUX_ID); +#endif + // Start DMA dmaStreamEnable(WS2812_DMA_STREAM); |