BMP280 temperature & pressure
BMP280.h@0:c2987bafde6c, 2017-06-02 (annotated)
- Committer:
- johnathanlyu
- Date:
- Fri Jun 02 06:22:51 2017 +0000
- Revision:
- 0:c2987bafde6c
- Child:
- 1:9bb59e83df7a
BMP280 temperature & pressure sensor
Who changed what in which revision?
User | Revision | Line number | New 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 | |
johnathanlyu | 0:c2987bafde6c | 52 | protected: |
johnathanlyu | 0:c2987bafde6c | 53 | I2C m_i2c; |
johnathanlyu | 0:c2987bafde6c | 54 | Serial pc; |
johnathanlyu | 0:c2987bafde6c | 55 | unsigned short dig_T1,dig_P1; |
johnathanlyu | 0:c2987bafde6c | 56 | short dig_T2,dig_T3,dig_P2,dig_P3,dig_P4,dig_P5,dig_P6,dig_P7,dig_P8,dig_P9; |
johnathanlyu | 0:c2987bafde6c | 57 | void write(char reg, char ctrl); |
johnathanlyu | 0:c2987bafde6c | 58 | void read(char reg, char *data, int length); |
johnathanlyu | 0:c2987bafde6c | 59 | |
johnathanlyu | 0:c2987bafde6c | 60 | private: |
johnathanlyu | 0:c2987bafde6c | 61 | |
johnathanlyu | 0:c2987bafde6c | 62 | }; |
johnathanlyu | 0:c2987bafde6c | 63 | |
johnathanlyu | 0:c2987bafde6c | 64 | #endif |