HP206C waterproof high-accuracy barometr ported from arduino

Fork of HP206C by Dmitry Dzhafarkhanov

Committer:
raminou
Date:
Tue Nov 06 13:21:16 2018 +0000
Revision:
1:c1ef96e46314
Parent:
0:573122fe4fd1
add preprocessor (not tested)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Dzhafarkhanov 0:573122fe4fd1 1 /*Portet from arduino
Dzhafarkhanov 0:573122fe4fd1 2
Dzhafarkhanov 0:573122fe4fd1 3
Dzhafarkhanov 0:573122fe4fd1 4 * File name : HP20x_dev.h
Dzhafarkhanov 0:573122fe4fd1 5 * Description: Driver for I2C PRECISION BAROMETER AND ALTIMETER [HP206C]
Dzhafarkhanov 0:573122fe4fd1 6 * Author : Oliver Wang from Seeed studio
Dzhafarkhanov 0:573122fe4fd1 7 * Version : V0.1
Dzhafarkhanov 0:573122fe4fd1 8 * Create Time: 2014/04
Dzhafarkhanov 0:573122fe4fd1 9 * Change Log :
Dzhafarkhanov 0:573122fe4fd1 10 */
Dzhafarkhanov 0:573122fe4fd1 11 #ifndef _HP20X_DEV_H
Dzhafarkhanov 0:573122fe4fd1 12 #define _HP20X_DEV_H
Dzhafarkhanov 0:573122fe4fd1 13 /****************************************************************************/
Dzhafarkhanov 0:573122fe4fd1 14 /*** Including Files ***/
Dzhafarkhanov 0:573122fe4fd1 15 /****************************************************************************/
Dzhafarkhanov 0:573122fe4fd1 16
Dzhafarkhanov 0:573122fe4fd1 17 #include "mbed.h"
Dzhafarkhanov 0:573122fe4fd1 18 /****************************************************************************/
Dzhafarkhanov 0:573122fe4fd1 19 /*** Macro Definitions ***/
Dzhafarkhanov 0:573122fe4fd1 20 /****************************************************************************/
Dzhafarkhanov 0:573122fe4fd1 21
Dzhafarkhanov 0:573122fe4fd1 22
Dzhafarkhanov 0:573122fe4fd1 23 #define HP20X_ADDRESS 0xEC
Dzhafarkhanov 0:573122fe4fd1 24 //#define HP20X_I2C_DEV_ID (0xEC)>>1 //CSB PIN is VDD level(address is 0x76)
Dzhafarkhanov 0:573122fe4fd1 25 //#define HP20X_I2C_DEV_ID2 (0XEE)>>1 //CSB PIN is GND level(address is 0x77)
Dzhafarkhanov 0:573122fe4fd1 26 #define HP20X_SOFT_RST 0x06 //Soft reset the device
Dzhafarkhanov 0:573122fe4fd1 27 #define HP20X_WR_CONVERT_CMD 0x40
Dzhafarkhanov 0:573122fe4fd1 28 #define HP20X_CONVERT_OSR4096 0<<2
Dzhafarkhanov 0:573122fe4fd1 29 #define HP20X_CONVERT_OSR2048 1<<2
Dzhafarkhanov 0:573122fe4fd1 30 #define HP20X_CONVERT_OSR1024 2<<2
Dzhafarkhanov 0:573122fe4fd1 31 #define HP20X_CONVERT_OSR512 3<<2
Dzhafarkhanov 0:573122fe4fd1 32 #define HP20X_CONVERT_OSR256 4<<2
Dzhafarkhanov 0:573122fe4fd1 33 #define HP20X_CONVERT_OSR128 5<<2
Dzhafarkhanov 0:573122fe4fd1 34
Dzhafarkhanov 0:573122fe4fd1 35 #define HP20X_READ_P 0x30 //Read the pressure value only
Dzhafarkhanov 0:573122fe4fd1 36 #define HP20X_READ_A 0x31 //Read the altitude value only
Dzhafarkhanov 0:573122fe4fd1 37 #define HP20X_READ_T 0x32 //Read the temperature value only
Dzhafarkhanov 0:573122fe4fd1 38 #define HP20X_READ_PT 0x10 //Read the temperature and pressure values
Dzhafarkhanov 0:573122fe4fd1 39 #define HP20X_READ_AT 0x11 //Read the temperature and altitude values
Dzhafarkhanov 0:573122fe4fd1 40 #define HP20X_READ_CAL 0X28 //Re-calibrate the internal analog blocks
Dzhafarkhanov 0:573122fe4fd1 41
Dzhafarkhanov 0:573122fe4fd1 42 #define HP20X_WR_REG_MODE 0xC0
Dzhafarkhanov 0:573122fe4fd1 43 #define HP20X_RD_REG_MODE 0x80
Dzhafarkhanov 0:573122fe4fd1 44
Dzhafarkhanov 0:573122fe4fd1 45 #define ERR_WR_DEVID_NACK 0x01
Dzhafarkhanov 0:573122fe4fd1 46 #define ERR_RD_DEVID_NACK 0x02
Dzhafarkhanov 0:573122fe4fd1 47 #define ERR_WR_REGADD_NACK 0x04
Dzhafarkhanov 0:573122fe4fd1 48 #define ERR_WR_REGCMD_NACK 0x08
Dzhafarkhanov 0:573122fe4fd1 49 #define ERR_WR_DATA_NACK 0x10
Dzhafarkhanov 0:573122fe4fd1 50 #define ERR_RD_DATA_MISMATCH 0x20
Dzhafarkhanov 0:573122fe4fd1 51
Dzhafarkhanov 0:573122fe4fd1 52 #define I2C_DID_WR_MASK 0xFE
Dzhafarkhanov 0:573122fe4fd1 53 #define I2C_DID_RD_MASK 0x01
Dzhafarkhanov 0:573122fe4fd1 54
Dzhafarkhanov 0:573122fe4fd1 55 #define T_WIN_EN 0X01
Dzhafarkhanov 0:573122fe4fd1 56 #define PA_WIN_EN 0X02
Dzhafarkhanov 0:573122fe4fd1 57 #define T_TRAV_EN 0X04
Dzhafarkhanov 0:573122fe4fd1 58 #define PA_TRAV_EN 0X08
Dzhafarkhanov 0:573122fe4fd1 59 #define PA_RDY_EN 0X20
Dzhafarkhanov 0:573122fe4fd1 60 #define T_RDY_EN 0X10
Dzhafarkhanov 0:573122fe4fd1 61
Dzhafarkhanov 0:573122fe4fd1 62 #define T_WIN_CFG 0X01
Dzhafarkhanov 0:573122fe4fd1 63 #define PA_WIN_CFG 0X02
Dzhafarkhanov 0:573122fe4fd1 64 #define PA_MODE_P 0X00
Dzhafarkhanov 0:573122fe4fd1 65 #define PA_MODE_A 0X40
Dzhafarkhanov 0:573122fe4fd1 66
Dzhafarkhanov 0:573122fe4fd1 67 #define T_TRAV_CFG 0X04
Dzhafarkhanov 0:573122fe4fd1 68
Dzhafarkhanov 0:573122fe4fd1 69 #define OK_HP20X_DEV 0X80 //HP20x_dev successfully initialized
Dzhafarkhanov 0:573122fe4fd1 70 #define REG_PARA 0X0F //Status register
Dzhafarkhanov 0:573122fe4fd1 71
Dzhafarkhanov 0:573122fe4fd1 72 /****************************************************************************/
Dzhafarkhanov 0:573122fe4fd1 73 /*** Class Definitions ***/
Dzhafarkhanov 0:573122fe4fd1 74 /****************************************************************************/
Dzhafarkhanov 0:573122fe4fd1 75 class HP20x_dev
Dzhafarkhanov 0:573122fe4fd1 76 {
Dzhafarkhanov 0:573122fe4fd1 77 /* Public variables and functions */
Dzhafarkhanov 0:573122fe4fd1 78 public:
Dzhafarkhanov 0:573122fe4fd1 79
Dzhafarkhanov 0:573122fe4fd1 80 HP20x_dev(PinName p_sda, PinName p_scl);
Dzhafarkhanov 0:573122fe4fd1 81
Dzhafarkhanov 0:573122fe4fd1 82 char OSR_CFG;
Dzhafarkhanov 0:573122fe4fd1 83 int OSR_ConvertTime;
Dzhafarkhanov 0:573122fe4fd1 84 /* Constructor */
Dzhafarkhanov 0:573122fe4fd1 85 void reset();
Dzhafarkhanov 0:573122fe4fd1 86 char isAvailable();
Dzhafarkhanov 0:573122fe4fd1 87
Dzhafarkhanov 0:573122fe4fd1 88 /* Read sensor data */
Dzhafarkhanov 0:573122fe4fd1 89 //long ReadTemperature(void);
Dzhafarkhanov 0:573122fe4fd1 90 long ReadPressure(void);
Dzhafarkhanov 0:573122fe4fd1 91 // long ReadAltitude(void);
Dzhafarkhanov 0:573122fe4fd1 92 protected:
Dzhafarkhanov 0:573122fe4fd1 93 I2C i2c;
Dzhafarkhanov 0:573122fe4fd1 94 void writeByte(uint8_t address, uint8_t subAddress, uint8_t data);
Dzhafarkhanov 0:573122fe4fd1 95 char readByte(uint8_t address, uint8_t subAddress);
Dzhafarkhanov 0:573122fe4fd1 96
Dzhafarkhanov 0:573122fe4fd1 97
Dzhafarkhanov 0:573122fe4fd1 98
Dzhafarkhanov 0:573122fe4fd1 99 };
Dzhafarkhanov 0:573122fe4fd1 100 //extern HP20x_dev HP20x;
Dzhafarkhanov 0:573122fe4fd1 101 #endif