GSMA version

Dependencies:   FXOS8700CQ mbed sfh7779

Fork of StarterKit by Rick McConney

Committer:
stefanrousseau
Date:
Tue Jul 12 03:11:05 2016 +0000
Revision:
11:e6602513730f
Parent:
0:9d5134074d84
Child:
28:886833917643
Fixed I2C issues.  ; a) Removed stop between HTS221 address and read; b) The latest MBED uses the slave address differently from the legacy.  Stick with the old for now and fixed the HTS221 address to BF instead of 5F.; c) Made I2C definitions externs.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 0:9d5134074d84 1
JMF 0:9d5134074d84 2 #ifndef HTS221_H_
JMF 0:9d5134074d84 3 #define HTS221_H_
JMF 0:9d5134074d84 4
JMF 0:9d5134074d84 5 class HTS221 {
JMF 0:9d5134074d84 6 public:
JMF 0:9d5134074d84 7 HTS221(void);
JMF 0:9d5134074d84 8 int begin(void);
JMF 0:9d5134074d84 9 int activate(void);
JMF 0:9d5134074d84 10 int deactivate(void);
JMF 0:9d5134074d84 11
JMF 0:9d5134074d84 12 int bduActivate(void);
JMF 0:9d5134074d84 13 int bduDeactivate(void);
JMF 0:9d5134074d84 14
JMF 0:9d5134074d84 15 int readHumidity(void);
JMF 0:9d5134074d84 16 double readTemperature(void);
JMF 0:9d5134074d84 17 private:
JMF 0:9d5134074d84 18 int storeCalibration(void);
JMF 0:9d5134074d84 19 unsigned char _h0_rH, _h1_rH;
JMF 0:9d5134074d84 20 unsigned int _T0_degC, _T1_degC;
JMF 0:9d5134074d84 21 unsigned int _H0_T0, _H1_T0;
JMF 0:9d5134074d84 22 unsigned int _T0_OUT, _T1_OUT;
JMF 0:9d5134074d84 23 double _temperature;
JMF 0:9d5134074d84 24 int _humidity;
JMF 0:9d5134074d84 25 unsigned char _address;
JMF 0:9d5134074d84 26
JMF 0:9d5134074d84 27 unsigned char readRegister(unsigned char slaveAddress, unsigned char regToRead);
JMF 0:9d5134074d84 28 int writeRegister(unsigned char slaveAddress, unsigned char regToWrite, unsigned char dataToWrite);
JMF 0:9d5134074d84 29 };
JMF 0:9d5134074d84 30
stefanrousseau 11:e6602513730f 31 //#define HTS221_ADDRESS 0x5F
stefanrousseau 11:e6602513730f 32 //By Stefan
stefanrousseau 11:e6602513730f 33 #define HTS221_ADDRESS 0xBF
JMF 0:9d5134074d84 34
JMF 0:9d5134074d84 35 //Define a few of the registers that we will be accessing on the HTS221
JMF 0:9d5134074d84 36 #define WHO_AM_I 0x0F
JMF 0:9d5134074d84 37 #define WHO_AM_I_RETURN 0xBC //This read-only register contains the device identifier, set to BCh
JMF 0:9d5134074d84 38
JMF 0:9d5134074d84 39 #define AVERAGE_REG 0x10 // To configure humidity/temperature average.
JMF 0:9d5134074d84 40 #define AVERAGE_DEFAULT 0x1B
JMF 0:9d5134074d84 41
JMF 0:9d5134074d84 42 /*
JMF 0:9d5134074d84 43 * [7] PD: power down control
JMF 0:9d5134074d84 44 * (0: power-down mode; 1: active mode)
JMF 0:9d5134074d84 45 *
JMF 0:9d5134074d84 46 * [6:3] Reserved
JMF 0:9d5134074d84 47 *
JMF 0:9d5134074d84 48 * [2] BDU: block data update
JMF 0:9d5134074d84 49 * (0: continuous update; 1: output registers not updated until MSB and LSB reading)
JMF 0:9d5134074d84 50 The BDU bit is used to inhibit the output register update between the reading of the upper
JMF 0:9d5134074d84 51 and lower register parts. In default mode (BDU = ?0?), the lower and upper register parts are
JMF 0:9d5134074d84 52 updated continuously. If it is not certain whether the read will be faster than output data rate,
JMF 0:9d5134074d84 53 it is recommended to set the BDU bit to ?1?. In this way, after the reading of the lower (upper)
JMF 0:9d5134074d84 54 register part, the content of that output register is not updated until the upper (lower) part is
JMF 0:9d5134074d84 55 read also.
JMF 0:9d5134074d84 56 *
JMF 0:9d5134074d84 57 * [1:0] ODR1, ODR0: output data rate selection (see table 17)
JMF 0:9d5134074d84 58 */
JMF 0:9d5134074d84 59 #define CTRL_REG1 0x20
JMF 0:9d5134074d84 60 #define POWER_UP 0x80
JMF 0:9d5134074d84 61 #define BDU_SET 0x4
JMF 0:9d5134074d84 62 #define ODR0_SET 0x1 // setting sensor reading period 1Hz
JMF 0:9d5134074d84 63
JMF 0:9d5134074d84 64 #define CTRL_REG2 0x21
JMF 0:9d5134074d84 65 #define CTRL_REG3 0x22
JMF 0:9d5134074d84 66 #define REG_DEFAULT 0x00
JMF 0:9d5134074d84 67
JMF 0:9d5134074d84 68 #define STATUS_REG 0x27
JMF 0:9d5134074d84 69 #define TEMPERATURE_READY 0x1
JMF 0:9d5134074d84 70 #define HUMIDITY_READY 0x2
JMF 0:9d5134074d84 71
JMF 0:9d5134074d84 72 #define HUMIDITY_L_REG 0x28
JMF 0:9d5134074d84 73 #define HUMIDITY_H_REG 0x29
JMF 0:9d5134074d84 74 #define TEMP_L_REG 0x2A
JMF 0:9d5134074d84 75 #define TEMP_H_REG 0x2B
JMF 0:9d5134074d84 76 /*
JMF 0:9d5134074d84 77 * calibration registry should be read for temperature and humidity calculation.
JMF 0:9d5134074d84 78 * Before the first calculation of temperature and humidity,
JMF 0:9d5134074d84 79 * the master reads out the calibration coefficients.
JMF 0:9d5134074d84 80 * will do at init phase
JMF 0:9d5134074d84 81 */
JMF 0:9d5134074d84 82 #define CALIB_START 0x30
JMF 0:9d5134074d84 83 #define CALIB_END 0x3F
JMF 0:9d5134074d84 84 /*
JMF 0:9d5134074d84 85 #define CALIB_T0_DEGC_X8 0x32
JMF 0:9d5134074d84 86 #define CALIB_T1_DEGC_X8 0x33
JMF 0:9d5134074d84 87 #define CALIB_T1_T0_MSB 0x35
JMF 0:9d5134074d84 88 #define CALIB_T0_OUT_L 0x3C
JMF 0:9d5134074d84 89 #define CALIB_T0_OUT_H 0x3D
JMF 0:9d5134074d84 90 #define CALIB_T1_OUT_L 0x3E
JMF 0:9d5134074d84 91 #define CALIB_T1_OUT_H 0x3F
JMF 0:9d5134074d84 92 */
JMF 0:9d5134074d84 93
JMF 0:9d5134074d84 94 #endif