Skip to content
Snippets Groups Projects
Commit d299d439 authored by Daniel Agar's avatar Daniel Agar
Browse files

mpu6000 use new PX4Accelerometer and PX4Gyroscope classes

parent 91dcfb7a
No related branches found
No related tags found
No related merge requests found
......@@ -38,5 +38,7 @@ px4_add_module(
mpu6000.cpp
mpu6000_i2c.cpp
mpu6000_spi.cpp
DEPENDS
drivers_accelerometer
drivers_gyroscope
)
This diff is collapsed.
......@@ -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 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 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 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_ACCEL "/dev/icm20689_accel"
#define ICM20689_DEVICE_PATH_GYRO "/dev/icm20689_gyro"
#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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment