Port of the SHT2x example code from Sensirion

Dependents:   sht21_test ENVLogger

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