From 1ee5929b82a99f94ea06837616d6ae527510b1cc Mon Sep 17 00:00:00 2001 From: Martin Budden Date: Wed, 12 Jul 2017 14:40:08 +0100 Subject: [PATCH] Improved gyro SPI detect function --- src/main/drivers/accgyro/accgyro_mpu.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/drivers/accgyro/accgyro_mpu.c b/src/main/drivers/accgyro/accgyro_mpu.c index 1ca97c798a..d4b11b1231 100644 --- a/src/main/drivers/accgyro/accgyro_mpu.c +++ b/src/main/drivers/accgyro/accgyro_mpu.c @@ -251,8 +251,11 @@ bool mpuCheckDataReady(gyroDev_t* gyro) static bool detectSPISensorsAndUpdateDetectionResult(gyroDev_t *gyro) { UNUSED(gyro); // since there are FCs which have gyro on I2C but other devices on SPI + #ifdef USE_GYRO_SPI_MPU6000 +#ifdef MPU6000_SPI_INSTANCE spiBusSetInstance(&gyro->bus, MPU6000_SPI_INSTANCE); +#endif #ifdef MPU6000_CS_PIN gyro->bus.spi.csnPin = gyro->bus.spi.csnPin == IO_NONE ? IOGetByTag(IO_TAG(MPU6000_CS_PIN)) : gyro->bus.spi.csnPin; #endif @@ -266,8 +269,12 @@ static bool detectSPISensorsAndUpdateDetectionResult(gyroDev_t *gyro) #endif #ifdef USE_GYRO_SPI_MPU6500 +#ifdef MPU6500_SPI_INSTANCE spiBusSetInstance(&gyro->bus, MPU6500_SPI_INSTANCE); +#endif +#ifdef MPU6500_CS_PIN gyro->bus.spi.csnPin = gyro->bus.spi.csnPin == IO_NONE ? IOGetByTag(IO_TAG(MPU6500_CS_PIN)) : gyro->bus.spi.csnPin; +#endif const uint8_t mpu6500Sensor = mpu6500SpiDetect(&gyro->bus); // some targets using MPU_9250_SPI, ICM_20608_SPI or ICM_20602_SPI state sensor is MPU_65xx_SPI if (mpu6500Sensor != MPU_NONE) { @@ -280,8 +287,12 @@ static bool detectSPISensorsAndUpdateDetectionResult(gyroDev_t *gyro) #endif #ifdef USE_GYRO_SPI_MPU9250 +#ifdef MPU9250_SPI_INSTANCE spiBusSetInstance(&gyro->bus, MPU9250_SPI_INSTANCE); +#endif +#ifdef MPU9250_CS_PIN gyro->bus.spi.csnPin = gyro->bus.spi.csnPin == IO_NONE ? IOGetByTag(IO_TAG(MPU9250_CS_PIN)) : gyro->bus.spi.csnPin; +#endif if (mpu9250SpiDetect(&gyro->bus)) { gyro->mpuDetectionResult.sensor = MPU_9250_SPI; gyro->mpuConfiguration.gyroReadXRegister = MPU_RA_GYRO_XOUT_H; @@ -293,8 +304,12 @@ static bool detectSPISensorsAndUpdateDetectionResult(gyroDev_t *gyro) #endif #ifdef USE_GYRO_SPI_ICM20689 +#ifdef ICM20689_SPI_INSTANCE spiBusSetInstance(&gyro->bus, ICM20689_SPI_INSTANCE); +#endif +#ifdef ICM20689_CS_PIN gyro->bus.spi.csnPin = gyro->bus.spi.csnPin == IO_NONE ? IOGetByTag(IO_TAG(ICM20689_CS_PIN)) : gyro->bus.spi.csnPin; +#endif if (icm20689SpiDetect(&gyro->bus)) { gyro->mpuDetectionResult.sensor = ICM_20689_SPI; gyro->mpuConfiguration.gyroReadXRegister = MPU_RA_GYRO_XOUT_H; @@ -305,8 +320,12 @@ static bool detectSPISensorsAndUpdateDetectionResult(gyroDev_t *gyro) #endif #ifdef USE_ACCGYRO_BMI160 +#ifdef BMI160_SPI_INSTANCE spiBusSetInstance(&gyro->bus, BMI160_SPI_INSTANCE); +#endif +#ifdef BMI160_CS_PIN gyro->bus.spi.csnPin = gyro->bus.spi.csnPin == IO_NONE ? IOGetByTag(IO_TAG(BMI160_CS_PIN)) : gyro->bus.spi.csnPin; +#endif if (bmi160Detect(&gyro->bus)) { gyro->mpuDetectionResult.sensor = BMI_160_SPI; gyro->mpuConfiguration.readFn = spiReadRegisterBuffer;