yasuyuki onodera / BME280

Dependents:   mbed_BME280

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers BME280.h Source File

BME280.h

00001 //**********************
00002 // BME280.h for mbed
00003 //
00004 // (C)Copyright 2015 All rights reserved by Y.Onodera
00005 // http://einstlab.web.fc2.com
00006 //**********************
00007 #ifndef BME280_H_
00008 #define BME280_H_
00009 
00010 #define BME280_ADDR            0xEC
00011 #define hum_lsb     0xFE
00012 #define hum_msb     0xFD
00013 #define temp_xlsb   0xFC
00014 #define temp_lsb    0xFB
00015 #define temp_msb    0xFA
00016 #define press_xlsb  0xF9
00017 #define press_lsb   0xF8
00018 #define press_msb   0xF7
00019 #define config      0xF5
00020 #define ctrl_meas   0xF4
00021 #define status      0xF3
00022 #define ctrl_hum    0xF2
00023 #define calib41     0xF0
00024 #define calib40     0xEF
00025 #define calib39     0xEE
00026 #define calib38     0xED
00027 #define calib37     0xEC
00028 #define calib36     0xEB
00029 #define calib35     0xEA
00030 #define calib34     0xE9
00031 #define calib33     0xE8
00032 #define calib32     0xE7
00033 #define calib31     0xE6
00034 #define calib30     0xE5
00035 #define calib29     0xE4
00036 #define calib28     0xE3
00037 #define calib27     0xE2
00038 #define calib26     0xE1
00039 #define reset       0xE0
00040 #define id      0xD0
00041 #define calib25     0xA1
00042 #define calib24     0xA0
00043 #define calib23     0x9F
00044 #define calib22     0x9E
00045 #define calib21     0x9D
00046 #define calib20     0x9C
00047 #define calib19     0x9B
00048 #define calib18     0x9A
00049 #define calib17     0x99
00050 #define calib16     0x98
00051 #define calib15     0x97
00052 #define calib14     0x96
00053 #define calib13     0x95
00054 #define calib12     0x94
00055 #define calib11     0x93
00056 #define calib10     0x92
00057 #define calib09     0x91
00058 #define calib08     0x90
00059 #define calib07     0x8F
00060 #define calib06     0x8E
00061 #define calib05     0x8D
00062 #define calib04     0x8C
00063 #define calib03     0x8B
00064 #define calib02     0x8A
00065 #define calib01     0x89
00066 #define calib00     0x88
00067 
00068 #include "mbed.h"
00069 
00070 // see BST-BME280-DS001-10
00071 #define BME280_S32_t    signed int
00072 #define BME280_S64_t    signed long long
00073 #define BME280_U32_t    unsigned int
00074 
00075 
00076 union WORD32 {
00077     signed int  s32;
00078     unsigned int    u32;
00079     struct {
00080         unsigned char dummy;
00081         unsigned char XLSB;
00082         unsigned char LSB;
00083         unsigned char MSB;
00084     };
00085 };
00086 
00087 union WORD16 {
00088     signed short    s16;
00089     unsigned short  u16;
00090     struct {
00091         unsigned char   LSB;
00092         unsigned char   MSB;
00093     };
00094 };
00095 
00096 
00097 class BME280{
00098 public:
00099     BME280 (PinName sda, PinName scl);
00100     BME280 (I2C& p_i2c);
00101 
00102     void set(unsigned char a,unsigned char b);
00103     unsigned char get(unsigned char a);
00104     void getALL();
00105     unsigned int humidity();
00106     signed int temperature();
00107     unsigned int pressure();
00108     void init();
00109 
00110 protected:
00111     
00112     I2C _i2c;
00113 
00114     union WORD16 calib;
00115     union WORD16 hum;
00116     union WORD32 temp;
00117     union WORD32 press;
00118     char buf[8];
00119 
00120     unsigned short dig_T1;
00121     signed short dig_T2;
00122     signed short dig_T3;
00123     unsigned short dig_P1;
00124     signed short dig_P2;
00125     signed short dig_P3;
00126     signed short dig_P4;
00127     signed short dig_P5;
00128     signed short dig_P6;
00129     signed short dig_P7;
00130     signed short dig_P8;
00131     signed short dig_P9;
00132     unsigned char dig_H1;
00133     signed short dig_H2;
00134     unsigned char dig_H3;
00135     signed short dig_H4;
00136     signed short dig_H5;
00137     signed char dig_H6;
00138 
00139     BME280_S32_t t_fine;
00140     BME280_S32_t BME280_compensate_T_int32(BME280_S32_t adc_T);
00141     BME280_U32_t BME280_compensate_P_int64(BME280_S32_t adc_P);
00142     BME280_U32_t BME280_compensate_H_int32(BME280_S32_t adc_H);
00143     unsigned int t;
00144     signed int p;
00145     signed int h;
00146 };
00147 
00148 #endif /* BME280_H_ */
00149 
00150