mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-20 06:45:16 +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;
|
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)
|
bool bmp280Detect(baroDev_t *baro)
|
||||||
{
|
{
|
||||||
if (bmp280InitDone)
|
if (bmp280InitDone)
|
||||||
|
@ -103,19 +131,14 @@ bool bmp280Detect(baroDev_t *baro)
|
||||||
|
|
||||||
busDevice_t *pBusdev = &baro->busdev;
|
busDevice_t *pBusdev = &baro->busdev;
|
||||||
|
|
||||||
#ifdef USE_BARO_SPI_BMP280
|
bmp280BusInit(pBusdev);
|
||||||
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
|
|
||||||
|
|
||||||
bmp280ReadRegister(pBusdev, BMP280_CHIP_ID_REG, 1, &bmp280_chip_id); /* read Chip Id */
|
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;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// read calibration
|
// read calibration
|
||||||
bmp280ReadRegister(pBusdev, BMP280_TEMPERATURE_CALIB_DIG_T1_LSB_REG, 24, (uint8_t *)&bmp280_cal);
|
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