/** * @file BMP280_ATY.h * * @param Project DEVICE_GENERAL_ATY_LIB * * @author ATY * * @copyright * - Copyright 2017 - 2023 MZ-ATY * - This code follows: * - MZ-ATY Various Contents Joint Statement - * * https://mengze.top/MZ-ATY_VCJS * - CC 4.0 BY-NC-SA - * * https://creativecommons.org/licenses/by-nc-sa/4.0/ * - Your use will be deemed to have accepted the terms of this statement. * * @brief Familiar functions of BMP280 for all embedded device * * @version * - 1_01_220831 > ATY * -# Preliminary version, first Release ******************************************************************************** */ #ifndef __BMP280_ATY_H #define __BMP280_ATY_H #include "INCLUDE_ATY.h" #include "HW_I2C_ATY.h" /******************************* For user *************************************/ // Set SDO voltage level for device address #define BP280_SDO 1 // #define BMP280_USE_FIXED_POINT_COMPENSATE // #define __DEBUG_BMP280_ATY /******************************************************************************/ typedef long signed int BMP280_S32_t; // signed 32 typedef long unsigned int BMP280_U32_t; // unsigned 32 typedef long long signed int BMP280_S64_t; // signed 64 #define BMP280_ADDRESS (0x76 | BP280_SDO) #define BMP280_RESET_VALUE 0xB6 #define BMP280_CHIPID_REG 0xD0 #define BMP280_RESET_REG 0xE0 // Softreset Register #define BMP280_STATUS_REG 0xF3 #define BMP280_CTRLMEAS_REG 0xF4 // Ctrl Measure Register #define BMP280_CONFIG_REG 0xF5 #define BMP280_PRESSURE_MSB_REG 0xF7 #define BMP280_PRESSURE_LSB_REG 0xF8 #define BMP280_PRESSURE_XLSB_REG 0xF9 #define BMP280_TEMPERATURE_MSB_REG 0xFA #define BMP280_TEMPERATURE_LSB_REG 0xFB #define BMP280_TEMPERATURE_XLSB_REG 0xFC #define BMP280_MEASURING 0x01 // Measure state reg #define BMP280_IM_UPDATE 0x08 // Update state reg // BMP280 work mode typedef enum { BMP280_SLEEP_MODE = 0x00, BMP280_FORCED_MODE = 0x01, // and 0x02 BMP280_NORMAL_MODE = 0x03 } BMP280_WORK_MODE; // Pressure oversampling factor typedef enum { BMP280_P_MODE_SKIP = 0x0, // skipped BMP280_P_MODE_1, // x1 BMP280_P_MODE_2, // x2 BMP280_P_MODE_3, // x4 BMP280_P_MODE_4, // x8 BMP280_P_MODE_5 // x16 } BMP280_P_OVERSAMPLING; // Temperature oversampling factor typedef enum { BMP280_T_MODE_SKIP = 0x0, // skipped BMP280_T_MODE_1, // x1 BMP280_T_MODE_2, // x2 BMP280_T_MODE_3, // x4 BMP280_T_MODE_4, // x8 BMP280_T_MODE_5 // x16 } BMP280_T_OVERSAMPLING; // IIR filter time constant typedef enum { BMP280_FILTER_OFF = 0x0, // filter off BMP280_FILTER_MODE_1, // x2 0.223*ODR BMP280_FILTER_MODE_2, // x4 0.092*ODR BMP280_FILTER_MODE_3, // x8 0.042*ODR BMP280_FILTER_MODE_4 // x16 0.021*ODR } BMP280_FILTER_COEFFICIENT; // Hold time typedef enum { BMP280_T_SB1 = 0x0, // 0.5ms BMP280_T_SB2, // 62.5ms BMP280_T_SB3, // 125ms BMP280_T_SB4, // 250ms BMP280_T_SB5, // 500ms BMP280_T_SB6, // 1000ms BMP280_T_SB7, // 2000ms BMP280_T_SB8 // 4000ms } BMP280_T_SB; // T1~P9 Is the compensation coefficient typedef struct _BMP280_CC { uint16_t T1; int16_t T2; int16_t T3; uint16_t P1; int16_t P2; int16_t P3; int16_t P4; int16_t P5; int16_t P6; int16_t P7; int16_t P8; int16_t P9; } BMP280_CC; #define BMP280_DIG_T1_LSB_REG 0x88 #define BMP280_DIG_T1_MSB_REG 0x89 #define BMP280_DIG_T2_LSB_REG 0x8A #define BMP280_DIG_T2_MSB_REG 0x8B #define BMP280_DIG_T3_LSB_REG 0x8C #define BMP280_DIG_T3_MSB_REG 0x8D #define BMP280_DIG_P1_LSB_REG 0x8E #define BMP280_DIG_P1_MSB_REG 0x8F #define BMP280_DIG_P2_LSB_REG 0x90 #define BMP280_DIG_P2_MSB_REG 0x91 #define BMP280_DIG_P3_LSB_REG 0x92 #define BMP280_DIG_P3_MSB_REG 0x93 #define BMP280_DIG_P4_LSB_REG 0x94 #define BMP280_DIG_P4_MSB_REG 0x95 #define BMP280_DIG_P5_LSB_REG 0x96 #define BMP280_DIG_P5_MSB_REG 0x97 #define BMP280_DIG_P6_LSB_REG 0x98 #define BMP280_DIG_P6_MSB_REG 0x99 #define BMP280_DIG_P7_LSB_REG 0x9A #define BMP280_DIG_P7_MSB_REG 0x9B #define BMP280_DIG_P8_LSB_REG 0x9C #define BMP280_DIG_P8_MSB_REG 0x9D #define BMP280_DIG_P9_LSB_REG 0x9E #define BMP280_DIG_P9_MSB_REG 0x9F typedef struct { BMP280_P_OVERSAMPLING P_Osample; BMP280_T_OVERSAMPLING T_Osample; BMP280_WORK_MODE WORKMODE; } BMP280_OVERSAMPLE_MODE; typedef struct { BMP280_T_SB T_SB; BMP280_FILTER_COEFFICIENT FILTER_COEFFICIENT; FunctionalState SPI_EN; } BMP280_CONFIG; extern struct _BMP280_CC bmp280Cc; extern uint8_t bmp280Id; extern uint8_t bmp280InitFlag; uint8_t BMP280_TempPreGet(uint16_t* tp); #endif /* __BMP280_ATY_H */ /******************************** End Of File *********************************/