BME280 Adafruit sensor with Mbed-os compatibility.
Fork of BME280 by
BME280.h@0:5ace1cc7a9f2, 2017-05-09 (annotated)
- 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?
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 | 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_ */ |