mbed MPL115A1 (Barometric Pressure Sensor) Library
Dependents: MPL115A1_HelloWorld
MPL115A1.h@1:b2adf1b62898, 2012-04-17 (annotated)
- Committer:
- mk
- Date:
- Tue Apr 17 15:35:24 2012 +0000
- Revision:
- 1:b2adf1b62898
- Parent:
- 0:f8ee2a5e377a
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:b2adf1b62898 | 58 | /** Create a barometer object connected to the SPI bus and specified chip select pin |
mk | 1:b2adf1b62898 | 59 | * |
mk | 1:b2adf1b62898 | 60 | * @param spi SPI master object |
mk | 1:b2adf1b62898 | 61 | * @param ncs chip select pin |
mk | 1:b2adf1b62898 | 62 | */ |
mk | 0:f8ee2a5e377a | 63 | MPL115A1(SPI& spi, PinName ncs); |
mk | 1:b2adf1b62898 | 64 | /** start measurement, read registers, calculate and return pressure */ |
mk | 0:f8ee2a5e377a | 65 | float readPressure(); |
mk | 1:b2adf1b62898 | 66 | /** start measurement, read registers, calculate and return temperature */ |
mk | 0:f8ee2a5e377a | 67 | float readTemperature(); |
mk | 0:f8ee2a5e377a | 68 | |
mk | 0:f8ee2a5e377a | 69 | private: |
mk | 0:f8ee2a5e377a | 70 | void write_register(uint8_t address, char data); |
mk | 0:f8ee2a5e377a | 71 | char read_register(uint8_t address); |
mk | 0:f8ee2a5e377a | 72 | |
mk | 0:f8ee2a5e377a | 73 | signed char sia0MSB, sia0LSB; |
mk | 0:f8ee2a5e377a | 74 | signed char sib1MSB, sib1LSB; |
mk | 0:f8ee2a5e377a | 75 | signed char sib2MSB, sib2LSB; |
mk | 0:f8ee2a5e377a | 76 | signed char sic12MSB, sic12LSB; |
mk | 0:f8ee2a5e377a | 77 | signed char sic11MSB, sic11LSB; |
mk | 0:f8ee2a5e377a | 78 | signed char sic22MSB, sic22LSB; |
mk | 0:f8ee2a5e377a | 79 | signed int sia0, sib1, sib2, sic12, sic11, sic22, siPcomp; |
mk | 0:f8ee2a5e377a | 80 | float decPcomp; |
mk | 0:f8ee2a5e377a | 81 | signed long lt1, lt2, lt3, si_c11x1, si_a11, si_c12x2; |
mk | 0:f8ee2a5e377a | 82 | signed long si_a1, si_c22x2, si_a2, si_a1x1, si_y1, si_a2x2; |
mk | 0:f8ee2a5e377a | 83 | unsigned int uiPadc, uiTadc; |
mk | 0:f8ee2a5e377a | 84 | unsigned char uiPH, uiPL, uiTH, uiTL; |
mk | 0:f8ee2a5e377a | 85 | }; |
mk | 0:f8ee2a5e377a | 86 | |
mk | 0:f8ee2a5e377a | 87 | #endif |