| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- /**
- * @file BMP280_ATY.h
- *
- * @param Project DEVICE_GENERAL_ATY_LIB
- *
- * @author ATY
- *
- * @copyright
- * - Copyright 2017 - 2026 MZ-ATY
- * - This code follows:
- * - MZ-ATY Various Contents Joint Statement -
- * <a href="https://mengze.top/MZ-ATY_VCJS">
- * https://mengze.top/MZ-ATY_VCJS</a>
- * - CC 4.0 BY-NC-SA -
- * <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
- * https://creativecommons.org/licenses/by-nc-sa/4.0/</a>
- * - Your use will be deemed to have accepted the terms of this statement.
- *
- * @brief functions of BMP280 for C platform
- *
- * @version
- * - 1_01_220831 > ATY
- * -# Preliminary version, first Release
- * - 1_02_231229 > ATY
- * -# add multy addr and channel
- ********************************************************************************
- */
- #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 BMP280_SDO 1
- #define BMP280_ADDRESS (0x76 | BMP280_SDO)
- // #define BMP280_USE_FIXED_POINT_COMPENSATE
- // #define __DEBUG_BMP280_ATY
- // #define BMP280_I2C I2C_C1
- /******************************************************************************/
- 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_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, uint8_t addr, uint8_t channel);
- #endif /* __BMP280_ATY_H */
- /******************************** End Of File *********************************/
|