[fix] fix some DMA issues and motor pins for DShot on Tawaki (#2450)

also:
- activate the mag ahrs update by default
- use board not rotated by default
This commit is contained in:
Gautier Hattenberger
2019-07-06 10:10:21 +02:00
committed by GitHub
parent 096209b787
commit 7b2050a56f
5 changed files with 87 additions and 37 deletions
+7 -6
View File
@@ -20,14 +20,15 @@
<define name="IMU_MPU_ACCEL_RANGE" value="MPU60X0_ACCEL_RANGE_8G"/>
<configure name="IMU_MPU_SPI_DEV" value="spi4" case="upper|lower"/>
<configure name="IMU_MPU_SPI_SLAVE_IDX" value="SPI_SLAVE5"/>
<define name="IMU_MPU_CHAN_X" value="1" cond="ifneq (,$(findstring $(BOARD_TAWAKI_ROTATED),0 FALSE))"/>
<define name="IMU_MPU_CHAN_Y" value="0" cond="ifneq (,$(findstring $(BOARD_TAWAKI_ROTATED),0 FALSE))"/>
<define name="IMU_MPU_Y_SIGN" value="-1" cond="ifneq (,$(findstring $(BOARD_TAWAKI_ROTATED),0 FALSE))"/>
<define name="IMU_MPU_CHAN_X" value="1" cond="ifeq (,$(findstring $(BOARD_TAWAKI_ROTATED),1 TRUE))"/>
<define name="IMU_MPU_CHAN_Y" value="0" cond="ifeq (,$(findstring $(BOARD_TAWAKI_ROTATED),1 TRUE))"/>
<define name="IMU_MPU_Y_SIGN" value="-1" cond="ifeq (,$(findstring $(BOARD_TAWAKI_ROTATED),1 TRUE))"/>
<configure name="BMP3_I2C_DEV" value="i2c4" case="upper|lower"/>
<define name="BMP3_SLAVE_ADDR" value="BMP3_I2C_ADDR_ALT"/>
<configure name="MAG_LIS3MDL_I2C_DEV" value="i2c4" case="upper|lower"/>
<define name="LIS3MDL_CHAN_X" value="1" cond="ifneq (,$(findstring $(BOARD_TAWAKI_ROTATED),0 FALSE))"/>
<define name="LIS3MDL_CHAN_Y" value="0" cond="ifneq (,$(findstring $(BOARD_TAWAKI_ROTATED),0 FALSE))"/>
<define name="LIS3MDL_CHAN_X_SIGN" value="-" cond="ifneq (,$(findstring $(BOARD_TAWAKI_ROTATED),0 FALSE))"/>
<define name="MODULE_LIS3MDL_UPDATE_AHRS"/>
<define name="LIS3MDL_CHAN_X" value="1" cond="ifeq (,$(findstring $(BOARD_TAWAKI_ROTATED),1 TRUE))"/>
<define name="LIS3MDL_CHAN_Y" value="0" cond="ifeq (,$(findstring $(BOARD_TAWAKI_ROTATED),1 TRUE))"/>
<define name="LIS3MDL_CHAN_X_SIGN" value="-" cond="ifeq (,$(findstring $(BOARD_TAWAKI_ROTATED),1 TRUE))"/>
</makefile>
</module>
@@ -28,6 +28,7 @@
#include "modules/actuators/actuators_dshot.h"
#include "modules/actuators/esc_dshot.h"
#include "mcu_periph/gpio.h"
#include BOARD_CONFIG
uint16_t actuators_dshot_values[ACTUATORS_DSHOT_NB];
@@ -215,7 +215,7 @@
//#define STM32_I2C_I2C3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
//#define STM32_I2C_I2C3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
#define STM32_I2C_I2C4_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 1)
#define STM32_I2C_I2C4_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) // FIXME check if 5 is really not possible
#define STM32_I2C_I2C4_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
#define STM32_I2C_I2C1_IRQ_PRIORITY 5
#define STM32_I2C_I2C2_IRQ_PRIORITY 5
#define STM32_I2C_I2C3_IRQ_PRIORITY 5
@@ -297,6 +297,11 @@
#define STM32_PWM1_UP_DMA_IRQ_PRIORITY 6
#define STM32_PWM1_UP_DMA_PRIORITY 2
#define STM32_PWM4_UP_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_PWM4_UP_DMA_CHANNEL 2
#define STM32_PWM4_UP_DMA_IRQ_PRIORITY 6
#define STM32_PWM4_UP_DMA_PRIORITY 2
/*
* SERIAL driver system settings.
*/
+70 -28
View File
@@ -319,38 +319,78 @@
/**
* DSHOT
*/
#define DSHOT_SERVO_1 0
#define DSHOT_SERVO_1_GPIO GPIOE
#define DSHOT_SERVO_1_PIN GPIO9
#define DSHOT_SERVO_1_AF GPIO_AF1
#define DSHOT_SERVO_1_DRIVER DSHOTD1
#define DSHOT_SERVO_1_CHANNEL 0
#define DSHOT_SERVO_2 1
#define DSHOT_SERVO_2_GPIO GPIOE
#define DSHOT_SERVO_2_PIN GPIO11
#define DSHOT_SERVO_2_AF GPIO_AF1
#define DSHOT_SERVO_2_DRIVER DSHOTD1
#define DSHOT_SERVO_2_CHANNEL 1
#define DSHOT_SERVO_3 2
#define DSHOT_SERVO_3_GPIO GPIOE
#define DSHOT_SERVO_3_PIN GPIO13
#define DSHOT_SERVO_3_AF GPIO_AF1
#define DSHOT_SERVO_3_DRIVER DSHOTD1
#define DSHOT_SERVO_3_CHANNEL 2
#define DSHOT_SERVO_4 3
#define DSHOT_SERVO_4_GPIO GPIOE
#define DSHOT_SERVO_4_PIN GPIO14
#define DSHOT_SERVO_4_AF GPIO_AF1
#define DSHOT_SERVO_4_DRIVER DSHOTD1
#define DSHOT_SERVO_4_CHANNEL 3
#ifndef DSHOT_TELEMETRY_DEV
#define DSHOT_TELEMETRY_DEV NULL
#endif
// Servo B1, B2, B3, B4 on TM4 are primary DSHOT connector
#define DSHOT_SERVO_1 1
#define DSHOT_SERVO_1_GPIO GPIOB
#define DSHOT_SERVO_1_PIN GPIO6
#define DSHOT_SERVO_1_AF GPIO_AF2
#define DSHOT_SERVO_1_DRIVER DSHOTD4
#define DSHOT_SERVO_1_CHANNEL 0
#define DSHOT_SERVO_2 2
#define DSHOT_SERVO_2_GPIO GPIOB
#define DSHOT_SERVO_2_PIN GPIO7
#define DSHOT_SERVO_2_AF GPIO_AF2
#define DSHOT_SERVO_2_DRIVER DSHOTD4
#define DSHOT_SERVO_2_CHANNEL 1
#define DSHOT_SERVO_3 3
#define DSHOT_SERVO_3_GPIO GPIOB
#define DSHOT_SERVO_3_PIN GPIO8
#define DSHOT_SERVO_3_AF GPIO_AF2
#define DSHOT_SERVO_3_DRIVER DSHOTD4
#define DSHOT_SERVO_3_CHANNEL 2
#define DSHOT_SERVO_4 4
#define DSHOT_SERVO_4_GPIO GPIOB
#define DSHOT_SERVO_4_PIN GPIO9
#define DSHOT_SERVO_4_AF GPIO_AF2
#define DSHOT_SERVO_4_DRIVER DSHOTD4
#define DSHOT_SERVO_4_CHANNEL 3
#define DSHOT_CONF_TIM4 1
#define DSHOT_CONF4_DEF { \
.dma_stream = STM32_PWM4_UP_DMA_STREAM, \
.dma_channel = STM32_PWM4_UP_DMA_CHANNEL, \
.pwmp = &PWMD4, \
.tlm_sd = DSHOT_TELEMETRY_DEV \
}
#if USE_DSHOT_TIM1 // Servo A1, A2, A3, A4 on TIM1 only activated if needed
#define DSHOT_SERVO_5 5
#define DSHOT_SERVO_5_GPIO GPIOE
#define DSHOT_SERVO_5_PIN GPIO9
#define DSHOT_SERVO_5_AF GPIO_AF1
#define DSHOT_SERVO_5_DRIVER DSHOTD1
#define DSHOT_SERVO_5_CHANNEL 0
#define DSHOT_SERVO_6 6
#define DSHOT_SERVO_6_GPIO GPIOE
#define DSHOT_SERVO_6_PIN GPIO11
#define DSHOT_SERVO_6_AF GPIO_AF1
#define DSHOT_SERVO_6_DRIVER DSHOTD1
#define DSHOT_SERVO_6_CHANNEL 1
#define DSHOT_SERVO_7 7
#define DSHOT_SERVO_7_GPIO GPIOE
#define DSHOT_SERVO_7_PIN GPIO13
#define DSHOT_SERVO_7_AF GPIO_AF1
#define DSHOT_SERVO_7_DRIVER DSHOTD1
#define DSHOT_SERVO_7_CHANNEL 2
#define DSHOT_SERVO_8 8
#define DSHOT_SERVO_8_GPIO GPIOE
#define DSHOT_SERVO_8_PIN GPIO14
#define DSHOT_SERVO_8_AF GPIO_AF1
#define DSHOT_SERVO_8_DRIVER DSHOTD1
#define DSHOT_SERVO_8_CHANNEL 3
#define DSHOT_CONF_TIM1 1
#define DSHOT_CONF1_DEF { \
.dma_stream = STM32_PWM1_UP_DMA_STREAM, \
@@ -359,6 +399,8 @@
.tlm_sd = DSHOT_TELEMETRY_DEV \
}
#endif
/**
* UART2 (Modem with optional flow control on AUXa disabled by default)
*/
@@ -39,10 +39,11 @@
#endif
/** Maxnum number of DSHOT commands
* This should be large enough for max applications
* This should be large enough for max applications:
* 8 motors +1 in case motor count starts at 1 and not 0
*/
#ifndef ACTUATORS_DSHOT_NB
#define ACTUATORS_DSHOT_NB 8
#define ACTUATORS_DSHOT_NB (8+1)
#endif
extern uint16_t actuators_dshot_values[ACTUATORS_DSHOT_NB];