Port of the SHT2x example code from Sensirion
Dependents: sht21_test ENVLogger
Diff: SHT2x.h
- Revision:
- 0:74df6ab91c79
- Child:
- 1:d0f691423bf1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SHT2x.h Sat Apr 23 14:08:11 2011 +0000 @@ -0,0 +1,89 @@ +#include "mbed.h" + +#ifndef SHT2x_H +#define SHT2x_H +//============================================================================== +// S E N S I R I O N AG, Laubisruetistr. 50, CH-8712 Staefa, Switzerland +//============================================================================== +// Project : SHT2x Sample Code (V1.2) +// File : SHT2x.h +// Author : MST +// Controller: NEC V850/SG3 (uPD70F3740) +// Compiler : IAR compiler for V850 (3.50A) +// Brief : Sensor layer. Definitions of commands and registers, +// functions for sensor access +//============================================================================== +// CRC + +const int POLYNOMIAL = 0x131; //P(x)=x^8+x^5+x^4+1 = 100110001 +// sensor command +enum etSHT2xCommand { + TRIG_T_MEASUREMENT_HM = 0xE3, // command trig. temp meas. hold master + TRIG_RH_MEASUREMENT_HM = 0xE5, // command trig. humidity meas. hold master + TRIG_T_MEASUREMENT_POLL = 0xF3, // command trig. temp meas. no hold master + TRIG_RH_MEASUREMENT_POLL = 0xF5, // command trig. humidity meas. no hold master + USER_REG_W = 0xE6, // command writing user register + USER_REG_R = 0xE7, // command reading user register + SOFT_RESET = 0xFE // command soft reset +}; + +enum etSHT2xResolution { + SHT2x_RES_12_14BIT = 0x00, // RH=12bit, T=14bit + SHT2x_RES_8_12BIT = 0x01, // RH= 8bit, T=12bit + SHT2x_RES_10_13BIT = 0x80, // RH=10bit, T=13bit + SHT2x_RES_11_11BIT = 0x81, // RH=11bit, T=11bit + SHT2x_RES_MASK = 0x81 // Mask for res. bits (7,0) in user reg. +}; + +enum etSHT2xEob { + SHT2x_EOB_ON = 0x40, // end of battery + SHT2x_EOB_MASK = 0x40, // Mask for EOB bit(6) in user reg. +}; + +enum etSHT2xHeater { + SHT2x_HEATER_ON = 0x04, // heater on + SHT2x_HEATER_OFF = 0x00, // heater off + SHT2x_HEATER_MASK = 0x04, // Mask for Heater bit(2) in user reg. +}; +// measurement signal selection + +enum etSHT2xMeasureType { + HUMIDITY, + TEMP +}; + +enum etI2cHeader { + I2C_ADR_W = 128, // sensor I2C address + write bit + I2C_ADR_R = 129 // sensor I2C address + read bit +}; + +// Error codes +enum etError { + ACK_ERROR = 0x01, + TIME_OUT_ERROR = 0x02, + CHECKSUM_ERROR = 0x04, + UNIT_ERROR = 0x08 +}; + +class SHT2x : public Base { +public: + SHT2x (PinName p_sda, PinName p_scl); + SHT2x (I2C& p_i2c); + + int SHT2x_CheckCrc(int data[], int nbrOfBytes, int checksum); + int SHT2x_ReadUserRegister(int *pRegisterValue); + int SHT2x_WriteUserRegister(int *pRegisterValue); + int SHT2x_MeasurePoll(etSHT2xMeasureType eSHT2xMeasureType, int *pMeasurand); + int SHT2x_MeasureHM(etSHT2xMeasureType eSHT2xMeasureType, int *pMeasurand); + int SHT2x_SoftReset(); + float SHT2x_CalcRH(int u16sRH); + float SHT2x_CalcTemperatureC(int u16sT); + int SHT2x_GetSerialNumber(int u8SerialNumber[]); + +protected: + I2C i2c; + +private: + +}; +#endif \ No newline at end of file