BME280をI2CとSPIで使用するためのライブラリ。
Dependents: BNO055_BME280_ Yabusame2_gyro GRhanawaizman
BME280.h@0:2baa0f77d4d2, 2016-11-29 (annotated)
- Committer:
- Yajirushi
- Date:
- Tue Nov 29 02:58:53 2016 +0000
- Revision:
- 0:2baa0f77d4d2
FISRT COMMIT
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Yajirushi | 0:2baa0f77d4d2 | 1 | #ifndef BME280_H |
Yajirushi | 0:2baa0f77d4d2 | 2 | #define BME280_H |
Yajirushi | 0:2baa0f77d4d2 | 3 | |
Yajirushi | 0:2baa0f77d4d2 | 4 | #include "mbed.h" |
Yajirushi | 0:2baa0f77d4d2 | 5 | |
Yajirushi | 0:2baa0f77d4d2 | 6 | //I2Cデフォルトスレーブアドレス |
Yajirushi | 0:2baa0f77d4d2 | 7 | #define BME280_I2C_DEFADDR 0x76 |
Yajirushi | 0:2baa0f77d4d2 | 8 | //SPIデフォルト通信スピード[Hz] |
Yajirushi | 0:2baa0f77d4d2 | 9 | #define BME280_SPI_DEFSPD 3000000 |
Yajirushi | 0:2baa0f77d4d2 | 10 | |
Yajirushi | 0:2baa0f77d4d2 | 11 | #define BME280R_ID 0xD0 |
Yajirushi | 0:2baa0f77d4d2 | 12 | |
Yajirushi | 0:2baa0f77d4d2 | 13 | #define BME280R_RESET 0xE0 |
Yajirushi | 0:2baa0f77d4d2 | 14 | #define BME280R_CTRL_HUM 0xF2 |
Yajirushi | 0:2baa0f77d4d2 | 15 | #define BME280R_STATUS 0xF3 |
Yajirushi | 0:2baa0f77d4d2 | 16 | #define BME280R_CTRL_MEAS 0xF4 |
Yajirushi | 0:2baa0f77d4d2 | 17 | #define BME280R_CONFIG 0xF5 |
Yajirushi | 0:2baa0f77d4d2 | 18 | |
Yajirushi | 0:2baa0f77d4d2 | 19 | #define BME280R_PRESS_MSB 0xF7 |
Yajirushi | 0:2baa0f77d4d2 | 20 | #define BME280R_PRESS_LSB 0xF8 |
Yajirushi | 0:2baa0f77d4d2 | 21 | #define BME280R_PRESS_XLSB 0xF9 |
Yajirushi | 0:2baa0f77d4d2 | 22 | |
Yajirushi | 0:2baa0f77d4d2 | 23 | #define BME280R_TEMP_MSB 0xFA |
Yajirushi | 0:2baa0f77d4d2 | 24 | #define BME280R_TEMP_LSB 0xFB |
Yajirushi | 0:2baa0f77d4d2 | 25 | #define BME280R_TEMP_XLSB 0xFC |
Yajirushi | 0:2baa0f77d4d2 | 26 | |
Yajirushi | 0:2baa0f77d4d2 | 27 | #define BME280R_HUM_MSB 0xFD |
Yajirushi | 0:2baa0f77d4d2 | 28 | #define BME280R_HUM_LSB 0xFE |
Yajirushi | 0:2baa0f77d4d2 | 29 | |
Yajirushi | 0:2baa0f77d4d2 | 30 | #define BME280R_CALIB00 0x88 |
Yajirushi | 0:2baa0f77d4d2 | 31 | #define BME280R_CALIB01 0x89 |
Yajirushi | 0:2baa0f77d4d2 | 32 | #define BME280R_CALIB02 0x8A |
Yajirushi | 0:2baa0f77d4d2 | 33 | #define BME280R_CALIB03 0x8B |
Yajirushi | 0:2baa0f77d4d2 | 34 | #define BME280R_CALIB04 0x8C |
Yajirushi | 0:2baa0f77d4d2 | 35 | #define BME280R_CALIB05 0x8D |
Yajirushi | 0:2baa0f77d4d2 | 36 | #define BME280R_CALIB06 0x8E |
Yajirushi | 0:2baa0f77d4d2 | 37 | #define BME280R_CALIB07 0x8F |
Yajirushi | 0:2baa0f77d4d2 | 38 | #define BME280R_CALIB08 0x90 |
Yajirushi | 0:2baa0f77d4d2 | 39 | #define BME280R_CALIB09 0x91 |
Yajirushi | 0:2baa0f77d4d2 | 40 | #define BME280R_CALIB10 0x92 |
Yajirushi | 0:2baa0f77d4d2 | 41 | #define BME280R_CALIB11 0x93 |
Yajirushi | 0:2baa0f77d4d2 | 42 | #define BME280R_CALIB12 0x94 |
Yajirushi | 0:2baa0f77d4d2 | 43 | #define BME280R_CALIB13 0x95 |
Yajirushi | 0:2baa0f77d4d2 | 44 | #define BME280R_CALIB14 0x96 |
Yajirushi | 0:2baa0f77d4d2 | 45 | #define BME280R_CALIB15 0x97 |
Yajirushi | 0:2baa0f77d4d2 | 46 | #define BME280R_CALIB16 0x98 |
Yajirushi | 0:2baa0f77d4d2 | 47 | #define BME280R_CALIB17 0x99 |
Yajirushi | 0:2baa0f77d4d2 | 48 | #define BME280R_CALIB18 0x9A |
Yajirushi | 0:2baa0f77d4d2 | 49 | #define BME280R_CALIB19 0x9B |
Yajirushi | 0:2baa0f77d4d2 | 50 | #define BME280R_CALIB20 0x9C |
Yajirushi | 0:2baa0f77d4d2 | 51 | #define BME280R_CALIB21 0x9D |
Yajirushi | 0:2baa0f77d4d2 | 52 | #define BME280R_CALIB22 0x9E |
Yajirushi | 0:2baa0f77d4d2 | 53 | #define BME280R_CALIB23 0x9F |
Yajirushi | 0:2baa0f77d4d2 | 54 | #define BME280R_CALIB24 0xA0 |
Yajirushi | 0:2baa0f77d4d2 | 55 | #define BME280R_CALIB25 0xA1 |
Yajirushi | 0:2baa0f77d4d2 | 56 | |
Yajirushi | 0:2baa0f77d4d2 | 57 | #define BME280R_CALIB26 0xE1 |
Yajirushi | 0:2baa0f77d4d2 | 58 | #define BME280R_CALIB27 0xE2 |
Yajirushi | 0:2baa0f77d4d2 | 59 | #define BME280R_CALIB28 0xE3 |
Yajirushi | 0:2baa0f77d4d2 | 60 | #define BME280R_CALIB29 0xE4 |
Yajirushi | 0:2baa0f77d4d2 | 61 | #define BME280R_CALIB30 0xE5 |
Yajirushi | 0:2baa0f77d4d2 | 62 | #define BME280R_CALIB31 0xE6 |
Yajirushi | 0:2baa0f77d4d2 | 63 | #define BME280R_CALIB32 0xE7 |
Yajirushi | 0:2baa0f77d4d2 | 64 | #define BME280R_CALIB33 0xE8 |
Yajirushi | 0:2baa0f77d4d2 | 65 | #define BME280R_CALIB34 0xE9 |
Yajirushi | 0:2baa0f77d4d2 | 66 | #define BME280R_CALIB35 0xEA |
Yajirushi | 0:2baa0f77d4d2 | 67 | #define BME280R_CALIB36 0xEB |
Yajirushi | 0:2baa0f77d4d2 | 68 | #define BME280R_CALIB37 0xEC |
Yajirushi | 0:2baa0f77d4d2 | 69 | #define BME280R_CALIB38 0xED |
Yajirushi | 0:2baa0f77d4d2 | 70 | #define BME280R_CALIB39 0xEE |
Yajirushi | 0:2baa0f77d4d2 | 71 | #define BME280R_CALIB40 0xEF |
Yajirushi | 0:2baa0f77d4d2 | 72 | #define BME280R_CALIB41 0xF0 |
Yajirushi | 0:2baa0f77d4d2 | 73 | |
Yajirushi | 0:2baa0f77d4d2 | 74 | class BME280_CTRL{ |
Yajirushi | 0:2baa0f77d4d2 | 75 | public: |
Yajirushi | 0:2baa0f77d4d2 | 76 | BME280_CTRL(); |
Yajirushi | 0:2baa0f77d4d2 | 77 | virtual ~BME280_CTRL(); |
Yajirushi | 0:2baa0f77d4d2 | 78 | protected: |
Yajirushi | 0:2baa0f77d4d2 | 79 | char interface_mode; |
Yajirushi | 0:2baa0f77d4d2 | 80 | public: |
Yajirushi | 0:2baa0f77d4d2 | 81 | char getInterfaceMode(); |
Yajirushi | 0:2baa0f77d4d2 | 82 | virtual void init(); |
Yajirushi | 0:2baa0f77d4d2 | 83 | virtual char rr(char regAddr); |
Yajirushi | 0:2baa0f77d4d2 | 84 | virtual char rrc(char startRegAddr, char *receiveBytes, char length); |
Yajirushi | 0:2baa0f77d4d2 | 85 | virtual char wr(char regAddr, char wBytes); |
Yajirushi | 0:2baa0f77d4d2 | 86 | }; |
Yajirushi | 0:2baa0f77d4d2 | 87 | |
Yajirushi | 0:2baa0f77d4d2 | 88 | class BME280_SPI_CTRL : public BME280_CTRL{ |
Yajirushi | 0:2baa0f77d4d2 | 89 | public: |
Yajirushi | 0:2baa0f77d4d2 | 90 | BME280_SPI_CTRL(SPI *si, DigitalOut *spi_cs, unsigned int speedHz); |
Yajirushi | 0:2baa0f77d4d2 | 91 | virtual ~BME280_SPI_CTRL(); |
Yajirushi | 0:2baa0f77d4d2 | 92 | private: |
Yajirushi | 0:2baa0f77d4d2 | 93 | SPI *iface; |
Yajirushi | 0:2baa0f77d4d2 | 94 | DigitalOut *cs; |
Yajirushi | 0:2baa0f77d4d2 | 95 | unsigned int speed; |
Yajirushi | 0:2baa0f77d4d2 | 96 | public: |
Yajirushi | 0:2baa0f77d4d2 | 97 | virtual void init(); |
Yajirushi | 0:2baa0f77d4d2 | 98 | virtual char rr(char regAddr); |
Yajirushi | 0:2baa0f77d4d2 | 99 | virtual char rrc(char startRegAddr, char *receiveBytes, char length); |
Yajirushi | 0:2baa0f77d4d2 | 100 | virtual char wr(char regAddr, char wBytes); |
Yajirushi | 0:2baa0f77d4d2 | 101 | }; |
Yajirushi | 0:2baa0f77d4d2 | 102 | |
Yajirushi | 0:2baa0f77d4d2 | 103 | class BME280_I2C_CTRL : public BME280_CTRL{ |
Yajirushi | 0:2baa0f77d4d2 | 104 | public: |
Yajirushi | 0:2baa0f77d4d2 | 105 | BME280_I2C_CTRL(I2C *iic, char addr, unsigned int freq); |
Yajirushi | 0:2baa0f77d4d2 | 106 | virtual ~BME280_I2C_CTRL(); |
Yajirushi | 0:2baa0f77d4d2 | 107 | private: |
Yajirushi | 0:2baa0f77d4d2 | 108 | I2C *iface; |
Yajirushi | 0:2baa0f77d4d2 | 109 | char i2c_readAddr; |
Yajirushi | 0:2baa0f77d4d2 | 110 | char i2c_writeAddr; |
Yajirushi | 0:2baa0f77d4d2 | 111 | unsigned int i2c_freq; |
Yajirushi | 0:2baa0f77d4d2 | 112 | public: |
Yajirushi | 0:2baa0f77d4d2 | 113 | virtual void init(); |
Yajirushi | 0:2baa0f77d4d2 | 114 | virtual char rr(char regAddr); |
Yajirushi | 0:2baa0f77d4d2 | 115 | virtual char rrc(char startRegAddr, char *receiveBytes, char length); |
Yajirushi | 0:2baa0f77d4d2 | 116 | virtual char wr(char regAddr, char wBytes); |
Yajirushi | 0:2baa0f77d4d2 | 117 | }; |
Yajirushi | 0:2baa0f77d4d2 | 118 | |
Yajirushi | 0:2baa0f77d4d2 | 119 | class BOARDC_BME280{ |
Yajirushi | 0:2baa0f77d4d2 | 120 | public: |
Yajirushi | 0:2baa0f77d4d2 | 121 | BOARDC_BME280(PinName mosi, PinName miso, PinName sck, PinName scs, unsigned int spdHz=BME280_SPI_DEFSPD); |
Yajirushi | 0:2baa0f77d4d2 | 122 | BOARDC_BME280(SPI *spi, PinName scs, unsigned int spdHz=BME280_SPI_DEFSPD); |
Yajirushi | 0:2baa0f77d4d2 | 123 | BOARDC_BME280(SPI *spi, DigitalOut *spi_cs, unsigned int spdHz=BME280_SPI_DEFSPD); |
Yajirushi | 0:2baa0f77d4d2 | 124 | |
Yajirushi | 0:2baa0f77d4d2 | 125 | BOARDC_BME280(PinName sda, PinName scl, char addr=BME280_I2C_DEFADDR, unsigned int freq=100000); |
Yajirushi | 0:2baa0f77d4d2 | 126 | BOARDC_BME280(I2C *iic, char addr=BME280_I2C_DEFADDR, unsigned int freq=100000); |
Yajirushi | 0:2baa0f77d4d2 | 127 | private: |
Yajirushi | 0:2baa0f77d4d2 | 128 | BME280_CTRL *ctrl; |
Yajirushi | 0:2baa0f77d4d2 | 129 | |
Yajirushi | 0:2baa0f77d4d2 | 130 | signed int t_fine; |
Yajirushi | 0:2baa0f77d4d2 | 131 | |
Yajirushi | 0:2baa0f77d4d2 | 132 | unsigned short T1; |
Yajirushi | 0:2baa0f77d4d2 | 133 | signed short T2; |
Yajirushi | 0:2baa0f77d4d2 | 134 | signed short T3; |
Yajirushi | 0:2baa0f77d4d2 | 135 | |
Yajirushi | 0:2baa0f77d4d2 | 136 | unsigned short P1; |
Yajirushi | 0:2baa0f77d4d2 | 137 | signed short P2; |
Yajirushi | 0:2baa0f77d4d2 | 138 | signed short P3; |
Yajirushi | 0:2baa0f77d4d2 | 139 | signed short P4; |
Yajirushi | 0:2baa0f77d4d2 | 140 | signed short P5; |
Yajirushi | 0:2baa0f77d4d2 | 141 | signed short P6; |
Yajirushi | 0:2baa0f77d4d2 | 142 | signed short P7; |
Yajirushi | 0:2baa0f77d4d2 | 143 | signed short P8; |
Yajirushi | 0:2baa0f77d4d2 | 144 | signed short P9; |
Yajirushi | 0:2baa0f77d4d2 | 145 | |
Yajirushi | 0:2baa0f77d4d2 | 146 | unsigned char H1; |
Yajirushi | 0:2baa0f77d4d2 | 147 | signed short H2; |
Yajirushi | 0:2baa0f77d4d2 | 148 | unsigned char H3; |
Yajirushi | 0:2baa0f77d4d2 | 149 | signed short H4; |
Yajirushi | 0:2baa0f77d4d2 | 150 | signed short H5; |
Yajirushi | 0:2baa0f77d4d2 | 151 | signed char H6; |
Yajirushi | 0:2baa0f77d4d2 | 152 | public: |
Yajirushi | 0:2baa0f77d4d2 | 153 | void initialize(bool initIface=true); |
Yajirushi | 0:2baa0f77d4d2 | 154 | |
Yajirushi | 0:2baa0f77d4d2 | 155 | char getInterfaceMode(); |
Yajirushi | 0:2baa0f77d4d2 | 156 | |
Yajirushi | 0:2baa0f77d4d2 | 157 | char getChipID(); |
Yajirushi | 0:2baa0f77d4d2 | 158 | |
Yajirushi | 0:2baa0f77d4d2 | 159 | void reset(); |
Yajirushi | 0:2baa0f77d4d2 | 160 | |
Yajirushi | 0:2baa0f77d4d2 | 161 | char getCTRL_humidity(); |
Yajirushi | 0:2baa0f77d4d2 | 162 | void setCTRL_humidity(char regVal); |
Yajirushi | 0:2baa0f77d4d2 | 163 | |
Yajirushi | 0:2baa0f77d4d2 | 164 | char getCTRL_measuring(); |
Yajirushi | 0:2baa0f77d4d2 | 165 | void setCTRL_measuring(char regVal); |
Yajirushi | 0:2baa0f77d4d2 | 166 | |
Yajirushi | 0:2baa0f77d4d2 | 167 | unsigned int getOverSample_P(); |
Yajirushi | 0:2baa0f77d4d2 | 168 | unsigned int getOverSample_T(); |
Yajirushi | 0:2baa0f77d4d2 | 169 | unsigned int getOverSample_H(); |
Yajirushi | 0:2baa0f77d4d2 | 170 | void setOverSample_P(unsigned int oversampling); |
Yajirushi | 0:2baa0f77d4d2 | 171 | void setOverSample_T(unsigned int oversampling); |
Yajirushi | 0:2baa0f77d4d2 | 172 | void setOverSample_H(unsigned int oversampling); |
Yajirushi | 0:2baa0f77d4d2 | 173 | |
Yajirushi | 0:2baa0f77d4d2 | 174 | char getConfig(); |
Yajirushi | 0:2baa0f77d4d2 | 175 | void setConfig(char regVal); |
Yajirushi | 0:2baa0f77d4d2 | 176 | |
Yajirushi | 0:2baa0f77d4d2 | 177 | char getStatus(); |
Yajirushi | 0:2baa0f77d4d2 | 178 | bool isReady(); |
Yajirushi | 0:2baa0f77d4d2 | 179 | |
Yajirushi | 0:2baa0f77d4d2 | 180 | char getMode(); |
Yajirushi | 0:2baa0f77d4d2 | 181 | |
Yajirushi | 0:2baa0f77d4d2 | 182 | void updateCalib(); |
Yajirushi | 0:2baa0f77d4d2 | 183 | void updateCalibT(); |
Yajirushi | 0:2baa0f77d4d2 | 184 | void updateCalibP(); |
Yajirushi | 0:2baa0f77d4d2 | 185 | void updateCalibH(); |
Yajirushi | 0:2baa0f77d4d2 | 186 | |
Yajirushi | 0:2baa0f77d4d2 | 187 | float getTemp(unsigned int mode=0); |
Yajirushi | 0:2baa0f77d4d2 | 188 | float getTemp_Celsius(); |
Yajirushi | 0:2baa0f77d4d2 | 189 | float getTemp_Fahrenheit(); |
Yajirushi | 0:2baa0f77d4d2 | 190 | float getTemp_Kelvin(); |
Yajirushi | 0:2baa0f77d4d2 | 191 | |
Yajirushi | 0:2baa0f77d4d2 | 192 | float getPress(unsigned int mode=0); |
Yajirushi | 0:2baa0f77d4d2 | 193 | float getPress_Pascal(); |
Yajirushi | 0:2baa0f77d4d2 | 194 | float getPress_hPa(); |
Yajirushi | 0:2baa0f77d4d2 | 195 | float getPress_psi(); |
Yajirushi | 0:2baa0f77d4d2 | 196 | |
Yajirushi | 0:2baa0f77d4d2 | 197 | float getHum(); |
Yajirushi | 0:2baa0f77d4d2 | 198 | |
Yajirushi | 0:2baa0f77d4d2 | 199 | double getPress64(unsigned int mode=0); |
Yajirushi | 0:2baa0f77d4d2 | 200 | double getPress64_Pascal(); |
Yajirushi | 0:2baa0f77d4d2 | 201 | double getPress64_hPa(); |
Yajirushi | 0:2baa0f77d4d2 | 202 | double getPress64_psi(); |
Yajirushi | 0:2baa0f77d4d2 | 203 | }; |
Yajirushi | 0:2baa0f77d4d2 | 204 | |
Yajirushi | 0:2baa0f77d4d2 | 205 | #endif |