Port of the SHT2x example code from Sensirion
Dependents: sht21_test ENVLogger
SHT2x.h@0:74df6ab91c79, 2011-04-23 (annotated)
- Committer:
- ssozonoff
- Date:
- Sat Apr 23 14:08:11 2011 +0000
- Revision:
- 0:74df6ab91c79
- Child:
- 1:d0f691423bf1
Alpha
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ssozonoff | 0:74df6ab91c79 | 1 | #include "mbed.h" |
ssozonoff | 0:74df6ab91c79 | 2 | |
ssozonoff | 0:74df6ab91c79 | 3 | #ifndef SHT2x_H |
ssozonoff | 0:74df6ab91c79 | 4 | #define SHT2x_H |
ssozonoff | 0:74df6ab91c79 | 5 | //============================================================================== |
ssozonoff | 0:74df6ab91c79 | 6 | // S E N S I R I O N AG, Laubisruetistr. 50, CH-8712 Staefa, Switzerland |
ssozonoff | 0:74df6ab91c79 | 7 | //============================================================================== |
ssozonoff | 0:74df6ab91c79 | 8 | // Project : SHT2x Sample Code (V1.2) |
ssozonoff | 0:74df6ab91c79 | 9 | // File : SHT2x.h |
ssozonoff | 0:74df6ab91c79 | 10 | // Author : MST |
ssozonoff | 0:74df6ab91c79 | 11 | // Controller: NEC V850/SG3 (uPD70F3740) |
ssozonoff | 0:74df6ab91c79 | 12 | // Compiler : IAR compiler for V850 (3.50A) |
ssozonoff | 0:74df6ab91c79 | 13 | // Brief : Sensor layer. Definitions of commands and registers, |
ssozonoff | 0:74df6ab91c79 | 14 | // functions for sensor access |
ssozonoff | 0:74df6ab91c79 | 15 | //============================================================================== |
ssozonoff | 0:74df6ab91c79 | 16 | // CRC |
ssozonoff | 0:74df6ab91c79 | 17 | |
ssozonoff | 0:74df6ab91c79 | 18 | const int POLYNOMIAL = 0x131; //P(x)=x^8+x^5+x^4+1 = 100110001 |
ssozonoff | 0:74df6ab91c79 | 19 | // sensor command |
ssozonoff | 0:74df6ab91c79 | 20 | enum etSHT2xCommand { |
ssozonoff | 0:74df6ab91c79 | 21 | TRIG_T_MEASUREMENT_HM = 0xE3, // command trig. temp meas. hold master |
ssozonoff | 0:74df6ab91c79 | 22 | TRIG_RH_MEASUREMENT_HM = 0xE5, // command trig. humidity meas. hold master |
ssozonoff | 0:74df6ab91c79 | 23 | TRIG_T_MEASUREMENT_POLL = 0xF3, // command trig. temp meas. no hold master |
ssozonoff | 0:74df6ab91c79 | 24 | TRIG_RH_MEASUREMENT_POLL = 0xF5, // command trig. humidity meas. no hold master |
ssozonoff | 0:74df6ab91c79 | 25 | USER_REG_W = 0xE6, // command writing user register |
ssozonoff | 0:74df6ab91c79 | 26 | USER_REG_R = 0xE7, // command reading user register |
ssozonoff | 0:74df6ab91c79 | 27 | SOFT_RESET = 0xFE // command soft reset |
ssozonoff | 0:74df6ab91c79 | 28 | }; |
ssozonoff | 0:74df6ab91c79 | 29 | |
ssozonoff | 0:74df6ab91c79 | 30 | enum etSHT2xResolution { |
ssozonoff | 0:74df6ab91c79 | 31 | SHT2x_RES_12_14BIT = 0x00, // RH=12bit, T=14bit |
ssozonoff | 0:74df6ab91c79 | 32 | SHT2x_RES_8_12BIT = 0x01, // RH= 8bit, T=12bit |
ssozonoff | 0:74df6ab91c79 | 33 | SHT2x_RES_10_13BIT = 0x80, // RH=10bit, T=13bit |
ssozonoff | 0:74df6ab91c79 | 34 | SHT2x_RES_11_11BIT = 0x81, // RH=11bit, T=11bit |
ssozonoff | 0:74df6ab91c79 | 35 | SHT2x_RES_MASK = 0x81 // Mask for res. bits (7,0) in user reg. |
ssozonoff | 0:74df6ab91c79 | 36 | }; |
ssozonoff | 0:74df6ab91c79 | 37 | |
ssozonoff | 0:74df6ab91c79 | 38 | enum etSHT2xEob { |
ssozonoff | 0:74df6ab91c79 | 39 | SHT2x_EOB_ON = 0x40, // end of battery |
ssozonoff | 0:74df6ab91c79 | 40 | SHT2x_EOB_MASK = 0x40, // Mask for EOB bit(6) in user reg. |
ssozonoff | 0:74df6ab91c79 | 41 | }; |
ssozonoff | 0:74df6ab91c79 | 42 | |
ssozonoff | 0:74df6ab91c79 | 43 | enum etSHT2xHeater { |
ssozonoff | 0:74df6ab91c79 | 44 | SHT2x_HEATER_ON = 0x04, // heater on |
ssozonoff | 0:74df6ab91c79 | 45 | SHT2x_HEATER_OFF = 0x00, // heater off |
ssozonoff | 0:74df6ab91c79 | 46 | SHT2x_HEATER_MASK = 0x04, // Mask for Heater bit(2) in user reg. |
ssozonoff | 0:74df6ab91c79 | 47 | }; |
ssozonoff | 0:74df6ab91c79 | 48 | // measurement signal selection |
ssozonoff | 0:74df6ab91c79 | 49 | |
ssozonoff | 0:74df6ab91c79 | 50 | enum etSHT2xMeasureType { |
ssozonoff | 0:74df6ab91c79 | 51 | HUMIDITY, |
ssozonoff | 0:74df6ab91c79 | 52 | TEMP |
ssozonoff | 0:74df6ab91c79 | 53 | }; |
ssozonoff | 0:74df6ab91c79 | 54 | |
ssozonoff | 0:74df6ab91c79 | 55 | enum etI2cHeader { |
ssozonoff | 0:74df6ab91c79 | 56 | I2C_ADR_W = 128, // sensor I2C address + write bit |
ssozonoff | 0:74df6ab91c79 | 57 | I2C_ADR_R = 129 // sensor I2C address + read bit |
ssozonoff | 0:74df6ab91c79 | 58 | }; |
ssozonoff | 0:74df6ab91c79 | 59 | |
ssozonoff | 0:74df6ab91c79 | 60 | // Error codes |
ssozonoff | 0:74df6ab91c79 | 61 | enum etError { |
ssozonoff | 0:74df6ab91c79 | 62 | ACK_ERROR = 0x01, |
ssozonoff | 0:74df6ab91c79 | 63 | TIME_OUT_ERROR = 0x02, |
ssozonoff | 0:74df6ab91c79 | 64 | CHECKSUM_ERROR = 0x04, |
ssozonoff | 0:74df6ab91c79 | 65 | UNIT_ERROR = 0x08 |
ssozonoff | 0:74df6ab91c79 | 66 | }; |
ssozonoff | 0:74df6ab91c79 | 67 | |
ssozonoff | 0:74df6ab91c79 | 68 | class SHT2x : public Base { |
ssozonoff | 0:74df6ab91c79 | 69 | public: |
ssozonoff | 0:74df6ab91c79 | 70 | SHT2x (PinName p_sda, PinName p_scl); |
ssozonoff | 0:74df6ab91c79 | 71 | SHT2x (I2C& p_i2c); |
ssozonoff | 0:74df6ab91c79 | 72 | |
ssozonoff | 0:74df6ab91c79 | 73 | int SHT2x_CheckCrc(int data[], int nbrOfBytes, int checksum); |
ssozonoff | 0:74df6ab91c79 | 74 | int SHT2x_ReadUserRegister(int *pRegisterValue); |
ssozonoff | 0:74df6ab91c79 | 75 | int SHT2x_WriteUserRegister(int *pRegisterValue); |
ssozonoff | 0:74df6ab91c79 | 76 | int SHT2x_MeasurePoll(etSHT2xMeasureType eSHT2xMeasureType, int *pMeasurand); |
ssozonoff | 0:74df6ab91c79 | 77 | int SHT2x_MeasureHM(etSHT2xMeasureType eSHT2xMeasureType, int *pMeasurand); |
ssozonoff | 0:74df6ab91c79 | 78 | int SHT2x_SoftReset(); |
ssozonoff | 0:74df6ab91c79 | 79 | float SHT2x_CalcRH(int u16sRH); |
ssozonoff | 0:74df6ab91c79 | 80 | float SHT2x_CalcTemperatureC(int u16sT); |
ssozonoff | 0:74df6ab91c79 | 81 | int SHT2x_GetSerialNumber(int u8SerialNumber[]); |
ssozonoff | 0:74df6ab91c79 | 82 | |
ssozonoff | 0:74df6ab91c79 | 83 | protected: |
ssozonoff | 0:74df6ab91c79 | 84 | I2C i2c; |
ssozonoff | 0:74df6ab91c79 | 85 | |
ssozonoff | 0:74df6ab91c79 | 86 | private: |
ssozonoff | 0:74df6ab91c79 | 87 | |
ssozonoff | 0:74df6ab91c79 | 88 | }; |
ssozonoff | 0:74df6ab91c79 | 89 | #endif |