BME280 Adafruit sensor with Mbed-os compatibility.

Fork of BME280 by LoRa Project

Revision:
0:5ace1cc7a9f2
Child:
1:7b525853bad0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BME280.h	Tue May 09 06:32:36 2017 +0000
@@ -0,0 +1,77 @@
+#ifndef _BME280_H_
+#define _BME280_H_
+#include "mbed.h"
+
+#define BME280_U32_t uint32_t
+#define BME280_S32_t int32_t
+#define BME280_S64_t int64_t
+
+/**
+ * BME280 Environmental sensor
+ *
+ * Note: Interface selection is done by the value of CSB (chip select)
+ * if CSB is pulled-up, I2C interface is active.
+ * if CSB is pulled-down, SPI interface is active.
+ * After CSB has been pulled down once (regardless of whether any clock cycle occurred)
+ * the I2C interface is disabled until the next power-on-reset.
+ */
+
+class BME280
+{
+public:
+ /**
+  * BME280 I2C Interface
+  *
+  * @param sda SDA pin
+  * @param scl SCL pin
+  * @param addr address of the I2C peripheral
+  */
+BME280(PinName sda, PinName scl, int addr) ;
+
+ /**
+  * BME280 SPI Interface
+  *
+  * @param sck  SPI SCKL pin
+  * @param miso SPI Master In Slave Out pin
+  * @param mosi SPI Master Out Slave In pin
+  * @param cs   SPI Chip Select pin
+  */
+BME280(PinName sck, PinName miso, PinName mosi, PinName cs) ;
+
+~BME280() ;
+
+void reset(void) ; 
+void init(void) ;
+void trigger(void) ; /* forced mode */
+uint8_t  busy(void) ;
+
+uint8_t getID(void) ;
+
+void readData(uint8_t data[]) ;
+  
+float getTemperature(uint8_t data[]) ;
+float getHumidity(uint8_t data[]) ;
+float getPressure(uint8_t data[]) ;
+
+private:
+  SPI *m_spi ;
+  I2C *m_i2c ;
+  DigitalOut *m_cs ;
+  int m_addr ;
+  BME280_S32_t t_fine ;
+  
+  uint16_t dig_T1, dig_T2, dig_T3 ;
+  uint16_t dig_P1, dig_P2, dig_P3 ; 
+  uint16_t dig_P4, dig_P5, dig_P6 ; 
+  uint16_t dig_P7, dig_P8, dig_P9 ;
+  uint16_t dig_H1, dig_H2, dig_H3 ;
+  uint16_t dig_H4, dig_H5, dig_H6 ;
+
+  void i2c_readRegs(int addr, uint8_t *data, int len) ;
+  void i2c_writeRegs(uint8_t *data, int len) ;
+  void spi_readRegs(int addr, uint8_t *data, int len) ;
+  void spi_writeRegs(uint8_t *data, int len) ;
+  void readRegs(int addr, uint8_t *data, int len) ;
+  void writeRegs(uint8_t *data, int len) ;
+} ;
+#endif /* _BME280_H_ */
\ No newline at end of file