mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
mpu6000 use new PX4Accelerometer and PX4Gyroscope classes
This commit is contained in:
parent
91dcfb7ab2
commit
d299d439c6
@ -38,5 +38,7 @@ px4_add_module(
|
||||
mpu6000.cpp
|
||||
mpu6000_i2c.cpp
|
||||
mpu6000_spi.cpp
|
||||
DEPENDS
|
||||
drivers_accelerometer
|
||||
drivers_gyroscope
|
||||
)
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -45,41 +45,34 @@
|
||||
# define USE_I2C
|
||||
#endif
|
||||
|
||||
enum MPU_DEVICE_TYPE {
|
||||
MPU_DEVICE_TYPE_MPU6000 = 6000,
|
||||
MPU_DEVICE_TYPE_ICM20602 = 20602,
|
||||
MPU_DEVICE_TYPE_ICM20608 = 20608,
|
||||
MPU_DEVICE_TYPE_ICM20689 = 20689
|
||||
};
|
||||
|
||||
#define DIR_READ 0x80
|
||||
#define DIR_WRITE 0x00
|
||||
|
||||
#define MPU_DEVICE_PATH_ACCEL "/dev/mpu6000_accel"
|
||||
#define MPU_DEVICE_PATH_GYRO "/dev/mpu6000_gyro"
|
||||
#define MPU_DEVICE_PATH_ACCEL1 "/dev/mpu6000_accel1"
|
||||
#define MPU_DEVICE_PATH_GYRO1 "/dev/mpu6000_gyro1"
|
||||
#define MPU_DEVICE_PATH_ACCEL_EXT "/dev/mpu6000_accel_ext"
|
||||
#define MPU_DEVICE_PATH_GYRO_EXT "/dev/mpu6000_gyro_ext"
|
||||
#define MPU_DEVICE_PATH_ACCEL_EXT1 "/dev/mpu6000_accel_ext1"
|
||||
#define MPU_DEVICE_PATH_GYRO_EXT1 "/dev/mpu6000_gyro_ext1"
|
||||
#define MPU_DEVICE_PATH_ACCEL_EXT2 "/dev/mpu6000_accel_ext2"
|
||||
#define MPU_DEVICE_PATH_GYRO_EXT2 "/dev/mpu6000_gyro_ext2"
|
||||
#define MPU_DEVICE_PATH "/dev/mpu6000"
|
||||
#define MPU_DEVICE_PATH1 "/dev/mpu6000_1"
|
||||
#define MPU_DEVICE_PATH_EXT "/dev/mpu6000_ext"
|
||||
#define MPU_DEVICE_PATH_EXT1 "/dev/mpu6000_ext1"
|
||||
#define MPU_DEVICE_PATH_EXT2 "/dev/mpu6000_ext2"
|
||||
|
||||
#define ICM20602_DEVICE_PATH_ACCEL "/dev/icm20602_accel"
|
||||
#define ICM20602_DEVICE_PATH_GYRO "/dev/icm20602_gyro"
|
||||
#define ICM20602_DEVICE_PATH_ACCEL1 "/dev/icm20602_accel1"
|
||||
#define ICM20602_DEVICE_PATH_GYRO1 "/dev/icm20602_gyro1"
|
||||
#define ICM20602_DEVICE_PATH_ACCEL_EXT "/dev/icm20602_accel_ext"
|
||||
#define ICM20602_DEVICE_PATH_GYRO_EXT "/dev/icm20602_gyro_ext"
|
||||
#define ICM20602_DEVICE_PATH_ACCEL_EXT1 "/dev/icm20602_accel_ext1"
|
||||
#define ICM20602_DEVICE_PATH_GYRO_EXT1 "/dev/icm20602_gyro_ext1"
|
||||
|
||||
#define ICM20608_DEVICE_PATH_ACCEL "/dev/icm20608_accel"
|
||||
#define ICM20608_DEVICE_PATH_GYRO "/dev/icm20608_gyro"
|
||||
#define ICM20608_DEVICE_PATH_ACCEL1 "/dev/icm20608_accel1"
|
||||
#define ICM20608_DEVICE_PATH_GYRO1 "/dev/icm20608_gyro1"
|
||||
#define ICM20608_DEVICE_PATH_ACCEL_EXT "/dev/icm20608_accel_ext"
|
||||
#define ICM20608_DEVICE_PATH_GYRO_EXT "/dev/icm20608_gyro_ext"
|
||||
#define ICM20608_DEVICE_PATH_ACCEL_EXT1 "/dev/icm20608_accel_ext1"
|
||||
#define ICM20608_DEVICE_PATH_GYRO_EXT1 "/dev/icm20608_gyro_ext1"
|
||||
#define ICM20602_DEVICE_PATH "/dev/icm20602"
|
||||
#define ICM20602_DEVICE_PATH1 "/dev/icm20602_1"
|
||||
#define ICM20602_DEVICE_PATH_EXT "/dev/icm20602_ext"
|
||||
#define ICM20602_DEVICE_PATH_EXT1 "/dev/icm20602_ext1"
|
||||
|
||||
#define ICM20689_DEVICE_PATH_ACCEL "/dev/icm20689_accel"
|
||||
#define ICM20689_DEVICE_PATH_GYRO "/dev/icm20689_gyro"
|
||||
#define ICM20608_DEVICE_PATH "/dev/icm20608"
|
||||
#define ICM20608_DEVICE_PATH1 "/dev/icm20608_1"
|
||||
#define ICM20608_DEVICE_PATH_EXT "/dev/icm20608_ext"
|
||||
#define ICM20608_DEVICE_PATH_EXT1 "/dev/icm20608_ext1"
|
||||
|
||||
#define ICM20689_DEVICE_PATH "/dev/icm20689"
|
||||
|
||||
// MPU 6000 registers
|
||||
#define MPUREG_WHOAMI 0x75
|
||||
@ -202,15 +195,10 @@
|
||||
#define MPU6050_REV_D8 0x28 // TODO:Need verification
|
||||
|
||||
#define MPU6000_ACCEL_DEFAULT_RANGE_G 16
|
||||
#define MPU6000_ACCEL_DEFAULT_RATE 1000
|
||||
#define MPU6000_ACCEL_MAX_OUTPUT_RATE 280
|
||||
#define MPU6000_ACCEL_DEFAULT_DRIVER_FILTER_FREQ 30
|
||||
|
||||
#define MPU6000_GYRO_DEFAULT_RANGE_G 8
|
||||
#define MPU6000_GYRO_DEFAULT_RATE 1000
|
||||
/* rates need to be the same between accel and gyro */
|
||||
#define MPU6000_GYRO_MAX_OUTPUT_RATE MPU6000_ACCEL_MAX_OUTPUT_RATE
|
||||
#define MPU6000_GYRO_DEFAULT_DRIVER_FILTER_FREQ 30
|
||||
|
||||
|
||||
#define MPU6000_DEFAULT_ONCHIP_FILTER_FREQ 98
|
||||
|
||||
|
||||
@ -76,7 +76,6 @@ MPU6000_I2C::MPU6000_I2C(int bus, int device_type) :
|
||||
I2C("MPU6000_I2C", nullptr, bus, PX4_I2C_MPU6050_ADDR, 400000),
|
||||
_device_type(device_type)
|
||||
{
|
||||
_device_id.devid_s.devtype = DRV_ACC_DEVTYPE_MPU6000;
|
||||
}
|
||||
|
||||
int
|
||||
@ -112,7 +111,7 @@ int
|
||||
MPU6000_I2C::probe()
|
||||
{
|
||||
uint8_t whoami = 0;
|
||||
uint8_t expected = _device_type == 6000 ? MPU_WHOAMI_6000 : ICM_WHOAMI_20608;
|
||||
uint8_t expected = _device_type == MPU_DEVICE_TYPE_MPU6000 ? MPU_WHOAMI_6000 : ICM_WHOAMI_20608;
|
||||
return (read(MPUREG_WHOAMI, &whoami, 1) > 0 && (whoami == expected)) ? 0 : -EIO;
|
||||
|
||||
}
|
||||
|
||||
@ -114,19 +114,19 @@ MPU6000_SPI_interface(int bus, int device_type, bool external_bus)
|
||||
|
||||
switch (device_type) {
|
||||
|
||||
case 6000:
|
||||
case MPU_DEVICE_TYPE_MPU6000:
|
||||
# if defined(PX4_SPIDEV_EXT_MPU)
|
||||
cs = PX4_SPIDEV_EXT_MPU;
|
||||
# endif
|
||||
break;
|
||||
|
||||
case 20602:
|
||||
case MPU_DEVICE_TYPE_ICM20602:
|
||||
# if defined(PX4_SPIDEV_ICM_20602_EXT)
|
||||
cs = PX4_SPIDEV_ICM_20602_EXT;
|
||||
# endif
|
||||
break;
|
||||
|
||||
case 20608:
|
||||
case MPU_DEVICE_TYPE_ICM20608:
|
||||
# if defined(PX4_SPIDEV_EXT_ICM)
|
||||
cs = PX4_SPIDEV_EXT_ICM;
|
||||
# elif defined(PX4_SPIDEV_ICM_20608_EXT)
|
||||
@ -134,7 +134,7 @@ MPU6000_SPI_interface(int bus, int device_type, bool external_bus)
|
||||
# endif
|
||||
break;
|
||||
|
||||
case 20689:
|
||||
case MPU_DEVICE_TYPE_ICM20689:
|
||||
# if defined(PX4_SPIDEV_ICM_20689_EXT)
|
||||
cs = PX4_SPIDEV_ICM_20689_EXT;
|
||||
# endif
|
||||
@ -150,19 +150,19 @@ MPU6000_SPI_interface(int bus, int device_type, bool external_bus)
|
||||
|
||||
switch (device_type) {
|
||||
|
||||
case 6000:
|
||||
case MPU_DEVICE_TYPE_MPU6000:
|
||||
#if defined(PX4_SPIDEV_MPU)
|
||||
cs = PX4_SPIDEV_MPU;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 20602:
|
||||
case MPU_DEVICE_TYPE_ICM20602:
|
||||
#if defined(PX4_SPIDEV_ICM_20602)
|
||||
cs = PX4_SPIDEV_ICM_20602;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 20608:
|
||||
case MPU_DEVICE_TYPE_ICM20608:
|
||||
#if defined(PX4_SPIDEV_ICM)
|
||||
cs = PX4_SPIDEV_ICM;
|
||||
#elif defined(PX4_SPIDEV_ICM_20608)
|
||||
@ -170,7 +170,7 @@ MPU6000_SPI_interface(int bus, int device_type, bool external_bus)
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 20689:
|
||||
case MPU_DEVICE_TYPE_ICM20689:
|
||||
# if defined(PX4_SPIDEV_ICM_20689)
|
||||
cs = PX4_SPIDEV_ICM_20689;
|
||||
# endif
|
||||
@ -191,7 +191,6 @@ MPU6000_SPI::MPU6000_SPI(int bus, uint32_t device, int device_type) :
|
||||
SPI("MPU6000", nullptr, bus, device, SPIDEV_MODE3, MPU6000_LOW_SPI_BUS_SPEED),
|
||||
_device_type(device_type)
|
||||
{
|
||||
_device_id.devid_s.devtype = DRV_ACC_DEVTYPE_MPU6000;
|
||||
}
|
||||
|
||||
void
|
||||
@ -270,21 +269,21 @@ MPU6000_SPI::probe()
|
||||
switch (_device_type) {
|
||||
|
||||
default:
|
||||
case 6000:
|
||||
case MPU_DEVICE_TYPE_MPU6000:
|
||||
_max_frequency = MPU6000_HIGH_SPI_BUS_SPEED;
|
||||
break;
|
||||
|
||||
case 20602:
|
||||
case MPU_DEVICE_TYPE_ICM20602:
|
||||
expected = ICM_WHOAMI_20602;
|
||||
_max_frequency = ICM20602_HIGH_SPI_BUS_SPEED;
|
||||
break;
|
||||
|
||||
case 20608:
|
||||
case MPU_DEVICE_TYPE_ICM20608:
|
||||
expected = ICM_WHOAMI_20608;
|
||||
_max_frequency = ICM20608_HIGH_SPI_BUS_SPEED;
|
||||
break;
|
||||
|
||||
case 20689:
|
||||
case MPU_DEVICE_TYPE_ICM20689:
|
||||
expected = ICM_WHOAMI_20689;
|
||||
_max_frequency = ICM20689_HIGH_SPI_BUS_SPEED;
|
||||
break;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user