From cf4e97b71cc6d73ae201cf6f1bcf601f402e070c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Thu, 28 Nov 2019 16:48:59 +0100 Subject: [PATCH] fmu-v5x: enable DShot Only the first 6 FMU pins support it. DMA conflict with UART8, which is the GPS2 port. --- boards/px4/fmu-v5x/default.cmake | 2 +- boards/px4/fmu-v5x/nuttx-config/nsh/defconfig | 1 - boards/px4/fmu-v5x/src/board_config.h | 2 ++ boards/px4/fmu-v5x/src/timer_config.c | 13 ++++++++++++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/boards/px4/fmu-v5x/default.cmake b/boards/px4/fmu-v5x/default.cmake index b48a33fd38..0c2c8a3466 100644 --- a/boards/px4/fmu-v5x/default.cmake +++ b/boards/px4/fmu-v5x/default.cmake @@ -24,7 +24,7 @@ px4_add_board( camera_trigger differential_pressure # all available differential pressure drivers distance_sensor # all available distance sensor drivers - #dshot + dshot gps #heater #imu # all available imu drivers diff --git a/boards/px4/fmu-v5x/nuttx-config/nsh/defconfig b/boards/px4/fmu-v5x/nuttx-config/nsh/defconfig index a4c2d61a1e..076a77fda3 100644 --- a/boards/px4/fmu-v5x/nuttx-config/nsh/defconfig +++ b/boards/px4/fmu-v5x/nuttx-config/nsh/defconfig @@ -258,7 +258,6 @@ CONFIG_UART7_RXDMA=y CONFIG_UART7_TXBUFSIZE=3000 CONFIG_UART8_BAUD=57600 CONFIG_UART8_RXBUFSIZE=600 -CONFIG_UART8_RXDMA=y CONFIG_UART8_TXBUFSIZE=1500 CONFIG_USART1_BAUD=57600 CONFIG_USART1_RXBUFSIZE=600 diff --git a/boards/px4/fmu-v5x/src/board_config.h b/boards/px4/fmu-v5x/src/board_config.h index 16b9a01f0a..f8ca8f591f 100644 --- a/boards/px4/fmu-v5x/src/board_config.h +++ b/boards/px4/fmu-v5x/src/board_config.h @@ -426,6 +426,8 @@ #define DIRECT_INPUT_TIMER_CHANNELS 8 +#define BOARD_DSHOT_MOTOR_ASSIGNMENT {3, 2, 1, 0, 4, 5, 6, 7}; + /* User GPIOs * diff --git a/boards/px4/fmu-v5x/src/timer_config.c b/boards/px4/fmu-v5x/src/timer_config.c index 51f07bbf73..4b2675775f 100644 --- a/boards/px4/fmu-v5x/src/timer_config.c +++ b/boards/px4/fmu-v5x/src/timer_config.c @@ -83,7 +83,12 @@ __EXPORT const io_timers_t io_timers[MAX_IO_TIMERS] = { .last_channel_index = 3, .handler = io_timer_handler0, .vectorno = STM32_IRQ_TIM1CC, - + .dshot = { + .dma_base = STM32_DMA2_BASE, + .dmamap = DMAMAP_TIM1_UP, + .start_ccr_register = TIM_DMABASE_CCR1, + .channels_number = 4u /* CCR1, CCR2, CCR3 and CCR4 */ + } }, { .base = STM32_TIM4_BASE, @@ -94,6 +99,12 @@ __EXPORT const io_timers_t io_timers[MAX_IO_TIMERS] = { .last_channel_index = 5, .handler = io_timer_handler1, .vectorno = STM32_IRQ_TIM4, + .dshot = { + .dma_base = STM32_DMA1_BASE, + .dmamap = DMAMAP_TIM4_UP, + .start_ccr_register = TIM_DMABASE_CCR2, + .channels_number = 2u /* CCR2 and CCR3 */ + } }, { .base = STM32_TIM12_BASE,