diff --git a/src/main/drivers/accgyro_mpu6500.h b/src/main/drivers/accgyro_mpu6500.h
index 32d0cefcc5..f761c835d3 100644
--- a/src/main/drivers/accgyro_mpu6500.h
+++ b/src/main/drivers/accgyro_mpu6500.h
@@ -15,9 +15,12 @@
* along with Cleanflight. If not, see .
*/
+#pragma once
+
#define MPU6500_WHO_AM_I_CONST (0x70)
#define MPU9250_WHO_AM_I_CONST (0x71)
#define ICM20608G_WHO_AM_I_CONST (0xAF)
+#define ICM20602_WHO_AM_I_CONST (0x12)
#define MPU6500_BIT_RESET (0x80)
#define MPU6500_BIT_INT_ANYRD_2CLEAR (1 << 4)
@@ -25,8 +28,6 @@
#define MPU6500_BIT_I2C_IF_DIS (1 << 4)
#define MPU6500_BIT_RAW_RDY_EN (0x01)
-#pragma once
-
bool mpu6500AccDetect(acc_t *acc);
bool mpu6500GyroDetect(gyro_t *gyro);
diff --git a/src/main/drivers/accgyro_spi_mpu6500.c b/src/main/drivers/accgyro_spi_mpu6500.c
index 9c2b7a45df..bfbba6dce5 100755
--- a/src/main/drivers/accgyro_spi_mpu6500.c
+++ b/src/main/drivers/accgyro_spi_mpu6500.c
@@ -84,7 +84,10 @@ bool mpu6500SpiDetect(void)
mpu6500ReadRegister(MPU_RA_WHO_AM_I, 1, &tmp);
- if (tmp == MPU6500_WHO_AM_I_CONST || tmp == MPU9250_WHO_AM_I_CONST || tmp == ICM20608G_WHO_AM_I_CONST) {
+ if (tmp == MPU6500_WHO_AM_I_CONST ||
+ tmp == MPU9250_WHO_AM_I_CONST ||
+ tmp == ICM20608G_WHO_AM_I_CONST ||
+ tmp == ICM20602_WHO_AM_I_CONST) {
return true;
}
diff --git a/src/main/drivers/dma.h b/src/main/drivers/dma.h
index ea2c3484f5..cd6ecc10be 100644
--- a/src/main/drivers/dma.h
+++ b/src/main/drivers/dma.h
@@ -15,6 +15,7 @@
* along with Cleanflight. If not, see .
*/
+#pragma once
struct dmaChannelDescriptor_s;
typedef void (*dmaCallbackHandlerFuncPtr)(struct dmaChannelDescriptor_s *channelDescriptor);
diff --git a/src/main/target/REVO/AIRBOTF4.mk b/src/main/target/REVO/AIRBOTF4.mk
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/main/target/REVO/REVOLT.mk b/src/main/target/REVO/REVOLT.mk
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/main/target/REVO/target.h b/src/main/target/REVO/target.h
index 4d73c99355..f3a065f73b 100644
--- a/src/main/target/REVO/target.h
+++ b/src/main/target/REVO/target.h
@@ -17,20 +17,33 @@
#pragma once
-#define TARGET_BOARD_IDENTIFIER "REVO"
-
#define CONFIG_START_FLASH_ADDRESS (0x08080000) //0x08080000 to 0x080A0000 (FLASH_Sector_8)
+#if defined(AIRBOTF4)
+#define TARGET_BOARD_IDENTIFIER "AIR4"
+#define USBD_PRODUCT_STRING "AirbotF4"
+
+#elif defined(REVOLT)
+#define TARGET_BOARD_IDENTIFIER "RVLT"
+#define USBD_PRODUCT_STRING "Revolt"
+
+#else
+#define TARGET_BOARD_IDENTIFIER "REVO"
#define USBD_PRODUCT_STRING "Revolution"
+
#ifdef OPBL
#define USBD_SERIALNUMBER_STRING "0x8020000"
#endif
+#endif
+
#define USE_DSHOT
#define LED0 PB5
// Disable LED1, conflicts with AirbotF4/Flip32F4 beeper
-//#define LED1 PB4
+#if !defined(AIRBOTF4)
+#define LED1 PB4
+#endif
#define BEEPER PB4
#define BEEPER_INVERTED
@@ -41,19 +54,31 @@
#define MPU6000_CS_PIN PA4
#define MPU6000_SPI_INSTANCE SPI1
+#define MPU6500_CS_PIN PA4
+#define MPU6500_SPI_INSTANCE SPI1
+
#define ACC
#define USE_ACC_SPI_MPU6000
#define GYRO_MPU6000_ALIGN CW270_DEG
+#define USE_ACC_MPU6500
+#define USE_ACC_SPI_MPU6500
+#define ACC_MPU6500_ALIGN CW270_DEG
+
#define GYRO
#define USE_GYRO_SPI_MPU6000
#define ACC_MPU6000_ALIGN CW270_DEG
+#define USE_GYRO_MPU6500
+#define USE_GYRO_SPI_MPU6500
+#define GYRO_MPU9250_ALIGN CW270_DEG
+
// MPU6000 interrupts
#define USE_EXTI
#define MPU_INT_EXTI PC4
#define USE_MPU_DATA_READY_SIGNAL
+#if !defined(AIRBOTF4) && !defined(REVOLT)
#define MAG
#define USE_MAG_HMC5883
#define MAG_HMC5883_ALIGN CW90_DEG
@@ -67,6 +92,7 @@
//#define PITOT
//#define USE_PITOT_MS4525
//#define MS4525_BUS I2C_DEVICE_EXT
+#endif
#define M25P16_CS_PIN PB3
#define M25P16_SPI_INSTANCE SPI3
@@ -78,8 +104,8 @@
#define VBUS_SENSING_PIN PC5
#define USE_UART1
-#define UART1_RX_PIN PA10
-#define UART1_TX_PIN PA9
+#define UART1_RX_PIN PA10
+#define UART1_TX_PIN PA9
#define UART1_AHB1_PERIPHERALS RCC_AHB1Periph_DMA2
#define USE_UART3
@@ -106,7 +132,7 @@
#define SPI3_MOSI_PIN PC12
#define USE_I2C
-#define I2C_DEVICE (I2CDEV_1)
+#define I2C_DEVICE (I2CDEV_1)
#define USE_ADC
#define CURRENT_METER_ADC_PIN PC1
@@ -126,7 +152,7 @@
#define WS2811_DMA_FLAG DMA_FLAG_TCIF4
#define WS2811_DMA_IT DMA_IT_TCIF4
-#define SENSORS_SET (SENSOR_ACC)
+#define SENSORS_SET (SENSOR_ACC)
#define DEFAULT_RX_FEATURE FEATURE_RX_SERIAL
#define DEFAULT_FEATURES (FEATURE_BLACKBOX)
diff --git a/src/main/target/REVO/target.mk b/src/main/target/REVO/target.mk
index 2711b19dac..3d8b57a8a6 100644
--- a/src/main/target/REVO/target.mk
+++ b/src/main/target/REVO/target.mk
@@ -3,5 +3,7 @@ FEATURES += VCP ONBOARDFLASH
TARGET_SRC = \
drivers/accgyro_spi_mpu6000.c \
+ drivers/accgyro_mpu6500.c \
+ drivers/accgyro_spi_mpu6500.c \
drivers/barometer_ms5611.c \
drivers/compass_hmc5883l.c