BMP280 temperature & pressure
Diff: BMP280.h
- Revision:
- 0:c2987bafde6c
- Child:
- 1:9bb59e83df7a
diff -r 000000000000 -r c2987bafde6c BMP280.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BMP280.h Fri Jun 02 06:22:51 2017 +0000 @@ -0,0 +1,64 @@ +#ifndef BMP280_H +#define BMP280_H + +// Register define +#define BMP280_ADDR 0xEE // BMP280 i2c address + +#define BMP280_REG_CALIBRATION 0x88 // calibration register start +#define BMP280_REG_ID 0xD0 // read out is 0x58 +#define BMP280_REG_RESET 0xE0 // write value 0xB6 will process power-on-reset other value is not work +#define BMP280_REG_STATUS 0xF3 // indicate status of the device +#define BMP280_REG_CTRL_MEAS 0xF4 // config options of the device +#define BMP280_REG_CONFIG 0xF5 // set rate, filted and interface options of device +#define BMP280_REG_PRESS 0xF7 // pressure measurement out data 0xF7~0xF9 +#define BMP280_REG_TMEP 0xFA // temperature measurment out data 0xFA~0xFC + +// OSSR Data +#define BMP280_OSSR_SKIP 0x00 // Skipped output set to 0x80000 +#define BMP280_OSSR_OV1 0x01 // oversampling x1 +#define BMP280_OSSR_OV2 0x02 // oversampling x2 +#define BMP280_OSSR_OV4 0x03 // oversampling x4 +#define BMP280_OSSR_OV8 0x04 // oversampling x8 +#define BMP280_OSSR_OV16 0x05 // oversampling x16 + +// wait to read out time +// T_SB +#define BMP280_T_SB0 0x00 // 0.5ms +#define BMP280_T_SB62 0x01 // 62.5ms +#define BMP280_T_SB125 0x02 // 125ms +#define BMP280_T_SB250 0x03 // 250ms +#define BMP280_T_SB500 0x04 // 500ms +#define BMP280_T_SB1000 0x05 // 1000ms +#define BMP280_T_SB2000 0x06 // 2000ms +#define BMP280_T_SB4000 0x07 // 4000ms + +// Power Mode +#define BMP280_POWER_SLEEP 0b00 +#define BMP280_POWER_FORCE 0b01 +#define BMP280_POWER_NORMAL 0b11 + + + +#include "mbed.h" + +class BMP280 { + + public: + BMP280(I2C& i2c); + int init(char ctrl_meas = 0x6F, char config = 0x70); + int readData(float *tempC, int *pressPa); + + + protected: + I2C m_i2c; + Serial pc; + unsigned short dig_T1,dig_P1; + short dig_T2,dig_T3,dig_P2,dig_P3,dig_P4,dig_P5,dig_P6,dig_P7,dig_P8,dig_P9; + void write(char reg, char ctrl); + void read(char reg, char *data, int length); + + private: + +}; + +#endif \ No newline at end of file