BME280 Adafruit sensor with Mbed-os compatibility.
Fork of BME280 by
BME280.h@2:ee200b715195, 2020-07-25 (annotated)
- Committer:
- saranjay
- Date:
- Sat Jul 25 06:37:49 2020 +0000
- Revision:
- 2:ee200b715195
- Parent:
- 1:7b525853bad0
modified for use with mbed-os.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rhyme | 0:5ace1cc7a9f2 | 1 | #ifndef _BME280_H_ |
Rhyme | 0:5ace1cc7a9f2 | 2 | #define _BME280_H_ |
Rhyme | 0:5ace1cc7a9f2 | 3 | #include "mbed.h" |
Rhyme | 0:5ace1cc7a9f2 | 4 | |
Rhyme | 1:7b525853bad0 | 5 | typedef int32_t BME280_S32_t ; |
Rhyme | 1:7b525853bad0 | 6 | typedef uint32_t BME280_U32_t ; |
Rhyme | 1:7b525853bad0 | 7 | typedef long long signed int BME280_S64_t ; |
Rhyme | 1:7b525853bad0 | 8 | |
Rhyme | 1:7b525853bad0 | 9 | #if 0 |
Rhyme | 0:5ace1cc7a9f2 | 10 | #define BME280_U32_t uint32_t |
Rhyme | 0:5ace1cc7a9f2 | 11 | #define BME280_S32_t int32_t |
Rhyme | 0:5ace1cc7a9f2 | 12 | #define BME280_S64_t int64_t |
Rhyme | 1:7b525853bad0 | 13 | #endif |
Rhyme | 0:5ace1cc7a9f2 | 14 | |
Rhyme | 0:5ace1cc7a9f2 | 15 | /** |
Rhyme | 0:5ace1cc7a9f2 | 16 | * BME280 Environmental sensor |
Rhyme | 0:5ace1cc7a9f2 | 17 | * |
Rhyme | 1:7b525853bad0 | 18 | * @note Note: Interface selection is done by the value of CSB (chip select) |
Rhyme | 1:7b525853bad0 | 19 | * @note if CSB is pulled-up, I2C interface is active. |
Rhyme | 1:7b525853bad0 | 20 | * @note if CSB is pulled-down, SPI interface is active. |
Rhyme | 1:7b525853bad0 | 21 | * @note After CSB has been pulled down once (regardless of whether any clock cycle occurred) |
Rhyme | 1:7b525853bad0 | 22 | * @note the I2C interface is disabled until the next power-on-reset. |
Rhyme | 0:5ace1cc7a9f2 | 23 | */ |
Rhyme | 0:5ace1cc7a9f2 | 24 | |
Rhyme | 0:5ace1cc7a9f2 | 25 | class BME280 |
Rhyme | 0:5ace1cc7a9f2 | 26 | { |
Rhyme | 0:5ace1cc7a9f2 | 27 | public: |
Rhyme | 0:5ace1cc7a9f2 | 28 | /** |
Rhyme | 0:5ace1cc7a9f2 | 29 | * BME280 I2C Interface |
Rhyme | 0:5ace1cc7a9f2 | 30 | * |
Rhyme | 0:5ace1cc7a9f2 | 31 | * @param sda SDA pin |
Rhyme | 0:5ace1cc7a9f2 | 32 | * @param scl SCL pin |
Rhyme | 0:5ace1cc7a9f2 | 33 | * @param addr address of the I2C peripheral |
Rhyme | 0:5ace1cc7a9f2 | 34 | */ |
Rhyme | 0:5ace1cc7a9f2 | 35 | BME280(PinName sda, PinName scl, int addr) ; |
Rhyme | 0:5ace1cc7a9f2 | 36 | |
Rhyme | 0:5ace1cc7a9f2 | 37 | /** |
Rhyme | 0:5ace1cc7a9f2 | 38 | * BME280 SPI Interface |
Rhyme | 0:5ace1cc7a9f2 | 39 | * |
Rhyme | 0:5ace1cc7a9f2 | 40 | * @param sck SPI SCKL pin |
Rhyme | 0:5ace1cc7a9f2 | 41 | * @param miso SPI Master In Slave Out pin |
Rhyme | 0:5ace1cc7a9f2 | 42 | * @param mosi SPI Master Out Slave In pin |
Rhyme | 0:5ace1cc7a9f2 | 43 | * @param cs SPI Chip Select pin |
Rhyme | 0:5ace1cc7a9f2 | 44 | */ |
Rhyme | 0:5ace1cc7a9f2 | 45 | BME280(PinName sck, PinName miso, PinName mosi, PinName cs) ; |
Rhyme | 0:5ace1cc7a9f2 | 46 | |
Rhyme | 1:7b525853bad0 | 47 | /** |
Rhyme | 1:7b525853bad0 | 48 | * BME280 destructor |
Rhyme | 1:7b525853bad0 | 49 | */ |
Rhyme | 0:5ace1cc7a9f2 | 50 | ~BME280() ; |
Rhyme | 0:5ace1cc7a9f2 | 51 | |
Rhyme | 1:7b525853bad0 | 52 | /** |
Rhyme | 1:7b525853bad0 | 53 | * software reset |
Rhyme | 1:7b525853bad0 | 54 | * |
Rhyme | 1:7b525853bad0 | 55 | * @param none |
Rhyme | 1:7b525853bad0 | 56 | * @returns none |
Rhyme | 1:7b525853bad0 | 57 | */ |
Rhyme | 0:5ace1cc7a9f2 | 58 | void reset(void) ; |
Rhyme | 1:7b525853bad0 | 59 | |
Rhyme | 1:7b525853bad0 | 60 | /** |
Rhyme | 1:7b525853bad0 | 61 | * initialization |
Rhyme | 1:7b525853bad0 | 62 | * |
Rhyme | 1:7b525853bad0 | 63 | * @param none |
Rhyme | 1:7b525853bad0 | 64 | * @reurns none |
Rhyme | 1:7b525853bad0 | 65 | */ |
Rhyme | 0:5ace1cc7a9f2 | 66 | void init(void) ; |
Rhyme | 1:7b525853bad0 | 67 | |
Rhyme | 1:7b525853bad0 | 68 | /** |
Rhyme | 1:7b525853bad0 | 69 | * trigger for one-shot measure |
Rhyme | 1:7b525853bad0 | 70 | * |
Rhyme | 1:7b525853bad0 | 71 | * @param none |
Rhyme | 1:7b525853bad0 | 72 | * @returns none |
Rhyme | 1:7b525853bad0 | 73 | */ |
Rhyme | 1:7b525853bad0 | 74 | void trigger(void) ; |
Rhyme | 1:7b525853bad0 | 75 | |
Rhyme | 1:7b525853bad0 | 76 | /** |
Rhyme | 1:7b525853bad0 | 77 | * check status register for the device activity |
Rhyme | 1:7b525853bad0 | 78 | * |
Rhyme | 1:7b525853bad0 | 79 | * @param none |
Rhyme | 1:7b525853bad0 | 80 | * @returns uint8_t measuring (0x08) or in NVM udpate (0x01) |
Rhyme | 1:7b525853bad0 | 81 | */ |
Rhyme | 0:5ace1cc7a9f2 | 82 | uint8_t busy(void) ; |
Rhyme | 0:5ace1cc7a9f2 | 83 | |
Rhyme | 1:7b525853bad0 | 84 | /** |
Rhyme | 1:7b525853bad0 | 85 | * get device ID |
Rhyme | 1:7b525853bad0 | 86 | * |
Rhyme | 1:7b525853bad0 | 87 | * @param none |
Rhyme | 1:7b525853bad0 | 88 | * @returns uint8_t ID for BME280 0x60 |
Rhyme | 1:7b525853bad0 | 89 | */ |
Rhyme | 0:5ace1cc7a9f2 | 90 | uint8_t getID(void) ; |
Rhyme | 0:5ace1cc7a9f2 | 91 | |
Rhyme | 1:7b525853bad0 | 92 | /** |
Rhyme | 1:7b525853bad0 | 93 | * get Temperature |
Rhyme | 1:7b525853bad0 | 94 | * |
Rhyme | 1:7b525853bad0 | 95 | * @param none |
Rhyme | 1:7b525853bad0 | 96 | * @returns float temperature in degree Celsious |
Rhyme | 1:7b525853bad0 | 97 | */ |
Rhyme | 1:7b525853bad0 | 98 | float getTemperature(void) ; |
Rhyme | 1:7b525853bad0 | 99 | |
Rhyme | 1:7b525853bad0 | 100 | /** |
Rhyme | 1:7b525853bad0 | 101 | * get Humidity |
Rhyme | 1:7b525853bad0 | 102 | * |
Rhyme | 1:7b525853bad0 | 103 | * @param none |
Rhyme | 1:7b525853bad0 | 104 | * @returns float humidity in % |
Rhyme | 1:7b525853bad0 | 105 | */ |
Rhyme | 1:7b525853bad0 | 106 | float getHumidity(void) ; |
Rhyme | 1:7b525853bad0 | 107 | |
Rhyme | 1:7b525853bad0 | 108 | /** |
Rhyme | 1:7b525853bad0 | 109 | * get Pressure |
Rhyme | 1:7b525853bad0 | 110 | * |
Rhyme | 1:7b525853bad0 | 111 | * @param none |
Rhyme | 1:7b525853bad0 | 112 | * @returns float pressure in hPa |
Rhyme | 1:7b525853bad0 | 113 | */ |
Rhyme | 1:7b525853bad0 | 114 | float getPressure(void) ; |
Rhyme | 0:5ace1cc7a9f2 | 115 | |
Rhyme | 0:5ace1cc7a9f2 | 116 | private: |
Rhyme | 0:5ace1cc7a9f2 | 117 | SPI *m_spi ; |
Rhyme | 0:5ace1cc7a9f2 | 118 | I2C *m_i2c ; |
Rhyme | 0:5ace1cc7a9f2 | 119 | DigitalOut *m_cs ; |
Rhyme | 0:5ace1cc7a9f2 | 120 | int m_addr ; |
Rhyme | 0:5ace1cc7a9f2 | 121 | BME280_S32_t t_fine ; |
Rhyme | 0:5ace1cc7a9f2 | 122 | |
Rhyme | 1:7b525853bad0 | 123 | uint16_t dig_T1 ; |
Rhyme | 1:7b525853bad0 | 124 | int16_t dig_T2 ; |
Rhyme | 1:7b525853bad0 | 125 | int16_t dig_T3 ; |
Rhyme | 1:7b525853bad0 | 126 | uint16_t dig_P1 ; |
Rhyme | 1:7b525853bad0 | 127 | int16_t dig_P2 ; |
Rhyme | 1:7b525853bad0 | 128 | int16_t dig_P3 ; |
Rhyme | 1:7b525853bad0 | 129 | int16_t dig_P4 ; |
Rhyme | 1:7b525853bad0 | 130 | int16_t dig_P5 ; |
Rhyme | 1:7b525853bad0 | 131 | int16_t dig_P6 ; |
Rhyme | 1:7b525853bad0 | 132 | int16_t dig_P7 ; |
Rhyme | 1:7b525853bad0 | 133 | int16_t dig_P8 ; |
Rhyme | 1:7b525853bad0 | 134 | int16_t dig_P9 ; |
Rhyme | 1:7b525853bad0 | 135 | uint8_t dig_H1 ; |
Rhyme | 1:7b525853bad0 | 136 | int16_t dig_H2 ; |
Rhyme | 1:7b525853bad0 | 137 | uint8_t dig_H3 ; |
Rhyme | 1:7b525853bad0 | 138 | int16_t dig_H4 ; |
Rhyme | 1:7b525853bad0 | 139 | int16_t dig_H5 ; |
Rhyme | 1:7b525853bad0 | 140 | int8_t dig_H6 ; |
Rhyme | 0:5ace1cc7a9f2 | 141 | |
Rhyme | 0:5ace1cc7a9f2 | 142 | void i2c_readRegs(int addr, uint8_t *data, int len) ; |
Rhyme | 0:5ace1cc7a9f2 | 143 | void i2c_writeRegs(uint8_t *data, int len) ; |
Rhyme | 0:5ace1cc7a9f2 | 144 | void spi_readRegs(int addr, uint8_t *data, int len) ; |
Rhyme | 0:5ace1cc7a9f2 | 145 | void spi_writeRegs(uint8_t *data, int len) ; |
Rhyme | 0:5ace1cc7a9f2 | 146 | void readRegs(int addr, uint8_t *data, int len) ; |
Rhyme | 0:5ace1cc7a9f2 | 147 | void writeRegs(uint8_t *data, int len) ; |
Rhyme | 0:5ace1cc7a9f2 | 148 | } ; |
Rhyme | 0:5ace1cc7a9f2 | 149 | #endif /* _BME280_H_ */ |