#pragma once /*底层接口定义*/ #include "bsp/i2c.h" #include "stdint.h" #define BMP280_I2C_ADDR 0x76 // BMP280 默认 I2C 地址 /*寄存器地址*/ #define BMP280_ID 0xD0 // 设备ID地址 #define BMP280_RESET 0xE0 // 设备重启 #define BMP280_STATUS 0xF3 // 设备状态 #define BMP280_CTRL_MEAS 0xF4 // 数据采集和模式设置 #define BMP280_CONFIG 0xF5 // 采样速率,滤波器和接口设置 #define BMP280_DIGT 0x88 // 温度校准系数起始位置 #define BMP280_DIGP 0x8E // 气压校准系数起始位置 #define BMP280_TEMP 0xFA // 温度储存起始位置 #define BMP280_PRES 0xF7 // 气压储存起始位置 #define BMP2_CHIP_ID 0x58 // 设备ID地址 #define bmp280_msblsb_to_u16(msb, lsb) (((uint16_t)msb << 8) | ((uint16_t)lsb)) typedef struct { unsigned short dig_t1; signed short dig_t2; signed short dig_t3; unsigned short dig_p1; signed short dig_p2; signed short dig_p3; signed short dig_p4; signed short dig_p5; signed short dig_p6; signed short dig_p7; signed short dig_p8; signed short dig_p9; } bmp280_calib; uint8_t bmp280_get_id(void); uint8_t bmp280_reset(void); uint8_t bmp280_getStatus(void); uint8_t bmp280_setMode(uint8_t mode); uint8_t bmp280_setOversampling(uint8_t osrs_p, uint8_t osrs_t); uint8_t bmp280_setConfig(uint8_t Standbyt, uint8_t filter); void bmp280_getCalibration(bmp280_calib *calib); void bmp280_getTemperature(bmp280_calib *calib, double *temperature, int32_t *t_fine); void bmp280_getPressure(bmp280_calib *calib, double *pressure, int32_t *t_fine); uint8_t bmp280_init(bmp280_calib *calib); void bmp280_getdata(bmp280_calib *calib, float *temperature, float *pressure);