BME280 Adafruit sensor with Mbed-os compatibility.

Fork of BME280 by LoRa Project

Committer:
Rhyme
Date:
Tue May 09 06:32:36 2017 +0000
Revision:
0:5ace1cc7a9f2
Child:
1:7b525853bad0
spi read/write started working

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 0:5ace1cc7a9f2 5 #define BME280_U32_t uint32_t
Rhyme 0:5ace1cc7a9f2 6 #define BME280_S32_t int32_t
Rhyme 0:5ace1cc7a9f2 7 #define BME280_S64_t int64_t
Rhyme 0:5ace1cc7a9f2 8
Rhyme 0:5ace1cc7a9f2 9 /**
Rhyme 0:5ace1cc7a9f2 10 * BME280 Environmental sensor
Rhyme 0:5ace1cc7a9f2 11 *
Rhyme 0:5ace1cc7a9f2 12 * Note: Interface selection is done by the value of CSB (chip select)
Rhyme 0:5ace1cc7a9f2 13 * if CSB is pulled-up, I2C interface is active.
Rhyme 0:5ace1cc7a9f2 14 * if CSB is pulled-down, SPI interface is active.
Rhyme 0:5ace1cc7a9f2 15 * After CSB has been pulled down once (regardless of whether any clock cycle occurred)
Rhyme 0:5ace1cc7a9f2 16 * the I2C interface is disabled until the next power-on-reset.
Rhyme 0:5ace1cc7a9f2 17 */
Rhyme 0:5ace1cc7a9f2 18
Rhyme 0:5ace1cc7a9f2 19 class BME280
Rhyme 0:5ace1cc7a9f2 20 {
Rhyme 0:5ace1cc7a9f2 21 public:
Rhyme 0:5ace1cc7a9f2 22 /**
Rhyme 0:5ace1cc7a9f2 23 * BME280 I2C Interface
Rhyme 0:5ace1cc7a9f2 24 *
Rhyme 0:5ace1cc7a9f2 25 * @param sda SDA pin
Rhyme 0:5ace1cc7a9f2 26 * @param scl SCL pin
Rhyme 0:5ace1cc7a9f2 27 * @param addr address of the I2C peripheral
Rhyme 0:5ace1cc7a9f2 28 */
Rhyme 0:5ace1cc7a9f2 29 BME280(PinName sda, PinName scl, int addr) ;
Rhyme 0:5ace1cc7a9f2 30
Rhyme 0:5ace1cc7a9f2 31 /**
Rhyme 0:5ace1cc7a9f2 32 * BME280 SPI Interface
Rhyme 0:5ace1cc7a9f2 33 *
Rhyme 0:5ace1cc7a9f2 34 * @param sck SPI SCKL pin
Rhyme 0:5ace1cc7a9f2 35 * @param miso SPI Master In Slave Out pin
Rhyme 0:5ace1cc7a9f2 36 * @param mosi SPI Master Out Slave In pin
Rhyme 0:5ace1cc7a9f2 37 * @param cs SPI Chip Select pin
Rhyme 0:5ace1cc7a9f2 38 */
Rhyme 0:5ace1cc7a9f2 39 BME280(PinName sck, PinName miso, PinName mosi, PinName cs) ;
Rhyme 0:5ace1cc7a9f2 40
Rhyme 0:5ace1cc7a9f2 41 ~BME280() ;
Rhyme 0:5ace1cc7a9f2 42
Rhyme 0:5ace1cc7a9f2 43 void reset(void) ;
Rhyme 0:5ace1cc7a9f2 44 void init(void) ;
Rhyme 0:5ace1cc7a9f2 45 void trigger(void) ; /* forced mode */
Rhyme 0:5ace1cc7a9f2 46 uint8_t busy(void) ;
Rhyme 0:5ace1cc7a9f2 47
Rhyme 0:5ace1cc7a9f2 48 uint8_t getID(void) ;
Rhyme 0:5ace1cc7a9f2 49
Rhyme 0:5ace1cc7a9f2 50 void readData(uint8_t data[]) ;
Rhyme 0:5ace1cc7a9f2 51
Rhyme 0:5ace1cc7a9f2 52 float getTemperature(uint8_t data[]) ;
Rhyme 0:5ace1cc7a9f2 53 float getHumidity(uint8_t data[]) ;
Rhyme 0:5ace1cc7a9f2 54 float getPressure(uint8_t data[]) ;
Rhyme 0:5ace1cc7a9f2 55
Rhyme 0:5ace1cc7a9f2 56 private:
Rhyme 0:5ace1cc7a9f2 57 SPI *m_spi ;
Rhyme 0:5ace1cc7a9f2 58 I2C *m_i2c ;
Rhyme 0:5ace1cc7a9f2 59 DigitalOut *m_cs ;
Rhyme 0:5ace1cc7a9f2 60 int m_addr ;
Rhyme 0:5ace1cc7a9f2 61 BME280_S32_t t_fine ;
Rhyme 0:5ace1cc7a9f2 62
Rhyme 0:5ace1cc7a9f2 63 uint16_t dig_T1, dig_T2, dig_T3 ;
Rhyme 0:5ace1cc7a9f2 64 uint16_t dig_P1, dig_P2, dig_P3 ;
Rhyme 0:5ace1cc7a9f2 65 uint16_t dig_P4, dig_P5, dig_P6 ;
Rhyme 0:5ace1cc7a9f2 66 uint16_t dig_P7, dig_P8, dig_P9 ;
Rhyme 0:5ace1cc7a9f2 67 uint16_t dig_H1, dig_H2, dig_H3 ;
Rhyme 0:5ace1cc7a9f2 68 uint16_t dig_H4, dig_H5, dig_H6 ;
Rhyme 0:5ace1cc7a9f2 69
Rhyme 0:5ace1cc7a9f2 70 void i2c_readRegs(int addr, uint8_t *data, int len) ;
Rhyme 0:5ace1cc7a9f2 71 void i2c_writeRegs(uint8_t *data, int len) ;
Rhyme 0:5ace1cc7a9f2 72 void spi_readRegs(int addr, uint8_t *data, int len) ;
Rhyme 0:5ace1cc7a9f2 73 void spi_writeRegs(uint8_t *data, int len) ;
Rhyme 0:5ace1cc7a9f2 74 void readRegs(int addr, uint8_t *data, int len) ;
Rhyme 0:5ace1cc7a9f2 75 void writeRegs(uint8_t *data, int len) ;
Rhyme 0:5ace1cc7a9f2 76 } ;
Rhyme 0:5ace1cc7a9f2 77 #endif /* _BME280_H_ */