diff --git a/src/main/sensors/barometer.c b/src/main/sensors/barometer.c index fbc313b14..4a06eeff2 100644 --- a/src/main/sensors/barometer.c +++ b/src/main/sensors/barometer.c @@ -157,21 +157,28 @@ bool baroDetect(baroDev_t *dev, baroSensor_e baroHardwareToUse) #endif switch (barometerConfig()->baro_bustype) { - case BUSTYPE_I2C: #ifdef USE_I2C + case BUSTYPE_I2C: dev->busdev.bustype = BUSTYPE_I2C; dev->busdev.busdev_u.i2c.device = I2C_CFG_TO_DEV(barometerConfig()->baro_i2c_device); dev->busdev.busdev_u.i2c.address = barometerConfig()->baro_i2c_address; -#endif break; +#endif - case BUSTYPE_SPI: #ifdef USE_SPI - dev->busdev.bustype = BUSTYPE_SPI; - spiBusSetInstance(&dev->busdev, spiInstanceByDevice(SPI_CFG_TO_DEV(barometerConfig()->baro_spi_device))); - dev->busdev.busdev_u.spi.csnPin = IOGetByTag(barometerConfig()->baro_spi_csn); -#endif + case BUSTYPE_SPI: + { + SPI_TypeDef *instance = spiInstanceByDevice(SPI_CFG_TO_DEV(barometerConfig()->baro_spi_device)); + if (!instance) { + return false; + } + + dev->busdev.bustype = BUSTYPE_SPI; + spiBusSetInstance(&dev->busdev, instance); + dev->busdev.busdev_u.spi.csnPin = IOGetByTag(barometerConfig()->baro_spi_csn); + } break; +#endif default: return false; diff --git a/src/main/sensors/compass.c b/src/main/sensors/compass.c index e52ae497f..3236ee828 100644 --- a/src/main/sensors/compass.c +++ b/src/main/sensors/compass.c @@ -133,16 +133,23 @@ bool compassDetect(magDev_t *dev) busdev->bustype = BUSTYPE_I2C; busdev->busdev_u.i2c.device = I2C_CFG_TO_DEV(compassConfig()->mag_i2c_device); busdev->busdev_u.i2c.address = compassConfig()->mag_i2c_address; -#endif break; +#endif #ifdef USE_SPI case BUSTYPE_SPI: - busdev->bustype = BUSTYPE_SPI; - spiBusSetInstance(busdev, spiInstanceByDevice(SPI_CFG_TO_DEV(compassConfig()->mag_spi_device))); - busdev->busdev_u.spi.csnPin = IOGetByTag(compassConfig()->mag_spi_csn); -#endif + { + SPI_TypeDef *instance = spiInstanceByDevice(SPI_CFG_TO_DEV(compassConfig()->mag_spi_device)); + if (!instance) { + return false; + } + + busdev->bustype = BUSTYPE_SPI; + spiBusSetInstance(busdev, instance); + busdev->busdev_u.spi.csnPin = IOGetByTag(compassConfig()->mag_spi_csn); + } break; +#endif #if defined(USE_MAG_AK8963) && (defined(USE_GYRO_SPI_MPU6500) || defined(USE_GYRO_SPI_MPU9250)) case BUSTYPE_MPU_SLAVE: @@ -155,8 +162,8 @@ bool compassDetect(magDev_t *dev) return false; } } -#endif break; +#endif default: return false;