Driver for HP20X sensor
Dependents: 8-0_OneNet_IoT_demo
driver_mbed_HP20x.h
- Committer:
- TaylorGy
- Date:
- 2017-03-29
- Revision:
- 0:2ee0bc82e7b8
File content as of revision 0:2ee0bc82e7b8:
/* * File name : HP20x_dev.h * Description: Driver for I2C PRECISION BAROMETER AND ALTIMETER [HP206C] * Author : Oliver Wang from Seeed studio * Version : V0.1 * Create Time: 2014/04 * Change Log : */ #ifndef _HP20X_DEV_H #define _HP20X_DEV_H /****************************************************************************/ /*** Including Files ***/ /****************************************************************************/ // #include <Wire.h> // #include <Arduino.h> #include "mbed.h" /****************************************************************************/ /*** Macro Definitions ***/ /****************************************************************************/ typedef unsigned int uint; typedef unsigned char uchar; typedef unsigned long ulong; // #define HP20X_I2C_DEV_ID (0xEC)>>1 //CSB PIN is VDD level(address is 0x76) // #define HP20X_I2C_DEV_ID2 (0XEE)>>1 //CSB PIN is GND level(address is 0x77) const int HP20X_I2C_DEV_ID = 0xEC; const int HP20X_I2C_DEV_ID2 = 0xEE; #define HP20X_SOFT_RST 0x06 #define HP20X_WR_CONVERT_CMD 0x40 #define HP20X_CONVERT_OSR4096 0<<2 #define HP20X_CONVERT_OSR2048 1<<2 #define HP20X_CONVERT_OSR1024 2<<2 #define HP20X_CONVERT_OSR512 3<<2 #define HP20X_CONVERT_OSR256 4<<2 #define HP20X_CONVERT_OSR128 5<<2 #define HP20X_READ_P 0x30 //read_p command #define HP20X_READ_A 0x31 //read_a command #define HP20X_READ_T 0x32 //read_t command #define HP20X_READ_PT 0x10 //read_pt command #define HP20X_READ_AT 0x11 //read_at command #define HP20X_READ_CAL 0X28 //RE-CAL ANALOG #define HP20X_WR_REG_MODE 0xC0 #define HP20X_RD_REG_MODE 0x80 #define ERR_WR_DEVID_NACK 0x01 #define ERR_RD_DEVID_NACK 0x02 #define ERR_WR_REGADD_NACK 0x04 #define ERR_WR_REGCMD_NACK 0x08 #define ERR_WR_DATA_NACK 0x10 #define ERR_RD_DATA_MISMATCH 0x20 #define I2C_DID_WR_MASK 0xFE #define I2C_DID_RD_MASK 0x01 #define T_WIN_EN 0X01 #define PA_WIN_EN 0X02 #define T_TRAV_EN 0X04 #define PA_TRAV_EN 0X08 #define PA_RDY_EN 0X20 #define T_RDY_EN 0X10 #define T_WIN_CFG 0X01 #define PA_WIN_CFG 0X02 #define PA_MODE_P 0X00 #define PA_MODE_A 0X40 #define T_TRAV_CFG 0X04 #define OK_HP20X_DEV 0X80 //HP20x_dev successfully initialized #define REG_PARA 0X0F //Status register /****************************************************************************/ /*** Class Definitions ***/ /****************************************************************************/ class HP20x_dev { /* Public variables and functions */ public: uchar OSR_CFG; uint OSR_ConvertTime; /* Constructor */ HP20x_dev(); void begin(); uchar isAvailable(); /* Read sensor data */ ulong ReadTemperature(void); ulong ReadPressure(void); ulong ReadAltitude(void); /* Private variables and functions */ private: /* Write a command to HP20x */ void HP20X_IIC_WriteCmd(uchar uCmd); /* Read register value */ uchar HP20X_IIC_ReadReg(uchar bReg); void HP20X_IIC_WriteReg(uchar bReg,uchar bData); ulong HP20X_IIC_ReadData(void); ulong HP20X_IIC_ReadData3byte(void); }; extern HP20x_dev HP20x; #endif