SCP1000 Library

Dependents:   SCP1000Example 0sample_SCP1000_USB SCP1000_Fastsensing

Committer:
yamaguch
Date:
Fri Feb 04 11:56:49 2011 +0000
Revision:
2:4c2784b363ad
Parent:
0:23fab9b42ad4
Child:
3:8edd2b18c755
0.92

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