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