BMP280 temperature & pressure

Dependents:   Mt05_MtSense01

Committer:
johnathanlyu
Date:
Fri Apr 27 09:43:42 2018 +0000
Revision:
1:9bb59e83df7a
Parent:
0:c2987bafde6c
update initial flow

Who changed what in which revision?

UserRevisionLine numberNew contents of line
johnathanlyu 0:c2987bafde6c 1 #ifndef BMP280_H
johnathanlyu 0:c2987bafde6c 2 #define BMP280_H
johnathanlyu 0:c2987bafde6c 3
johnathanlyu 0:c2987bafde6c 4 // Register define
johnathanlyu 0:c2987bafde6c 5 #define BMP280_ADDR 0xEE // BMP280 i2c address
johnathanlyu 0:c2987bafde6c 6
johnathanlyu 0:c2987bafde6c 7 #define BMP280_REG_CALIBRATION 0x88 // calibration register start
johnathanlyu 0:c2987bafde6c 8 #define BMP280_REG_ID 0xD0 // read out is 0x58
johnathanlyu 0:c2987bafde6c 9 #define BMP280_REG_RESET 0xE0 // write value 0xB6 will process power-on-reset other value is not work
johnathanlyu 0:c2987bafde6c 10 #define BMP280_REG_STATUS 0xF3 // indicate status of the device
johnathanlyu 0:c2987bafde6c 11 #define BMP280_REG_CTRL_MEAS 0xF4 // config options of the device
johnathanlyu 0:c2987bafde6c 12 #define BMP280_REG_CONFIG 0xF5 // set rate, filted and interface options of device
johnathanlyu 0:c2987bafde6c 13 #define BMP280_REG_PRESS 0xF7 // pressure measurement out data 0xF7~0xF9
johnathanlyu 0:c2987bafde6c 14 #define BMP280_REG_TMEP 0xFA // temperature measurment out data 0xFA~0xFC
johnathanlyu 0:c2987bafde6c 15
johnathanlyu 0:c2987bafde6c 16 // OSSR Data
johnathanlyu 0:c2987bafde6c 17 #define BMP280_OSSR_SKIP 0x00 // Skipped output set to 0x80000
johnathanlyu 0:c2987bafde6c 18 #define BMP280_OSSR_OV1 0x01 // oversampling x1
johnathanlyu 0:c2987bafde6c 19 #define BMP280_OSSR_OV2 0x02 // oversampling x2
johnathanlyu 0:c2987bafde6c 20 #define BMP280_OSSR_OV4 0x03 // oversampling x4
johnathanlyu 0:c2987bafde6c 21 #define BMP280_OSSR_OV8 0x04 // oversampling x8
johnathanlyu 0:c2987bafde6c 22 #define BMP280_OSSR_OV16 0x05 // oversampling x16
johnathanlyu 0:c2987bafde6c 23
johnathanlyu 0:c2987bafde6c 24 // wait to read out time
johnathanlyu 0:c2987bafde6c 25 // T_SB
johnathanlyu 0:c2987bafde6c 26 #define BMP280_T_SB0 0x00 // 0.5ms
johnathanlyu 0:c2987bafde6c 27 #define BMP280_T_SB62 0x01 // 62.5ms
johnathanlyu 0:c2987bafde6c 28 #define BMP280_T_SB125 0x02 // 125ms
johnathanlyu 0:c2987bafde6c 29 #define BMP280_T_SB250 0x03 // 250ms
johnathanlyu 0:c2987bafde6c 30 #define BMP280_T_SB500 0x04 // 500ms
johnathanlyu 0:c2987bafde6c 31 #define BMP280_T_SB1000 0x05 // 1000ms
johnathanlyu 0:c2987bafde6c 32 #define BMP280_T_SB2000 0x06 // 2000ms
johnathanlyu 0:c2987bafde6c 33 #define BMP280_T_SB4000 0x07 // 4000ms
johnathanlyu 0:c2987bafde6c 34
johnathanlyu 0:c2987bafde6c 35 // Power Mode
johnathanlyu 0:c2987bafde6c 36 #define BMP280_POWER_SLEEP 0b00
johnathanlyu 0:c2987bafde6c 37 #define BMP280_POWER_FORCE 0b01
johnathanlyu 0:c2987bafde6c 38 #define BMP280_POWER_NORMAL 0b11
johnathanlyu 0:c2987bafde6c 39
johnathanlyu 0:c2987bafde6c 40
johnathanlyu 0:c2987bafde6c 41
johnathanlyu 0:c2987bafde6c 42 #include "mbed.h"
johnathanlyu 0:c2987bafde6c 43
johnathanlyu 0:c2987bafde6c 44 class BMP280 {
johnathanlyu 0:c2987bafde6c 45
johnathanlyu 0:c2987bafde6c 46 public:
johnathanlyu 0:c2987bafde6c 47 BMP280(I2C& i2c);
johnathanlyu 0:c2987bafde6c 48 int init(char ctrl_meas = 0x6F, char config = 0x70);
johnathanlyu 0:c2987bafde6c 49 int readData(float *tempC, int *pressPa);
johnathanlyu 0:c2987bafde6c 50
johnathanlyu 0:c2987bafde6c 51 protected:
johnathanlyu 0:c2987bafde6c 52 I2C m_i2c;
johnathanlyu 0:c2987bafde6c 53 Serial pc;
johnathanlyu 0:c2987bafde6c 54 unsigned short dig_T1,dig_P1;
johnathanlyu 0:c2987bafde6c 55 short dig_T2,dig_T3,dig_P2,dig_P3,dig_P4,dig_P5,dig_P6,dig_P7,dig_P8,dig_P9;
johnathanlyu 0:c2987bafde6c 56 void write(char reg, char ctrl);
johnathanlyu 0:c2987bafde6c 57 void read(char reg, char *data, int length);
johnathanlyu 0:c2987bafde6c 58
johnathanlyu 0:c2987bafde6c 59 private:
johnathanlyu 0:c2987bafde6c 60
johnathanlyu 0:c2987bafde6c 61 };
johnathanlyu 0:c2987bafde6c 62
johnathanlyu 0:c2987bafde6c 63 #endif