My trial of BME280 library, tested with Adafruit BME280 module

Dependents:   test_BME280

Committer:
Rhyme
Date:
Wed May 10 09:11:01 2017 +0000
Revision:
1:7b525853bad0
Parent:
0:5ace1cc7a9f2
First working version

Who changed what in which revision?

UserRevisionLine numberNew 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_ */