mbed MPL115A1 (Barometric Pressure Sensor) Library

Dependents:   MPL115A1_HelloWorld

Committer:
mk
Date:
Tue Apr 17 07:44:48 2012 +0000
Revision:
0:f8ee2a5e377a
Child:
1:b2adf1b62898

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mk 0:f8ee2a5e377a 1 #ifndef MPL115A1_H
mk 0:f8ee2a5e377a 2 #define MPL115A1_H
mk 0:f8ee2a5e377a 3
mk 0:f8ee2a5e377a 4 #include "mbed.h"
mk 0:f8ee2a5e377a 5
mk 0:f8ee2a5e377a 6 /** barometric pressure and temperature sensor MPL115A1 control class, based on SPI
mk 0:f8ee2a5e377a 7 *
mk 0:f8ee2a5e377a 8 * Example:
mk 0:f8ee2a5e377a 9 * @code
mk 0:f8ee2a5e377a 10 * #include "mbed.h"
mk 0:f8ee2a5e377a 11 * #include "MPL115A1.h"
mk 0:f8ee2a5e377a 12 *
mk 0:f8ee2a5e377a 13 * SPI spi(p11,p12,p13);
mk 0:f8ee2a5e377a 14 * MPL115A1 bar(spi, p14);
mk 0:f8ee2a5e377a 15 *
mk 0:f8ee2a5e377a 16 * Serial pc(USBTX, USBRX);
mk 0:f8ee2a5e377a 17 *
mk 0:f8ee2a5e377a 18 * int main() {
mk 0:f8ee2a5e377a 19 * while(1) {
mk 0:f8ee2a5e377a 20 * wait(10);
mk 0:f8ee2a5e377a 21 * pc.printf("Pressure is %f\n", bar.readPressure());
mk 0:f8ee2a5e377a 22 * pc.printf("Temperature is %f\n", bar.readTemperature());
mk 0:f8ee2a5e377a 23 * }
mk 0:f8ee2a5e377a 24 * }
mk 0:f8ee2a5e377a 25 * @endcode
mk 0:f8ee2a5e377a 26 */
mk 0:f8ee2a5e377a 27
mk 0:f8ee2a5e377a 28 // real addresses, in read_register: address |= 0x80
mk 0:f8ee2a5e377a 29 #define MPL115A1_PRESH 0x00 // 80
mk 0:f8ee2a5e377a 30 #define MPL115A1_PRESL 0x02 // 82
mk 0:f8ee2a5e377a 31 #define MPL115A1_TEMPH 0x04 // 84
mk 0:f8ee2a5e377a 32 #define MPL115A1_TEMPL 0x06 // 86
mk 0:f8ee2a5e377a 33
mk 0:f8ee2a5e377a 34 #define MPL115A1_A0MSB 0x08 // 88
mk 0:f8ee2a5e377a 35 #define MPL115A1_A0LSB 0x0A // 8A
mk 0:f8ee2a5e377a 36 #define MPL115A1_B1MSB 0x0C // 8C
mk 0:f8ee2a5e377a 37 #define MPL115A1_B1LSB 0x0E // 8E
mk 0:f8ee2a5e377a 38 #define MPL115A1_B2MSB 0x10 // 90
mk 0:f8ee2a5e377a 39 #define MPL115A1_B2LSB 0x12 // 92
mk 0:f8ee2a5e377a 40 #define MPL115A1_C12MSB 0x14 // 94
mk 0:f8ee2a5e377a 41 #define MPL115A1_C12LSB 0x16 // 96
mk 0:f8ee2a5e377a 42 #define MPL115A1_C11MSB 0x18 // 98
mk 0:f8ee2a5e377a 43 #define MPL115A1_C11LSB 0x1A // 9A
mk 0:f8ee2a5e377a 44 #define MPL115A1_C22MSB 0x1C // 9C
mk 0:f8ee2a5e377a 45 #define MPL115A1_C22LSB 0x1E // 9E
mk 0:f8ee2a5e377a 46
mk 0:f8ee2a5e377a 47 #define MPL115A1_STARTPRES 0x20 // start pressure measurement
mk 0:f8ee2a5e377a 48 #define MPL115A1_STARTTEMP 0x22 // start temperature measurement
mk 0:f8ee2a5e377a 49 #define MPL115A1_STARTBOTH 0x24 // start both simultaneously
mk 0:f8ee2a5e377a 50
mk 0:f8ee2a5e377a 51 class MPL115A1 {
mk 0:f8ee2a5e377a 52 private:
mk 0:f8ee2a5e377a 53 SPI& _spi;
mk 0:f8ee2a5e377a 54 DigitalOut _cs; // chip select, active low
mk 0:f8ee2a5e377a 55 //DigitalOut sdn; // shutdown pin, high=on, low=off
mk 0:f8ee2a5e377a 56
mk 0:f8ee2a5e377a 57 public:
mk 0:f8ee2a5e377a 58 MPL115A1(SPI& spi, PinName ncs);
mk 0:f8ee2a5e377a 59 float readPressure();
mk 0:f8ee2a5e377a 60 float readTemperature();
mk 0:f8ee2a5e377a 61
mk 0:f8ee2a5e377a 62 private:
mk 0:f8ee2a5e377a 63 void write_register(uint8_t address, char data);
mk 0:f8ee2a5e377a 64 char read_register(uint8_t address);
mk 0:f8ee2a5e377a 65
mk 0:f8ee2a5e377a 66 signed char sia0MSB, sia0LSB;
mk 0:f8ee2a5e377a 67 signed char sib1MSB, sib1LSB;
mk 0:f8ee2a5e377a 68 signed char sib2MSB, sib2LSB;
mk 0:f8ee2a5e377a 69 signed char sic12MSB, sic12LSB;
mk 0:f8ee2a5e377a 70 signed char sic11MSB, sic11LSB;
mk 0:f8ee2a5e377a 71 signed char sic22MSB, sic22LSB;
mk 0:f8ee2a5e377a 72 signed int sia0, sib1, sib2, sic12, sic11, sic22, siPcomp;
mk 0:f8ee2a5e377a 73 float decPcomp;
mk 0:f8ee2a5e377a 74 signed long lt1, lt2, lt3, si_c11x1, si_a11, si_c12x2;
mk 0:f8ee2a5e377a 75 signed long si_a1, si_c22x2, si_a2, si_a1x1, si_y1, si_a2x2;
mk 0:f8ee2a5e377a 76 unsigned int uiPadc, uiTadc;
mk 0:f8ee2a5e377a 77 unsigned char uiPH, uiPL, uiTH, uiTL;
mk 0:f8ee2a5e377a 78 };
mk 0:f8ee2a5e377a 79
mk 0:f8ee2a5e377a 80 #endif