SCP1000 Library

Dependents:   SCP1000Example 0sample_SCP1000_USB SCP1000_Fastsensing

Committer:
yamaguch
Date:
Tue Feb 08 07:26:42 2011 +0000
Revision:
3:8edd2b18c755
Parent:
2:4c2784b363ad
0.94

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yamaguch 0:23fab9b42ad4 1 #ifndef SCP1000_H
yamaguch 0:23fab9b42ad4 2 #define SCP1000_H
yamaguch 0:23fab9b42ad4 3
yamaguch 0:23fab9b42ad4 4 #include "mbed.h"
yamaguch 0:23fab9b42ad4 5
yamaguch 0:23fab9b42ad4 6 /**
yamaguch 3:8edd2b18c755 7 * SCP1000 pressure/temperature sensor
yamaguch 0:23fab9b42ad4 8 */
yamaguch 2:4c2784b363ad 9
yamaguch 0:23fab9b42ad4 10 class SCP1000 {
yamaguch 0:23fab9b42ad4 11 public:
yamaguch 2:4c2784b363ad 12 enum OperationMode {
yamaguch 2:4c2784b363ad 13 CANCEL = 0x00,
yamaguch 2:4c2784b363ad 14 HIGH_SPEED_MODE = 0x09,
yamaguch 2:4c2784b363ad 15 HIGH_RESOLUTION_MODE = 0x0A,
yamaguch 2:4c2784b363ad 16 ULTRA_LOW_POWER_MODE = 0x0B,
yamaguch 2:4c2784b363ad 17 LOW_POWER = 0x0C,
yamaguch 2:4c2784b363ad 18 SELF_TEST = 0x0F,
yamaguch 2:4c2784b363ad 19 };
yamaguch 2:4c2784b363ad 20
yamaguch 0:23fab9b42ad4 21 /**
yamaguch 3:8edd2b18c755 22 * creates an SCP1000 interface with specified pins
yamaguch 0:23fab9b42ad4 23 *
yamaguch 0:23fab9b42ad4 24 * @param PinName mosi SPI MOSI pin
yamaguch 0:23fab9b42ad4 25 * @param PinName miso SPI MISO pin
yamaguch 0:23fab9b42ad4 26 * @param PinName sclk SPI SCLK pin
yamaguch 0:23fab9b42ad4 27 * @param PinName cs SPI CS pin
yamaguch 0:23fab9b42ad4 28 * @param OperationMode mode Initial operation mode
yamaguch 0:23fab9b42ad4 29 */
yamaguch 0:23fab9b42ad4 30 SCP1000(PinName mosi, PinName miso, PinName sclk, PinName cs, OperationMode mode = HIGH_RESOLUTION_MODE);
yamaguch 0:23fab9b42ad4 31
yamaguch 0:23fab9b42ad4 32 ~SCP1000() {};
yamaguch 0:23fab9b42ad4 33
yamaguch 0:23fab9b42ad4 34 /**
yamaguch 3:8edd2b18c755 35 * reads revision number
yamaguch 0:23fab9b42ad4 36 *
yamaguch 0:23fab9b42ad4 37 * @returns revision number
yamaguch 0:23fab9b42ad4 38 */
yamaguch 0:23fab9b42ad4 39 int revision();
yamaguch 0:23fab9b42ad4 40
yamaguch 0:23fab9b42ad4 41 /**
yamaguch 3:8edd2b18c755 42 * checks if data is ready
yamaguch 0:23fab9b42ad4 43 *
yamaguch 3:8edd2b18c755 44 * @returns true if data is ready, false otherwise
yamaguch 0:23fab9b42ad4 45 */
yamaguch 0:23fab9b42ad4 46 bool isReady();
yamaguch 0:23fab9b42ad4 47
yamaguch 0:23fab9b42ad4 48 /**
yamaguch 3:8edd2b18c755 49 * performs software reset
yamaguch 0:23fab9b42ad4 50 */
yamaguch 0:23fab9b42ad4 51 void reset();
yamaguch 0:23fab9b42ad4 52
yamaguch 0:23fab9b42ad4 53 /**
yamaguch 3:8edd2b18c755 54 * sets operation mode
yamaguch 0:23fab9b42ad4 55 */
yamaguch 0:23fab9b42ad4 56 void setOperationMode(OperationMode mode);
yamaguch 0:23fab9b42ad4 57
yamaguch 0:23fab9b42ad4 58 /**
yamaguch 3:8edd2b18c755 59 * Performs self test
yamaguch 0:23fab9b42ad4 60 *
yamaguch 3:8edd2b18c755 61 * @returns the result of the test (true if succeeded, false otherwise)
yamaguch 0:23fab9b42ad4 62 */
yamaguch 0:23fab9b42ad4 63 bool performSelfTest();
yamaguch 0:23fab9b42ad4 64
yamaguch 0:23fab9b42ad4 65 /**
yamaguch 3:8edd2b18c755 66 * reads pressure
yamaguch 2:4c2784b363ad 67 *
yamaguch 3:8edd2b18c755 68 * @param waitForDataReady if true, it will wait until data becomes ready to read
yamaguch 2:4c2784b363ad 69 *
yamaguch 3:8edd2b18c755 70 * @returns pressure in hectopascal
yamaguch 0:23fab9b42ad4 71 */
yamaguch 0:23fab9b42ad4 72 float readPressure(bool waitForDataReady = false);
yamaguch 0:23fab9b42ad4 73
yamaguch 0:23fab9b42ad4 74 /**
yamaguch 3:8edd2b18c755 75 * reads temperature
yamaguch 0:23fab9b42ad4 76 *
yamaguch 3:8edd2b18c755 77 * @param waitForDataReady if true, it will wait until data becomes ready to read
yamaguch 0:23fab9b42ad4 78 *
yamaguch 3:8edd2b18c755 79 * @returns temperature in Celsius
yamaguch 0:23fab9b42ad4 80 */
yamaguch 0:23fab9b42ad4 81 float readTemperature(bool waitForDataReady = false);
yamaguch 0:23fab9b42ad4 82
yamaguch 0:23fab9b42ad4 83 private:
yamaguch 0:23fab9b42ad4 84 enum RegisterName {
yamaguch 0:23fab9b42ad4 85 REVID = 0x00, // ASIC revision number
yamaguch 0:23fab9b42ad4 86 OPERATION = 0x03, // Operation register
yamaguch 0:23fab9b42ad4 87 OPSTATUS = 0x04, // Operation status
yamaguch 0:23fab9b42ad4 88 RSTR = 0x06, // ASIC software reset
yamaguch 0:23fab9b42ad4 89 STATUS = 0x07, // ASIC top-level status
yamaguch 0:23fab9b42ad4 90 DATARD8 = 0x1F, // Pressure output data (MSB)
yamaguch 0:23fab9b42ad4 91 DATARD16 = 0x20, // Pressure output data (LSB, 16 bits)
yamaguch 0:23fab9b42ad4 92 TEMPOUT = 0x21, // Temperature output data (16 bits)
yamaguch 0:23fab9b42ad4 93 };
yamaguch 0:23fab9b42ad4 94
yamaguch 0:23fab9b42ad4 95 enum Command {
yamaguch 0:23fab9b42ad4 96 READ = 0x00, // SCP1000 READ command
yamaguch 0:23fab9b42ad4 97 WRITE = 0x02, // SCP1000 WRITE command
yamaguch 0:23fab9b42ad4 98 };
yamaguch 0:23fab9b42ad4 99
yamaguch 0:23fab9b42ad4 100 SPI spi;
yamaguch 0:23fab9b42ad4 101 DigitalOut selectPin;
yamaguch 0:23fab9b42ad4 102
yamaguch 0:23fab9b42ad4 103 int readRegister(RegisterName registerName, bool twoBytes = 0);
yamaguch 0:23fab9b42ad4 104 void writeRegister(RegisterName registerName, char value);
yamaguch 0:23fab9b42ad4 105 };
yamaguch 0:23fab9b42ad4 106
yamaguch 0:23fab9b42ad4 107 #endif