mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-13 19:40:31 +03:00
Further work on gyro SPI selection
This commit is contained in:
parent
3545775fdf
commit
9a3cad9ca3
12 changed files with 120 additions and 54 deletions
22
Makefile
22
Makefile
|
@ -115,6 +115,7 @@ GROUP_1_TARGETS := \
|
|||
AIORACERF3 \
|
||||
AIR32 \
|
||||
AIRBOTF4 \
|
||||
AIRBOTF4SD \
|
||||
AIRHEROF3 \
|
||||
ALIENFLIGHTF1 \
|
||||
ALIENFLIGHTF3 \
|
||||
|
@ -124,14 +125,15 @@ GROUP_1_TARGETS := \
|
|||
BEEBRAIN \
|
||||
BEEROTORF4 \
|
||||
BETAFLIGHTF3 \
|
||||
BLUEJAYF4 \
|
||||
CC3D \
|
||||
CC3D_OPBL \
|
||||
|
||||
GROUP_2_TARGETS := \
|
||||
CHEBUZZF3 \
|
||||
CJMCU \
|
||||
CL_RACINGF4 \
|
||||
COLIBRI \
|
||||
|
||||
GROUP_2_TARGETS := \
|
||||
COLIBRI_OPBL \
|
||||
COLIBRI_RACE \
|
||||
DOGE \
|
||||
|
@ -145,11 +147,10 @@ GROUP_2_TARGETS := \
|
|||
IMPULSERCF3 \
|
||||
IRCFUSIONF3 \
|
||||
ISHAPEDF3 \
|
||||
BLUEJAYF4 \
|
||||
KAKUTEF4 \
|
||||
KISSCC \
|
||||
|
||||
GROUP_3_TARGETS := \
|
||||
KAKUTEF4 \
|
||||
KISSCC \
|
||||
KIWIF4 \
|
||||
LUX_RACE \
|
||||
LUXV2_RACE \
|
||||
|
@ -158,19 +159,20 @@ GROUP_3_TARGETS := \
|
|||
MULTIFLITEPICO \
|
||||
NAZE \
|
||||
NERO \
|
||||
NUCLEOF7 \
|
||||
OMNIBUS \
|
||||
OMNIBUSF4 \
|
||||
OMNIBUSF4SD \
|
||||
PIKOBLX \
|
||||
PLUMF4 \
|
||||
PODIUMF4 \
|
||||
RACEBASE \
|
||||
|
||||
GROUP_4_TARGETS := \
|
||||
RCEXPLORERF3 \
|
||||
REVO \
|
||||
REVO_OPBL \
|
||||
REVOLT \
|
||||
REVONANO \
|
||||
|
||||
GROUP_4_TARGETS := \
|
||||
RMDO \
|
||||
SINGULARITY \
|
||||
SIRINFPV \
|
||||
|
@ -181,10 +183,8 @@ GROUP_4_TARGETS := \
|
|||
SPRACINGF3EVO \
|
||||
SPRACINGF3MINI \
|
||||
SPRACINGF3NEO \
|
||||
KROOZX \
|
||||
NUCLEOF7 \
|
||||
OMNIBUSF4 \
|
||||
STM32F3DISCOVERY \
|
||||
TINYBEEF3 \
|
||||
|
||||
GROUP_OTHER_TARGETS := $(filter-out $(GROUP_1_TARGETS) $(GROUP_2_TARGETS) $(GROUP_3_TARGETS) $(GROUP_4_TARGETS), $(VALID_TARGETS))
|
||||
|
||||
|
|
|
@ -175,9 +175,10 @@ typedef enum {
|
|||
MPU_65xx_I2C,
|
||||
MPU_65xx_SPI,
|
||||
MPU_9250_SPI,
|
||||
ICM_20689_SPI,
|
||||
ICM_20608_SPI,
|
||||
ICM_20601_SPI,
|
||||
ICM_20602_SPI,
|
||||
ICM_20608_SPI,
|
||||
ICM_20689_SPI,
|
||||
BMI_160_SPI,
|
||||
} mpuSensor_e;
|
||||
|
||||
|
|
|
@ -20,8 +20,9 @@
|
|||
#define MPU6500_WHO_AM_I_CONST (0x70)
|
||||
#define MPU9250_WHO_AM_I_CONST (0x71)
|
||||
#define MPU9255_WHO_AM_I_CONST (0x73)
|
||||
#define ICM20608G_WHO_AM_I_CONST (0xAF)
|
||||
#define ICM20601_WHO_AM_I_CONST (0xAC)
|
||||
#define ICM20602_WHO_AM_I_CONST (0x12)
|
||||
#define ICM20608G_WHO_AM_I_CONST (0xAF)
|
||||
|
||||
#define MPU6500_BIT_RESET (0x80)
|
||||
|
||||
|
|
|
@ -91,12 +91,15 @@ uint8_t mpu6500SpiDetect(const busDevice_t *bus)
|
|||
case MPU9255_WHO_AM_I_CONST:
|
||||
mpuDetected = MPU_9250_SPI;
|
||||
break;
|
||||
case ICM20608G_WHO_AM_I_CONST:
|
||||
mpuDetected = ICM_20608_SPI;
|
||||
case ICM20601_WHO_AM_I_CONST:
|
||||
mpuDetected = ICM_20601_SPI;
|
||||
break;
|
||||
case ICM20602_WHO_AM_I_CONST:
|
||||
mpuDetected = ICM_20602_SPI;
|
||||
break;
|
||||
case ICM20608G_WHO_AM_I_CONST:
|
||||
mpuDetected = ICM_20608_SPI;
|
||||
break;
|
||||
default:
|
||||
mpuDetected = MPU_NONE;
|
||||
}
|
||||
|
|
|
@ -170,8 +170,10 @@ static const char * const lookupTableAccHardware[] = {
|
|||
"MPU6000",
|
||||
"MPU6500",
|
||||
"MPU9250",
|
||||
"ICM20689",
|
||||
"ICM20601",
|
||||
"ICM20602",
|
||||
"ICM20608",
|
||||
"ICM20689",
|
||||
"BMI160",
|
||||
"FAKE"
|
||||
};
|
||||
|
@ -207,8 +209,8 @@ static const char * const sensorTypeNames[] = {
|
|||
#define SENSOR_NAMES_MASK (SENSOR_GYRO | SENSOR_ACC | SENSOR_BARO | SENSOR_MAG)
|
||||
|
||||
static const char * const sensorHardwareNames[4][16] = {
|
||||
{ "", "None", "MPU6050", "L3G4200D", "MPU3050", "L3GD20", "MPU6000", "MPU6500", "MPU9250", "ICM20689", "ICM20608G", "ICM20602", "BMI160", "FAKE", NULL },
|
||||
{ "", "None", "ADXL345", "MPU6050", "MMA845x", "BMA280", "LSM303DLHC", "MPU6000", "MPU6500", "ICM20689", "MPU9250", "ICM20608G", "ICM20602", "BMI160", "FAKE", NULL },
|
||||
{ "", "None", "MPU6050", "L3G4200D", "MPU3050", "L3GD20", "MPU6000", "MPU6500", "MPU9250", "ICM20601", "ICM20602", "ICM20608G", "ICM20689", "BMI160", "FAKE", NULL },
|
||||
{ "", "None", "ADXL345", "MPU6050", "MMA845x", "BMA280", "LSM303DLHC", "MPU6000", "MPU6500", "MPU9250", "ICM20601", "ICM20602", "ICM20608G", "ICM20689", "BMI160", "FAKE", NULL },
|
||||
{ "", "None", "BMP085", "MS5611", "BMP280", NULL },
|
||||
{ "", "None", "HMC5883", "AK8975", "AK8963", NULL }
|
||||
};
|
||||
|
|
|
@ -214,8 +214,9 @@ retry:
|
|||
#endif
|
||||
; // fallthrough
|
||||
case ACC_MPU6500:
|
||||
case ACC_ICM20608G:
|
||||
case ACC_ICM20601:
|
||||
case ACC_ICM20602:
|
||||
case ACC_ICM20608G:
|
||||
#if defined(USE_ACC_MPU6500) || defined(USE_ACC_SPI_MPU6500)
|
||||
#ifdef USE_ACC_SPI_MPU6500
|
||||
if (mpu6500AccDetect(dev) || mpu6500SpiAccDetect(dev))
|
||||
|
@ -230,12 +231,15 @@ retry:
|
|||
case MPU_9250_SPI:
|
||||
accHardware = ACC_MPU9250;
|
||||
break;
|
||||
case ICM_20608_SPI:
|
||||
accHardware = ACC_ICM20608G;
|
||||
case ICM_20601_SPI:
|
||||
accHardware = ACC_ICM20601;
|
||||
break;
|
||||
case ICM_20602_SPI:
|
||||
accHardware = ACC_ICM20602;
|
||||
break;
|
||||
case ICM_20608_SPI:
|
||||
accHardware = ACC_ICM20608G;
|
||||
break;
|
||||
default:
|
||||
accHardware = ACC_MPU6500;
|
||||
}
|
||||
|
|
|
@ -32,10 +32,11 @@ typedef enum {
|
|||
ACC_LSM303DLHC,
|
||||
ACC_MPU6000,
|
||||
ACC_MPU6500,
|
||||
ACC_ICM20689,
|
||||
ACC_MPU9250,
|
||||
ACC_ICM20608G,
|
||||
ACC_ICM20601,
|
||||
ACC_ICM20602,
|
||||
ACC_ICM20608G,
|
||||
ACC_ICM20689,
|
||||
ACC_BMI160,
|
||||
ACC_FAKE
|
||||
} accelerationSensor_e;
|
||||
|
|
|
@ -87,7 +87,7 @@ static void *notchFilter2[3];
|
|||
|
||||
#ifdef STM32F10X
|
||||
#define GYRO_SYNC_DENOM_DEFAULT 8
|
||||
#elif defined(USE_GYRO_SPI_MPU6000) || defined(USE_GYRO_SPI_MPU6500) || defined(USE_GYRO_SPI_ICM20689)
|
||||
#elif defined(USE_GYRO_SPI_MPU6000) || defined(USE_GYRO_SPI_MPU6500) || defined(USE_GYRO_SPI_ICM20601) || defined(USE_GYRO_SPI_ICM20689)
|
||||
#define GYRO_SYNC_DENOM_DEFAULT 1
|
||||
#else
|
||||
#define GYRO_SYNC_DENOM_DEFAULT 4
|
||||
|
@ -111,7 +111,7 @@ PG_RESET_TEMPLATE(gyroConfig_t, gyroConfig,
|
|||
.gyro_soft_notch_cutoff_2 = 100
|
||||
);
|
||||
|
||||
#if defined(USE_GYRO_MPU6050) || defined(USE_GYRO_MPU3050) || defined(USE_GYRO_MPU6500) || defined(USE_GYRO_SPI_MPU6500) || defined(USE_GYRO_SPI_MPU6000) || defined(USE_ACC_MPU6050) || defined(USE_GYRO_SPI_MPU9250) || defined(USE_GYRO_SPI_ICM20689)
|
||||
#if defined(USE_GYRO_MPU6050) || defined(USE_GYRO_MPU3050) || defined(USE_GYRO_MPU6500) || defined(USE_GYRO_SPI_MPU6500) || defined(USE_GYRO_SPI_MPU6000) || defined(USE_ACC_MPU6050) || defined(USE_GYRO_SPI_MPU9250) || defined(USE_GYRO_SPI_ICM20601) || defined(USE_GYRO_SPI_ICM20689)
|
||||
static const extiConfig_t *selectMPUIntExtiConfig(void)
|
||||
{
|
||||
#if defined(MPU_INT_EXTI)
|
||||
|
@ -204,8 +204,9 @@ STATIC_UNIT_TESTED gyroSensor_e gyroDetect(gyroDev_t *dev)
|
|||
|
||||
#if defined(USE_GYRO_MPU6500) || defined(USE_GYRO_SPI_MPU6500)
|
||||
case GYRO_MPU6500:
|
||||
case GYRO_ICM20608G:
|
||||
case GYRO_ICM20601:
|
||||
case GYRO_ICM20602:
|
||||
case GYRO_ICM20608G:
|
||||
#ifdef USE_GYRO_SPI_MPU6500
|
||||
if (mpu6500GyroDetect(dev) || mpu6500SpiGyroDetect(dev)) {
|
||||
#else
|
||||
|
@ -215,12 +216,15 @@ STATIC_UNIT_TESTED gyroSensor_e gyroDetect(gyroDev_t *dev)
|
|||
case MPU_9250_SPI:
|
||||
gyroHardware = GYRO_MPU9250;
|
||||
break;
|
||||
case ICM_20608_SPI:
|
||||
gyroHardware = GYRO_ICM20608G;
|
||||
case ICM_20601_SPI:
|
||||
gyroHardware = GYRO_ICM20601;
|
||||
break;
|
||||
case ICM_20602_SPI:
|
||||
gyroHardware = GYRO_ICM20602;
|
||||
break;
|
||||
case ICM_20608_SPI:
|
||||
gyroHardware = GYRO_ICM20608G;
|
||||
break;
|
||||
default:
|
||||
gyroHardware = GYRO_MPU6500;
|
||||
}
|
||||
|
@ -289,7 +293,7 @@ STATIC_UNIT_TESTED gyroSensor_e gyroDetect(gyroDev_t *dev)
|
|||
bool gyroInit(void)
|
||||
{
|
||||
memset(&gyro, 0, sizeof(gyro));
|
||||
#if defined(USE_GYRO_MPU6050) || defined(USE_GYRO_MPU3050) || defined(USE_GYRO_MPU6500) || defined(USE_GYRO_SPI_MPU6500) || defined(USE_GYRO_SPI_MPU6000) || defined(USE_ACC_MPU6050) || defined(USE_GYRO_SPI_MPU9250) || defined(USE_GYRO_SPI_ICM20689)
|
||||
#if defined(USE_GYRO_MPU6050) || defined(USE_GYRO_MPU3050) || defined(USE_GYRO_MPU6500) || defined(USE_GYRO_SPI_MPU6500) || defined(USE_GYRO_SPI_MPU6000) || defined(USE_ACC_MPU6050) || defined(USE_GYRO_SPI_MPU9250) || defined(USE_GYRO_SPI_ICM20601) || defined(USE_GYRO_SPI_ICM20689)
|
||||
gyroDev0.mpuIntExtiConfig = selectMPUIntExtiConfig();
|
||||
#ifdef USE_DUAL_GYRO
|
||||
// set cnsPin using GYRO_n_CS_PIN defined in target.h
|
||||
|
@ -308,9 +312,10 @@ bool gyroInit(void)
|
|||
switch (gyroHardware) {
|
||||
case GYRO_MPU6500:
|
||||
case GYRO_MPU9250:
|
||||
case GYRO_ICM20689:
|
||||
case GYRO_ICM20608G:
|
||||
case GYRO_ICM20601:
|
||||
case GYRO_ICM20602:
|
||||
case GYRO_ICM20608G:
|
||||
case GYRO_ICM20689:
|
||||
// do nothing, as gyro supports 32kHz
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -32,9 +32,10 @@ typedef enum {
|
|||
GYRO_MPU6000,
|
||||
GYRO_MPU6500,
|
||||
GYRO_MPU9250,
|
||||
GYRO_ICM20689,
|
||||
GYRO_ICM20608G,
|
||||
GYRO_ICM20601,
|
||||
GYRO_ICM20602,
|
||||
GYRO_ICM20608G,
|
||||
GYRO_ICM20689,
|
||||
GYRO_BMI160,
|
||||
GYRO_FAKE
|
||||
} gyroSensor_e;
|
||||
|
|
0
src/main/target/REVO/AIRBOTF4SD.mk
Normal file
0
src/main/target/REVO/AIRBOTF4SD.mk
Normal file
|
@ -21,6 +21,10 @@
|
|||
#define TARGET_BOARD_IDENTIFIER "AIR4"
|
||||
#define USBD_PRODUCT_STRING "AirbotF4"
|
||||
|
||||
#elif defined(AIRBOTF4SD)
|
||||
#define TARGET_BOARD_IDENTIFIER "A4SD"
|
||||
#define USBD_PRODUCT_STRING "AirbotF4SD"
|
||||
|
||||
#elif defined(REVOLT)
|
||||
#define TARGET_BOARD_IDENTIFIER "RVLT"
|
||||
#define USBD_PRODUCT_STRING "Revolt"
|
||||
|
@ -53,7 +57,7 @@
|
|||
#endif
|
||||
|
||||
// Disable LED1, conflicts with AirbotF4/Flip32F4/Revolt beeper
|
||||
#if defined(AIRBOTF4)
|
||||
#if defined(AIRBOTF4) || defined(AIRBOTF4SD)
|
||||
#define BEEPER PB4
|
||||
#define BEEPER_INVERTED
|
||||
#elif defined(REVOLT)
|
||||
|
@ -68,7 +72,11 @@
|
|||
#endif
|
||||
|
||||
// PC0 used as inverter select GPIO
|
||||
#ifdef AIRBOTF4SD
|
||||
#define INVERTER_PIN_UART6 PD2
|
||||
#else
|
||||
#define INVERTER_PIN_UART1 PC0
|
||||
#endif
|
||||
|
||||
#define MPU6000_CS_PIN PA4
|
||||
#define MPU6000_SPI_INSTANCE SPI1
|
||||
|
@ -79,6 +87,15 @@
|
|||
#define GYRO
|
||||
#define ACC
|
||||
|
||||
#ifdef AIRBOTF4SD
|
||||
#define USE_GYRO_SPI_ICM20601
|
||||
#define ICM20601_CS_PIN PB13 // served through MPU6500 code
|
||||
#define ICM20601_SPI_INSTANCE SPI1
|
||||
#define USE_DUAL_GYRO
|
||||
#define GYRO_0_CS_PIN MPU6000_CS_PIN
|
||||
#define GYRO_1_CS_PIN ICM20601_CS_PIN
|
||||
#endif
|
||||
|
||||
#if defined(SOULF4)
|
||||
#define USE_GYRO_SPI_MPU6000
|
||||
#define GYRO_MPU6000_ALIGN CW180_DEG
|
||||
|
@ -126,15 +143,39 @@
|
|||
|
||||
#define BARO
|
||||
#define USE_BARO_MS5611
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(AIRBOTF4SD)
|
||||
// SDCARD support for AIRBOTF4SD
|
||||
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
|
||||
#define USE_SDCARD
|
||||
#define USE_SDCARD_SPI3
|
||||
|
||||
#define SDCARD_DETECT_INVERTED
|
||||
#define SDCARD_DETECT_PIN PC0
|
||||
#define SDCARD_SPI_INSTANCE SPI3
|
||||
#define SDCARD_SPI_CS_PIN SPI3_NSS_PIN
|
||||
|
||||
// SPI2 is on the APB1 bus whose clock runs at 84MHz. Divide to under 400kHz for init:
|
||||
#define SDCARD_SPI_INITIALIZATION_CLOCK_DIVIDER 256 // 328kHz
|
||||
// Divide to under 25MHz for normal operation:
|
||||
#define SDCARD_SPI_FULL_SPEED_CLOCK_DIVIDER 4 // 21MHz
|
||||
|
||||
#define SDCARD_DMA_CHANNEL_TX DMA1_Stream5
|
||||
#define SDCARD_DMA_CHANNEL_TX_COMPLETE_FLAG DMA_FLAG_TCIF5
|
||||
#define SDCARD_DMA_CLK RCC_AHB1Periph_DMA1
|
||||
#define SDCARD_DMA_CHANNEL DMA_Channel_0
|
||||
|
||||
#else
|
||||
|
||||
#define M25P16_CS_PIN PB3
|
||||
#define M25P16_SPI_INSTANCE SPI3
|
||||
|
||||
#define USE_FLASHFS
|
||||
#define USE_FLASH_M25P16
|
||||
|
||||
#endif // AIRBOTF4SD
|
||||
|
||||
|
||||
#define USE_VCP
|
||||
#if defined(PODIUMF4)
|
||||
#define VBUS_SENSING_PIN PA8
|
||||
|
@ -186,6 +227,10 @@
|
|||
#define VBAT_ADC_CHANNEL ADC_Channel_13
|
||||
#endif
|
||||
|
||||
#if defined(AIRBOTF4SD)
|
||||
#define RSSI_ADC_PIN PA0
|
||||
#endif
|
||||
|
||||
#define DEFAULT_RX_FEATURE FEATURE_RX_SERIAL
|
||||
#if defined(PODIUMF4)
|
||||
#define SERIALRX_PROVIDER SERIALRX_SBUS
|
||||
|
@ -207,12 +252,11 @@
|
|||
#ifdef REVOLT
|
||||
#define USABLE_TIMER_CHANNEL_COUNT 11
|
||||
#define USED_TIMERS ( TIM_N(2) | TIM_N(3) | TIM_N(4) | TIM_N(8) | TIM_N(12) )
|
||||
#else
|
||||
#define USABLE_TIMER_CHANNEL_COUNT 12
|
||||
#ifdef AIRBOTF4
|
||||
#elif defined(AIRBOTF4) || defined(AIRBOTF4SD)
|
||||
#define USABLE_TIMER_CHANNEL_COUNT 13
|
||||
#define USED_TIMERS ( TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(5) | TIM_N(8) | TIM_N(12) )
|
||||
#else
|
||||
#define USABLE_TIMER_CHANNEL_COUNT 12
|
||||
#define USED_TIMERS ( TIM_N(2) | TIM_N(3) | TIM_N(5) | TIM_N(8) | TIM_N(12) )
|
||||
#endif // AIRBOTF4
|
||||
#endif // REVOLT
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
F405_TARGETS += $(TARGET)
|
||||
FEATURES += VCP ONBOARDFLASH
|
||||
ifeq ($(TARGET), AIRBOTF4SD)
|
||||
FEATURES = VCP SDCARD
|
||||
else
|
||||
FEATURES = VCP ONBOARDFLASH
|
||||
endif
|
||||
|
||||
TARGET_SRC = \
|
||||
drivers/accgyro_spi_mpu6000.c \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue