Sergii Doroshenko / MS5611_01BA03
Committer:
eseerge
Date:
Thu Jan 03 17:12:03 2013 +0000
Revision:
0:4343d7e75385
Initial revision for ms5611_01ba03 baro

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eseerge 0:4343d7e75385 1 /**
eseerge 0:4343d7e75385 2 * @author Sergii Doroshenko
eseerge 0:4343d7e75385 3 *
eseerge 0:4343d7e75385 4 * @section LICENSE
eseerge 0:4343d7e75385 5 *
eseerge 0:4343d7e75385 6 * Copyright (c) 2010 ARM Limited
eseerge 0:4343d7e75385 7 *
eseerge 0:4343d7e75385 8 * Permission is hereby granted, free of charge, to any person obtaining a copy
eseerge 0:4343d7e75385 9 * of this software and associated documentation files (the "Software"), to deal
eseerge 0:4343d7e75385 10 * in the Software without restriction, including without limitation the rights
eseerge 0:4343d7e75385 11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
eseerge 0:4343d7e75385 12 * copies of the Software, and to permit persons to whom the Software is
eseerge 0:4343d7e75385 13 * furnished to do so, subject to the following conditions:
eseerge 0:4343d7e75385 14 *
eseerge 0:4343d7e75385 15 * The above copyright notice and this permission notice shall be included in
eseerge 0:4343d7e75385 16 * all copies or substantial portions of the Software.
eseerge 0:4343d7e75385 17 *
eseerge 0:4343d7e75385 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
eseerge 0:4343d7e75385 19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
eseerge 0:4343d7e75385 20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
eseerge 0:4343d7e75385 21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
eseerge 0:4343d7e75385 22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
eseerge 0:4343d7e75385 23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
eseerge 0:4343d7e75385 24 * THE SOFTWARE.
eseerge 0:4343d7e75385 25 *
eseerge 0:4343d7e75385 26 * @section DESCRIPTION
eseerge 0:4343d7e75385 27 *
eseerge 0:4343d7e75385 28 * MS5611_01BA03 Barometric Pressure Sensor, Variometer.
eseerge 0:4343d7e75385 29 *
eseerge 0:4343d7e75385 30 * Datasheet:
eseerge 0:4343d7e75385 31 *
eseerge 0:4343d7e75385 32 * http://www.meas-spec.com/downloads/MS5611-01BA03.pdf
eseerge 0:4343d7e75385 33 */
eseerge 0:4343d7e75385 34
eseerge 0:4343d7e75385 35 #ifndef MS5611_01BA03_SPI_H
eseerge 0:4343d7e75385 36 #define MS5611_01BA03_SPI_H
eseerge 0:4343d7e75385 37
eseerge 0:4343d7e75385 38 /**
eseerge 0:4343d7e75385 39 * Includes
eseerge 0:4343d7e75385 40 */
eseerge 0:4343d7e75385 41 #include "mbed.h"
eseerge 0:4343d7e75385 42
eseerge 0:4343d7e75385 43 /**
eseerge 0:4343d7e75385 44 * Defines
eseerge 0:4343d7e75385 45 */
eseerge 0:4343d7e75385 46 #define ENABLE_BARO *cs_ = 0
eseerge 0:4343d7e75385 47 #define DISABLE_BARO *cs_ = 1
eseerge 0:4343d7e75385 48
eseerge 0:4343d7e75385 49 /**
eseerge 0:4343d7e75385 50 * Registers
eseerge 0:4343d7e75385 51 */
eseerge 0:4343d7e75385 52 #define MS561101BA_PRESSURE 0x40
eseerge 0:4343d7e75385 53 #define MS561101BA_TEMPERATURE 0x50
eseerge 0:4343d7e75385 54 #define MS561101BA_RESET 0x1E
eseerge 0:4343d7e75385 55
eseerge 0:4343d7e75385 56 /**
eseerge 0:4343d7e75385 57 * OSR (Over Sampling Ratio) constants
eseerge 0:4343d7e75385 58 */
eseerge 0:4343d7e75385 59 #define MS561101BA_OSR_256 0x00
eseerge 0:4343d7e75385 60 #define MS561101BA_OSR_512 0x02
eseerge 0:4343d7e75385 61 #define MS561101BA_OSR_1024 0x04
eseerge 0:4343d7e75385 62 #define MS561101BA_OSR_2048 0x06
eseerge 0:4343d7e75385 63 #define MS561101BA_OSR_4096 0x08
eseerge 0:4343d7e75385 64
eseerge 0:4343d7e75385 65 #define OSR MS561101BA_OSR_4096
eseerge 0:4343d7e75385 66
eseerge 0:4343d7e75385 67
eseerge 0:4343d7e75385 68
eseerge 0:4343d7e75385 69 class MS5611_01BA03 {
eseerge 0:4343d7e75385 70
eseerge 0:4343d7e75385 71 public:
eseerge 0:4343d7e75385 72
eseerge 0:4343d7e75385 73 /**
eseerge 0:4343d7e75385 74 * Constructor.
eseerge 0:4343d7e75385 75 *
eseerge 0:4343d7e75385 76 * Send reset sequence at first
eseerge 0:4343d7e75385 77 *
eseerge 0:4343d7e75385 78 * @param mosi - mbed pin to use for the MOSI/SDI spi line.
eseerge 0:4343d7e75385 79 * @param miso - mbed pin to use for the MISO/SDO spi line.
eseerge 0:4343d7e75385 80 * @param sclk - mbed pin to use for the SCL/SCLK spi line.
eseerge 0:4343d7e75385 81 * @param cs - mbed pin to use for the CS spi line. (for sensor, not for mbed spi)
eseerge 0:4343d7e75385 82 */
eseerge 0:4343d7e75385 83 MS5611_01BA03(PinName mosi, PinName miso, PinName sclk, PinName cs);
eseerge 0:4343d7e75385 84 ~MS5611_01BA03();
eseerge 0:4343d7e75385 85 bool init();
eseerge 0:4343d7e75385 86 int32_t getPressure();
eseerge 0:4343d7e75385 87 int32_t getAltitude();
eseerge 0:4343d7e75385 88
eseerge 0:4343d7e75385 89 private:
eseerge 0:4343d7e75385 90
eseerge 0:4343d7e75385 91 // sensor registers from the MS561101BA datasheet
eseerge 0:4343d7e75385 92 struct {
eseerge 0:4343d7e75385 93 uint16_t c[8];
eseerge 0:4343d7e75385 94 union {uint32_t val; uint8_t raw[4]; } ut; //uncompensated T
eseerge 0:4343d7e75385 95 union {uint32_t val; uint8_t raw[4]; } up; //uncompensated P
eseerge 0:4343d7e75385 96 uint8_t state;
eseerge 0:4343d7e75385 97 uint32_t deadline;
eseerge 0:4343d7e75385 98 } ms5611_01ba_ctx;
eseerge 0:4343d7e75385 99
eseerge 0:4343d7e75385 100 uint8_t baro_read_reg(char reg);
eseerge 0:4343d7e75385 101 void baro_write_reg(uint8_t reg, uint8_t val);
eseerge 0:4343d7e75385 102
eseerge 0:4343d7e75385 103 void ms5611_01ba_reset();
eseerge 0:4343d7e75385 104 void ms5611_01ba_readCalibration();
eseerge 0:4343d7e75385 105
eseerge 0:4343d7e75385 106
eseerge 0:4343d7e75385 107 void ms5611_01ba_UT_Start();
eseerge 0:4343d7e75385 108 void ms5611_01ba_UT_Read();
eseerge 0:4343d7e75385 109
eseerge 0:4343d7e75385 110 void ms5611_01ba_UP_Start();
eseerge 0:4343d7e75385 111 void ms5611_01ba_UP_Read();
eseerge 0:4343d7e75385 112
eseerge 0:4343d7e75385 113 void ms5611_01ba_Calculate();
eseerge 0:4343d7e75385 114 void ms5611_01ba_Update();
eseerge 0:4343d7e75385 115
eseerge 0:4343d7e75385 116 SPI spi_;
eseerge 0:4343d7e75385 117 DigitalOut * cs_;
eseerge 0:4343d7e75385 118 Timer timer;
eseerge 0:4343d7e75385 119 int32_t pressure;
eseerge 0:4343d7e75385 120 int32_t altitude;
eseerge 0:4343d7e75385 121 };
eseerge 0:4343d7e75385 122
eseerge 0:4343d7e75385 123 #endif // MS5611_01BA03_SPI_H