Driver for HP20X sensor

Dependents:   8-0_OneNet_IoT_demo

Committer:
TaylorGy
Date:
Wed Mar 29 03:09:38 2017 +0000
Revision:
0:2ee0bc82e7b8
driver for HP20x sensor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TaylorGy 0:2ee0bc82e7b8 1 /*
TaylorGy 0:2ee0bc82e7b8 2 * File name : HP20x_dev.h
TaylorGy 0:2ee0bc82e7b8 3 * Description: Driver for I2C PRECISION BAROMETER AND ALTIMETER [HP206C]
TaylorGy 0:2ee0bc82e7b8 4 * Author : Oliver Wang from Seeed studio
TaylorGy 0:2ee0bc82e7b8 5 * Version : V0.1
TaylorGy 0:2ee0bc82e7b8 6 * Create Time: 2014/04
TaylorGy 0:2ee0bc82e7b8 7 * Change Log :
TaylorGy 0:2ee0bc82e7b8 8 */
TaylorGy 0:2ee0bc82e7b8 9 #ifndef _HP20X_DEV_H
TaylorGy 0:2ee0bc82e7b8 10 #define _HP20X_DEV_H
TaylorGy 0:2ee0bc82e7b8 11 /****************************************************************************/
TaylorGy 0:2ee0bc82e7b8 12 /*** Including Files ***/
TaylorGy 0:2ee0bc82e7b8 13 /****************************************************************************/
TaylorGy 0:2ee0bc82e7b8 14 // #include <Wire.h>
TaylorGy 0:2ee0bc82e7b8 15 // #include <Arduino.h>
TaylorGy 0:2ee0bc82e7b8 16 #include "mbed.h"
TaylorGy 0:2ee0bc82e7b8 17 /****************************************************************************/
TaylorGy 0:2ee0bc82e7b8 18 /*** Macro Definitions ***/
TaylorGy 0:2ee0bc82e7b8 19 /****************************************************************************/
TaylorGy 0:2ee0bc82e7b8 20 typedef unsigned int uint;
TaylorGy 0:2ee0bc82e7b8 21 typedef unsigned char uchar;
TaylorGy 0:2ee0bc82e7b8 22 typedef unsigned long ulong;
TaylorGy 0:2ee0bc82e7b8 23
TaylorGy 0:2ee0bc82e7b8 24 // #define HP20X_I2C_DEV_ID (0xEC)>>1 //CSB PIN is VDD level(address is 0x76)
TaylorGy 0:2ee0bc82e7b8 25 // #define HP20X_I2C_DEV_ID2 (0XEE)>>1 //CSB PIN is GND level(address is 0x77)
TaylorGy 0:2ee0bc82e7b8 26
TaylorGy 0:2ee0bc82e7b8 27 const int HP20X_I2C_DEV_ID = 0xEC;
TaylorGy 0:2ee0bc82e7b8 28 const int HP20X_I2C_DEV_ID2 = 0xEE;
TaylorGy 0:2ee0bc82e7b8 29
TaylorGy 0:2ee0bc82e7b8 30 #define HP20X_SOFT_RST 0x06
TaylorGy 0:2ee0bc82e7b8 31 #define HP20X_WR_CONVERT_CMD 0x40
TaylorGy 0:2ee0bc82e7b8 32 #define HP20X_CONVERT_OSR4096 0<<2
TaylorGy 0:2ee0bc82e7b8 33 #define HP20X_CONVERT_OSR2048 1<<2
TaylorGy 0:2ee0bc82e7b8 34 #define HP20X_CONVERT_OSR1024 2<<2
TaylorGy 0:2ee0bc82e7b8 35 #define HP20X_CONVERT_OSR512 3<<2
TaylorGy 0:2ee0bc82e7b8 36 #define HP20X_CONVERT_OSR256 4<<2
TaylorGy 0:2ee0bc82e7b8 37 #define HP20X_CONVERT_OSR128 5<<2
TaylorGy 0:2ee0bc82e7b8 38
TaylorGy 0:2ee0bc82e7b8 39 #define HP20X_READ_P 0x30 //read_p command
TaylorGy 0:2ee0bc82e7b8 40 #define HP20X_READ_A 0x31 //read_a command
TaylorGy 0:2ee0bc82e7b8 41 #define HP20X_READ_T 0x32 //read_t command
TaylorGy 0:2ee0bc82e7b8 42 #define HP20X_READ_PT 0x10 //read_pt command
TaylorGy 0:2ee0bc82e7b8 43 #define HP20X_READ_AT 0x11 //read_at command
TaylorGy 0:2ee0bc82e7b8 44 #define HP20X_READ_CAL 0X28 //RE-CAL ANALOG
TaylorGy 0:2ee0bc82e7b8 45
TaylorGy 0:2ee0bc82e7b8 46 #define HP20X_WR_REG_MODE 0xC0
TaylorGy 0:2ee0bc82e7b8 47 #define HP20X_RD_REG_MODE 0x80
TaylorGy 0:2ee0bc82e7b8 48
TaylorGy 0:2ee0bc82e7b8 49 #define ERR_WR_DEVID_NACK 0x01
TaylorGy 0:2ee0bc82e7b8 50 #define ERR_RD_DEVID_NACK 0x02
TaylorGy 0:2ee0bc82e7b8 51 #define ERR_WR_REGADD_NACK 0x04
TaylorGy 0:2ee0bc82e7b8 52 #define ERR_WR_REGCMD_NACK 0x08
TaylorGy 0:2ee0bc82e7b8 53 #define ERR_WR_DATA_NACK 0x10
TaylorGy 0:2ee0bc82e7b8 54 #define ERR_RD_DATA_MISMATCH 0x20
TaylorGy 0:2ee0bc82e7b8 55
TaylorGy 0:2ee0bc82e7b8 56 #define I2C_DID_WR_MASK 0xFE
TaylorGy 0:2ee0bc82e7b8 57 #define I2C_DID_RD_MASK 0x01
TaylorGy 0:2ee0bc82e7b8 58
TaylorGy 0:2ee0bc82e7b8 59 #define T_WIN_EN 0X01
TaylorGy 0:2ee0bc82e7b8 60 #define PA_WIN_EN 0X02
TaylorGy 0:2ee0bc82e7b8 61 #define T_TRAV_EN 0X04
TaylorGy 0:2ee0bc82e7b8 62 #define PA_TRAV_EN 0X08
TaylorGy 0:2ee0bc82e7b8 63 #define PA_RDY_EN 0X20
TaylorGy 0:2ee0bc82e7b8 64 #define T_RDY_EN 0X10
TaylorGy 0:2ee0bc82e7b8 65
TaylorGy 0:2ee0bc82e7b8 66 #define T_WIN_CFG 0X01
TaylorGy 0:2ee0bc82e7b8 67 #define PA_WIN_CFG 0X02
TaylorGy 0:2ee0bc82e7b8 68 #define PA_MODE_P 0X00
TaylorGy 0:2ee0bc82e7b8 69 #define PA_MODE_A 0X40
TaylorGy 0:2ee0bc82e7b8 70
TaylorGy 0:2ee0bc82e7b8 71 #define T_TRAV_CFG 0X04
TaylorGy 0:2ee0bc82e7b8 72
TaylorGy 0:2ee0bc82e7b8 73 #define OK_HP20X_DEV 0X80 //HP20x_dev successfully initialized
TaylorGy 0:2ee0bc82e7b8 74 #define REG_PARA 0X0F //Status register
TaylorGy 0:2ee0bc82e7b8 75
TaylorGy 0:2ee0bc82e7b8 76 /****************************************************************************/
TaylorGy 0:2ee0bc82e7b8 77 /*** Class Definitions ***/
TaylorGy 0:2ee0bc82e7b8 78 /****************************************************************************/
TaylorGy 0:2ee0bc82e7b8 79 class HP20x_dev
TaylorGy 0:2ee0bc82e7b8 80 {
TaylorGy 0:2ee0bc82e7b8 81 /* Public variables and functions */
TaylorGy 0:2ee0bc82e7b8 82 public:
TaylorGy 0:2ee0bc82e7b8 83 uchar OSR_CFG;
TaylorGy 0:2ee0bc82e7b8 84 uint OSR_ConvertTime;
TaylorGy 0:2ee0bc82e7b8 85 /* Constructor */
TaylorGy 0:2ee0bc82e7b8 86 HP20x_dev();
TaylorGy 0:2ee0bc82e7b8 87 void begin();
TaylorGy 0:2ee0bc82e7b8 88 uchar isAvailable();
TaylorGy 0:2ee0bc82e7b8 89
TaylorGy 0:2ee0bc82e7b8 90 /* Read sensor data */
TaylorGy 0:2ee0bc82e7b8 91 ulong ReadTemperature(void);
TaylorGy 0:2ee0bc82e7b8 92 ulong ReadPressure(void);
TaylorGy 0:2ee0bc82e7b8 93 ulong ReadAltitude(void);
TaylorGy 0:2ee0bc82e7b8 94
TaylorGy 0:2ee0bc82e7b8 95 /* Private variables and functions */
TaylorGy 0:2ee0bc82e7b8 96 private:
TaylorGy 0:2ee0bc82e7b8 97 /* Write a command to HP20x */
TaylorGy 0:2ee0bc82e7b8 98 void HP20X_IIC_WriteCmd(uchar uCmd);
TaylorGy 0:2ee0bc82e7b8 99 /* Read register value */
TaylorGy 0:2ee0bc82e7b8 100 uchar HP20X_IIC_ReadReg(uchar bReg);
TaylorGy 0:2ee0bc82e7b8 101 void HP20X_IIC_WriteReg(uchar bReg,uchar bData);
TaylorGy 0:2ee0bc82e7b8 102 ulong HP20X_IIC_ReadData(void);
TaylorGy 0:2ee0bc82e7b8 103 ulong HP20X_IIC_ReadData3byte(void);
TaylorGy 0:2ee0bc82e7b8 104 };
TaylorGy 0:2ee0bc82e7b8 105 extern HP20x_dev HP20x;
TaylorGy 0:2ee0bc82e7b8 106 #endif