mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-19 14:25:20 +03:00
Add de-init for BMP280
This commit is contained in:
parent
eb8755453d
commit
bc0dbce062
1 changed files with 33 additions and 10 deletions
|
@ -94,6 +94,34 @@ bool bmp280WriteRegister(busDevice_t *pBusdev, uint8_t reg, uint8_t data)
|
|||
return false;
|
||||
}
|
||||
|
||||
void bmp280BusInit(busDevice_t *pBusdev)
|
||||
{
|
||||
#ifdef USE_BARO_SPI_MS5611
|
||||
if (pBusdev->bustype == BUSTYPE_SPI) {
|
||||
#define DISABLE_BMP280(pBusdev) IOHi((pBusdev)->busdev_u.spi.csnPin)
|
||||
IOInit(pBusdev->busdev_u.spi.csnPin, OWNER_BARO_CS, 0);
|
||||
IOConfigGPIO(pBusdev->busdev_u.spi.csnPin, IOCFG_OUT_PP);
|
||||
DISABLE_BMP280(pBusdev);
|
||||
spiSetDivisor(pBusdev->busdev_u.spi.instance, SPI_CLOCK_STANDARD); // XXX
|
||||
}
|
||||
#else
|
||||
UNUSED(pBusdev);
|
||||
#endif
|
||||
}
|
||||
|
||||
void bmp280BusDeinit(busDevice_t *pBusdev)
|
||||
{
|
||||
#ifdef USE_BARO_SPI_MS5611
|
||||
if (pBusdev->bustype == BUSTYPE_SPI) {
|
||||
IOConfigGPIO(pBusdev->busdev_u.spi.csnPin, IOCFG_IPU);
|
||||
IORelease(pBusdev->busdev_u.spi.csnPin);
|
||||
IOInit(pBusdev->busdev_u.spi.csnPin, OWNER_SPI_PREINIT, 0);
|
||||
}
|
||||
#else
|
||||
UNUSED(pBusdev);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool bmp280Detect(baroDev_t *baro)
|
||||
{
|
||||
if (bmp280InitDone)
|
||||
|
@ -103,19 +131,14 @@ bool bmp280Detect(baroDev_t *baro)
|
|||
|
||||
busDevice_t *pBusdev = &baro->busdev;
|
||||
|
||||
#ifdef USE_BARO_SPI_BMP280
|
||||
if (pBusdev->bustype == BUSTYPE_SPI) { // For final consoliation
|
||||
#define DISABLE_BMP280(pBusdev) IOHi((pBusdev)->busdev_u.spi.csnPin)
|
||||
IOInit(pBusdev->busdev_u.spi.csnPin, OWNER_BARO_CS, 0);
|
||||
IOConfigGPIO(pBusdev->busdev_u.spi.csnPin, IOCFG_OUT_PP);
|
||||
DISABLE_BMP280(pBusdev);
|
||||
spiSetDivisor(pBusdev->busdev_u.spi.instance, SPI_CLOCK_STANDARD); // XXX
|
||||
}
|
||||
#endif
|
||||
bmp280BusInit(pBusdev);
|
||||
|
||||
bmp280ReadRegister(pBusdev, BMP280_CHIP_ID_REG, 1, &bmp280_chip_id); /* read Chip Id */
|
||||
if (bmp280_chip_id != BMP280_DEFAULT_CHIP_ID)
|
||||
|
||||
if (bmp280_chip_id != BMP280_DEFAULT_CHIP_ID) {
|
||||
bmp280BusDeinit(pBusdev);
|
||||
return false;
|
||||
}
|
||||
|
||||
// read calibration
|
||||
bmp280ReadRegister(pBusdev, BMP280_TEMPERATURE_CALIB_DIG_T1_LSB_REG, 24, (uint8_t *)&bmp280_cal);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue