mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-13 03:20:00 +03:00
Add support for IIM42652 (#14424)
This commit is contained in:
parent
1b1648d135
commit
ec91238cd8
9 changed files with 36 additions and 11 deletions
|
@ -164,6 +164,7 @@ const char * const lookupTableAccHardware[] = {
|
||||||
"ICM45605",
|
"ICM45605",
|
||||||
"ICM45686",
|
"ICM45686",
|
||||||
"ICM40609D",
|
"ICM40609D",
|
||||||
|
"IIM42652",
|
||||||
"VIRTUAL"
|
"VIRTUAL"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -191,6 +192,7 @@ const char * const lookupTableGyroHardware[] = {
|
||||||
"ICM45605",
|
"ICM45605",
|
||||||
"ICM45686",
|
"ICM45686",
|
||||||
"ICM40609D",
|
"ICM40609D",
|
||||||
|
"IIM42652",
|
||||||
"VIRTUAL"
|
"VIRTUAL"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,7 @@ typedef enum {
|
||||||
GYRO_ICM45605,
|
GYRO_ICM45605,
|
||||||
GYRO_ICM45686,
|
GYRO_ICM45686,
|
||||||
GYRO_ICM40609D,
|
GYRO_ICM40609D,
|
||||||
|
GYRO_IIM42652,
|
||||||
GYRO_VIRTUAL
|
GYRO_VIRTUAL
|
||||||
} gyroHardware_e;
|
} gyroHardware_e;
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
#define ICM42688P_WHO_AM_I_CONST (0x47)
|
#define ICM42688P_WHO_AM_I_CONST (0x47)
|
||||||
#define ICM45686_WHO_AM_I_CONST (0xE9)
|
#define ICM45686_WHO_AM_I_CONST (0xE9)
|
||||||
#define ICM45605_WHO_AM_I_CONST (0xE5)
|
#define ICM45605_WHO_AM_I_CONST (0xE5)
|
||||||
|
#define IIM42652_WHO_AM_I_CONST (0x6F)
|
||||||
#define IIM42653_WHO_AM_I_CONST (0x56)
|
#define IIM42653_WHO_AM_I_CONST (0x56)
|
||||||
#define LSM6DSV16X_WHO_AM_I_CONST (0x70)
|
#define LSM6DSV16X_WHO_AM_I_CONST (0x70)
|
||||||
#define ICM40609_WHO_AM_I_CONST (0x3B)
|
#define ICM40609_WHO_AM_I_CONST (0x3B)
|
||||||
|
@ -207,6 +208,7 @@ typedef enum {
|
||||||
ICM_20689_SPI,
|
ICM_20689_SPI,
|
||||||
ICM_42605_SPI,
|
ICM_42605_SPI,
|
||||||
ICM_42688P_SPI,
|
ICM_42688P_SPI,
|
||||||
|
IIM_42652_SPI,
|
||||||
IIM_42653_SPI,
|
IIM_42653_SPI,
|
||||||
BMI_160_SPI,
|
BMI_160_SPI,
|
||||||
BMI_270_SPI,
|
BMI_270_SPI,
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
|
|
||||||
#if defined(USE_GYRO_SPI_ICM42605) || defined(USE_GYRO_SPI_ICM42688P) || defined(USE_ACCGYRO_IIM42653)
|
#if defined(USE_GYRO_SPI_ICM42605) || defined(USE_GYRO_SPI_ICM42688P) || defined(USE_ACCGYRO_IIM42652) || defined(USE_ACCGYRO_IIM42653)
|
||||||
|
|
||||||
#include "common/axis.h"
|
#include "common/axis.h"
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
|
@ -284,6 +284,9 @@ uint8_t icm426xxSpiDetect(const extDevice_t *dev)
|
||||||
case ICM42688P_WHO_AM_I_CONST:
|
case ICM42688P_WHO_AM_I_CONST:
|
||||||
icmDetected = ICM_42688P_SPI;
|
icmDetected = ICM_42688P_SPI;
|
||||||
break;
|
break;
|
||||||
|
case IIM42652_WHO_AM_I_CONST:
|
||||||
|
icmDetected = IIM_42652_SPI;
|
||||||
|
break;
|
||||||
case IIM42653_WHO_AM_I_CONST:
|
case IIM42653_WHO_AM_I_CONST:
|
||||||
icmDetected = IIM_42653_SPI;
|
icmDetected = IIM_42653_SPI;
|
||||||
break;
|
break;
|
||||||
|
@ -306,6 +309,7 @@ void icm426xxAccInit(accDev_t *acc)
|
||||||
{
|
{
|
||||||
switch (acc->mpuDetectionResult.sensor) {
|
switch (acc->mpuDetectionResult.sensor) {
|
||||||
case IIM_42653_SPI:
|
case IIM_42653_SPI:
|
||||||
|
case IIM_42652_SPI:
|
||||||
acc->acc_1G = 512 * 2; // Accel scale 32g (1024 LSB/g)
|
acc->acc_1G = 512 * 2; // Accel scale 32g (1024 LSB/g)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -319,6 +323,7 @@ bool icm426xxSpiAccDetect(accDev_t *acc)
|
||||||
switch (acc->mpuDetectionResult.sensor) {
|
switch (acc->mpuDetectionResult.sensor) {
|
||||||
case ICM_42605_SPI:
|
case ICM_42605_SPI:
|
||||||
case ICM_42688P_SPI:
|
case ICM_42688P_SPI:
|
||||||
|
case IIM_42652_SPI:
|
||||||
case IIM_42653_SPI:
|
case IIM_42653_SPI:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -427,6 +432,7 @@ bool icm426xxSpiGyroDetect(gyroDev_t *gyro)
|
||||||
case ICM_42688P_SPI:
|
case ICM_42688P_SPI:
|
||||||
gyro->scale = GYRO_SCALE_2000DPS;
|
gyro->scale = GYRO_SCALE_2000DPS;
|
||||||
break;
|
break;
|
||||||
|
case IIM_42652_SPI:
|
||||||
case IIM_42653_SPI:
|
case IIM_42653_SPI:
|
||||||
gyro->scale = GYRO_SCALE_4000DPS;
|
gyro->scale = GYRO_SCALE_4000DPS;
|
||||||
break;
|
break;
|
||||||
|
@ -444,6 +450,8 @@ static aafConfig_t getGyroAafConfig(const mpuSensor_e gyroModel, const aafConfig
|
||||||
{
|
{
|
||||||
switch (gyroModel){
|
switch (gyroModel){
|
||||||
case ICM_42605_SPI:
|
case ICM_42605_SPI:
|
||||||
|
case IIM_42652_SPI:
|
||||||
|
case IIM_42653_SPI:
|
||||||
switch (config) {
|
switch (config) {
|
||||||
case GYRO_HARDWARE_LPF_NORMAL:
|
case GYRO_HARDWARE_LPF_NORMAL:
|
||||||
return aafLUT42605[AAF_CONFIG_258HZ];
|
return aafLUT42605[AAF_CONFIG_258HZ];
|
||||||
|
@ -456,7 +464,6 @@ static aafConfig_t getGyroAafConfig(const mpuSensor_e gyroModel, const aafConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
case ICM_42688P_SPI:
|
case ICM_42688P_SPI:
|
||||||
case IIM_42653_SPI:
|
|
||||||
default:
|
default:
|
||||||
switch (config) {
|
switch (config) {
|
||||||
case GYRO_HARDWARE_LPF_NORMAL:
|
case GYRO_HARDWARE_LPF_NORMAL:
|
||||||
|
@ -475,4 +482,4 @@ static aafConfig_t getGyroAafConfig(const mpuSensor_e gyroModel, const aafConfig
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // USE_GYRO_SPI_ICM42605 || USE_GYRO_SPI_ICM42688P || USE_ACCGYRO_IIM42653
|
#endif // USE_GYRO_SPI_ICM42605 || USE_GYRO_SPI_ICM42688P || USE_ACCGYRO_IIM42652 || USE_ACCGYRO_IIM42653
|
||||||
|
|
|
@ -54,6 +54,7 @@ typedef enum {
|
||||||
ACC_ICM45605,
|
ACC_ICM45605,
|
||||||
ACC_ICM45686,
|
ACC_ICM45686,
|
||||||
ACC_ICM40609D,
|
ACC_ICM40609D,
|
||||||
|
ACC_IIM42652,
|
||||||
ACC_VIRTUAL
|
ACC_VIRTUAL
|
||||||
} accelerationSensor_e;
|
} accelerationSensor_e;
|
||||||
|
|
||||||
|
|
|
@ -218,9 +218,10 @@ retry:
|
||||||
FALLTHROUGH;
|
FALLTHROUGH;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(USE_ACC_SPI_ICM42605) || defined(USE_ACC_SPI_ICM42688P) || defined(USE_ACCGYRO_IIM42653)
|
#if defined(USE_ACC_SPI_ICM42605) || defined(USE_ACC_SPI_ICM42688P) || defined(USE_ACCGYRO_IIM42652) || defined(USE_ACCGYRO_IIM42653)
|
||||||
case ACC_ICM42605:
|
case ACC_ICM42605:
|
||||||
case ACC_ICM42688P:
|
case ACC_ICM42688P:
|
||||||
|
case ACC_IIM42652:
|
||||||
case ACC_IIM42653:
|
case ACC_IIM42653:
|
||||||
if (icm426xxSpiAccDetect(dev)) {
|
if (icm426xxSpiAccDetect(dev)) {
|
||||||
switch (dev->mpuDetectionResult.sensor) {
|
switch (dev->mpuDetectionResult.sensor) {
|
||||||
|
@ -230,6 +231,9 @@ retry:
|
||||||
case ICM_42688P_SPI:
|
case ICM_42688P_SPI:
|
||||||
accHardware = ACC_ICM42688P;
|
accHardware = ACC_ICM42688P;
|
||||||
break;
|
break;
|
||||||
|
case IIM_42652_SPI:
|
||||||
|
accHardware = ACC_IIM42652;
|
||||||
|
break;
|
||||||
case IIM_42653_SPI:
|
case IIM_42653_SPI:
|
||||||
accHardware = ACC_IIM42653;
|
accHardware = ACC_IIM42653;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -318,6 +318,7 @@ void gyroInitSensor(gyroSensor_t *gyroSensor, const gyroDeviceConfig_t *config)
|
||||||
case GYRO_LSM6DSO:
|
case GYRO_LSM6DSO:
|
||||||
case GYRO_LSM6DSV16X:
|
case GYRO_LSM6DSV16X:
|
||||||
case GYRO_ICM42688P:
|
case GYRO_ICM42688P:
|
||||||
|
case GYRO_IIM42652:
|
||||||
case GYRO_IIM42653:
|
case GYRO_IIM42653:
|
||||||
case GYRO_ICM42605:
|
case GYRO_ICM42605:
|
||||||
case GYRO_ICM45686:
|
case GYRO_ICM45686:
|
||||||
|
@ -434,9 +435,10 @@ STATIC_UNIT_TESTED gyroHardware_e gyroDetect(gyroDev_t *dev)
|
||||||
FALLTHROUGH;
|
FALLTHROUGH;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(USE_GYRO_SPI_ICM42605) || defined(USE_GYRO_SPI_ICM42688P) || defined(USE_ACCGYRO_IIM42653)
|
#if defined(USE_GYRO_SPI_ICM42605) || defined(USE_GYRO_SPI_ICM42688P) || defined(USE_ACCGYRO_IIM42652) || defined(USE_ACCGYRO_IIM42653)
|
||||||
case GYRO_ICM42605:
|
case GYRO_ICM42605:
|
||||||
case GYRO_ICM42688P:
|
case GYRO_ICM42688P:
|
||||||
|
case GYRO_IIM42652:
|
||||||
case GYRO_IIM42653:
|
case GYRO_IIM42653:
|
||||||
if (icm426xxSpiGyroDetect(dev)) {
|
if (icm426xxSpiGyroDetect(dev)) {
|
||||||
switch (dev->mpuDetectionResult.sensor) {
|
switch (dev->mpuDetectionResult.sensor) {
|
||||||
|
@ -446,6 +448,9 @@ STATIC_UNIT_TESTED gyroHardware_e gyroDetect(gyroDev_t *dev)
|
||||||
case ICM_42688P_SPI:
|
case ICM_42688P_SPI:
|
||||||
gyroHardware = GYRO_ICM42688P;
|
gyroHardware = GYRO_ICM42688P;
|
||||||
break;
|
break;
|
||||||
|
case IIM_42652_SPI:
|
||||||
|
gyroHardware = GYRO_IIM42652;
|
||||||
|
break;
|
||||||
case IIM_42653_SPI:
|
case IIM_42653_SPI:
|
||||||
gyroHardware = GYRO_IIM42653;
|
gyroHardware = GYRO_IIM42653;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -110,8 +110,9 @@
|
||||||
&& !defined(USE_ACC_SPI_MPU6000) \
|
&& !defined(USE_ACC_SPI_MPU6000) \
|
||||||
&& !defined(USE_ACC_SPI_MPU6500) \
|
&& !defined(USE_ACC_SPI_MPU6500) \
|
||||||
&& !defined(USE_ACC_SPI_MPU9250) \
|
&& !defined(USE_ACC_SPI_MPU9250) \
|
||||||
&& !defined(USE_VIRTUAL_ACC) \
|
&& !defined(USE_ACCGYRO_IIM42652) \
|
||||||
&& !defined(USE_ACCGYRO_IIM42653)
|
&& !defined(USE_ACCGYRO_IIM42653) \
|
||||||
|
&& !defined(USE_VIRTUAL_ACC)
|
||||||
#error At least one USE_ACC device definition required
|
#error At least one USE_ACC device definition required
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -133,8 +134,9 @@
|
||||||
&& !defined(USE_GYRO_SPI_MPU6000) \
|
&& !defined(USE_GYRO_SPI_MPU6000) \
|
||||||
&& !defined(USE_GYRO_SPI_MPU6500) \
|
&& !defined(USE_GYRO_SPI_MPU6500) \
|
||||||
&& !defined(USE_GYRO_SPI_MPU9250) \
|
&& !defined(USE_GYRO_SPI_MPU9250) \
|
||||||
&& !defined(USE_VIRTUAL_GYRO) \
|
&& !defined(USE_ACCGYRO_IIM42652) \
|
||||||
&& !defined(USE_ACCGYRO_IIM42653)
|
&& !defined(USE_ACCGYRO_IIM42653) \
|
||||||
|
&& !defined(USE_VIRTUAL_GYRO)
|
||||||
#error At least one USE_GYRO device definition required
|
#error At least one USE_GYRO device definition required
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -472,11 +474,11 @@
|
||||||
#define USE_GYRO_SPI_MPU6500
|
#define USE_GYRO_SPI_MPU6500
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Generate USE_SPI_GYRO or USE_I2C_GYRO
|
// Generate USE_SPI_GYRO
|
||||||
#if defined(USE_GYRO_SPI_ICM20689) || defined(USE_GYRO_SPI_MPU6000) || defined(USE_GYRO_SPI_MPU6500) || defined(USE_GYRO_SPI_MPU9250) \
|
#if defined(USE_GYRO_SPI_ICM20689) || defined(USE_GYRO_SPI_MPU6000) || defined(USE_GYRO_SPI_MPU6500) || defined(USE_GYRO_SPI_MPU9250) \
|
||||||
|| defined(USE_GYRO_L3GD20) || defined(USE_GYRO_SPI_ICM42605) || defined(USE_GYRO_SPI_ICM42688P) || defined(USE_ACCGYRO_ICM45686) \
|
|| defined(USE_GYRO_L3GD20) || defined(USE_GYRO_SPI_ICM42605) || defined(USE_GYRO_SPI_ICM42688P) || defined(USE_ACCGYRO_ICM45686) \
|
||||||
|| defined(USE_ACCGYRO_ICM45605) || defined(USE_ACCGYRO_IIM42653) || defined(USE_ACCGYRO_BMI160) || defined(USE_ACCGYRO_BMI270) \
|
|| defined(USE_ACCGYRO_ICM45605) || defined(USE_ACCGYRO_IIM42653) || defined(USE_ACCGYRO_BMI160) || defined(USE_ACCGYRO_BMI270) \
|
||||||
|| defined(USE_ACCGYRO_LSM6DSV16X) || defined(USE_ACCGYRO_LSM6DSO) || defined(USE_ACCGYRO_ICM40609D)
|
|| defined(USE_ACCGYRO_LSM6DSV16X) || defined(USE_ACCGYRO_LSM6DSO) || defined(USE_ACCGYRO_ICM40609D) || defined(USE_ACCGYRO_IIM42652)
|
||||||
#ifndef USE_SPI_GYRO
|
#ifndef USE_SPI_GYRO
|
||||||
#define USE_SPI_GYRO
|
#define USE_SPI_GYRO
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -116,6 +116,7 @@
|
||||||
#define USE_GYRO_SPI_ICM42688P
|
#define USE_GYRO_SPI_ICM42688P
|
||||||
#define USE_ACCGYRO_ICM45686
|
#define USE_ACCGYRO_ICM45686
|
||||||
#define USE_ACCGYRO_ICM45605
|
#define USE_ACCGYRO_ICM45605
|
||||||
|
#define USE_ACCGYRO_IIM42652
|
||||||
#define USE_ACCGYRO_IIM42653
|
#define USE_ACCGYRO_IIM42653
|
||||||
#define USE_ACC_SPI_ICM42605
|
#define USE_ACC_SPI_ICM42605
|
||||||
#define USE_ACC_SPI_ICM42688P
|
#define USE_ACC_SPI_ICM42688P
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue