Library for the barometric pressure sensor BMP183

Dependents:   BMP183Test

Committer:
Cirrus01
Date:
Tue Jun 21 10:02:13 2016 +0000
Revision:
0:3750c8d10767
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Cirrus01 0:3750c8d10767 1 #ifndef BMP183_H
Cirrus01 0:3750c8d10767 2 #define BMP183_H
Cirrus01 0:3750c8d10767 3
Cirrus01 0:3750c8d10767 4 #include "mbed.h"
Cirrus01 0:3750c8d10767 5
Cirrus01 0:3750c8d10767 6 /*=========================================================================
Cirrus01 0:3750c8d10767 7 REGISTERS
Cirrus01 0:3750c8d10767 8 -----------------------------------------------------------------------*/
Cirrus01 0:3750c8d10767 9
Cirrus01 0:3750c8d10767 10 #define BMP183_REGISTER_CAL_AC1 0xAA // R Calibration data (16 bits)
Cirrus01 0:3750c8d10767 11 #define BMP183_REGISTER_CAL_AC2 0xAC // R Calibration data (16 bits)
Cirrus01 0:3750c8d10767 12 #define BMP183_REGISTER_CAL_AC3 0xAE // R Calibration data (16 bits)
Cirrus01 0:3750c8d10767 13 #define BMP183_REGISTER_CAL_AC4 0xB0 // R Calibration data (16 bits)
Cirrus01 0:3750c8d10767 14 #define BMP183_REGISTER_CAL_AC5 0xB2 // R Calibration data (16 bits)
Cirrus01 0:3750c8d10767 15 #define BMP183_REGISTER_CAL_AC6 0xB4 // R Calibration data (16 bits)
Cirrus01 0:3750c8d10767 16 #define BMP183_REGISTER_CAL_B1 0xB6 // R Calibration data (16 bits)
Cirrus01 0:3750c8d10767 17 #define BMP183_REGISTER_CAL_B2 0xB8 // R Calibration data (16 bits)
Cirrus01 0:3750c8d10767 18 #define BMP183_REGISTER_CAL_MB 0xBA // R Calibration data (16 bits)
Cirrus01 0:3750c8d10767 19 #define BMP183_REGISTER_CAL_MC 0xBC // R Calibration data (16 bits)
Cirrus01 0:3750c8d10767 20 #define BMP183_REGISTER_CAL_MD 0xBE // R Calibration data (16 bits)
Cirrus01 0:3750c8d10767 21 #define BMP183_REGISTER_CHIPID 0xD0
Cirrus01 0:3750c8d10767 22 #define BMP183_REGISTER_VERSION 0xD1
Cirrus01 0:3750c8d10767 23 #define BMP183_REGISTER_SOFTRESET 0xE0
Cirrus01 0:3750c8d10767 24 #define BMP183_REGISTER_CONTROL 0xF4
Cirrus01 0:3750c8d10767 25 #define BMP183_REGISTER_TEMPDATA 0xF6
Cirrus01 0:3750c8d10767 26 #define BMP183_REGISTER_PRESSUREDATA 0xF6
Cirrus01 0:3750c8d10767 27 #define BMP183_REGISTER_READTEMPCMD 0x2E
Cirrus01 0:3750c8d10767 28 #define BMP183_REGISTER_READPRESSURECMD 0x34
Cirrus01 0:3750c8d10767 29
Cirrus01 0:3750c8d10767 30 /*=========================================================================*/
Cirrus01 0:3750c8d10767 31
Cirrus01 0:3750c8d10767 32 /*=========================================================================
Cirrus01 0:3750c8d10767 33 MODE SETTINGS
Cirrus01 0:3750c8d10767 34 -----------------------------------------------------------------------*/
Cirrus01 0:3750c8d10767 35
Cirrus01 0:3750c8d10767 36 #define BMP183_MODE_ULTRALOWPOWER 0
Cirrus01 0:3750c8d10767 37 #define BMP183_MODE_STANDARD 1
Cirrus01 0:3750c8d10767 38 #define BMP183_MODE_HIGHRES 2
Cirrus01 0:3750c8d10767 39 #define BMP183_MODE_ULTRAHIGHRES 3
Cirrus01 0:3750c8d10767 40
Cirrus01 0:3750c8d10767 41 /*=========================================================================*/
Cirrus01 0:3750c8d10767 42
Cirrus01 0:3750c8d10767 43 class BMP183
Cirrus01 0:3750c8d10767 44 {
Cirrus01 0:3750c8d10767 45 public:
Cirrus01 0:3750c8d10767 46 BMP183(PinName MOSI, PinName MISO, PinName SCLK, PinName CS);
Cirrus01 0:3750c8d10767 47
Cirrus01 0:3750c8d10767 48 uint8_t getID(void);
Cirrus01 0:3750c8d10767 49 void getCalibrationData(void);
Cirrus01 0:3750c8d10767 50 void read(void);
Cirrus01 0:3750c8d10767 51 float Temperature, Pressure, Altitude;
Cirrus01 0:3750c8d10767 52
Cirrus01 0:3750c8d10767 53 private:
Cirrus01 0:3750c8d10767 54 SPI spi;
Cirrus01 0:3750c8d10767 55 DigitalOut cs;
Cirrus01 0:3750c8d10767 56
Cirrus01 0:3750c8d10767 57 short AC1, AC2, AC3, B1, B2, MB, MC, MD;
Cirrus01 0:3750c8d10767 58 unsigned short AC4, AC5, AC6;
Cirrus01 0:3750c8d10767 59 short oss;
Cirrus01 0:3750c8d10767 60
Cirrus01 0:3750c8d10767 61 void readRegister(uint8_t reg, char *buffer, int length);
Cirrus01 0:3750c8d10767 62 void writeRegister(uint8_t reg, int data);
Cirrus01 0:3750c8d10767 63 void writeRegister(uint8_t reg, char *buffer, int length);
Cirrus01 0:3750c8d10767 64
Cirrus01 0:3750c8d10767 65 void ChipSelect(void);
Cirrus01 0:3750c8d10767 66 void ChipDeselect(void);
Cirrus01 0:3750c8d10767 67 };
Cirrus01 0:3750c8d10767 68
Cirrus01 0:3750c8d10767 69
Cirrus01 0:3750c8d10767 70 #endif // BMP183_H