Dmitry Dzhafarkhanov / HP206C

Dependents:   projetS1

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers HP20x_dev.h Source File

HP20x_dev.h

00001 /*Portet from arduino
00002 
00003 
00004  * File name  : HP20x_dev.h
00005  * Description: Driver for I2C PRECISION BAROMETER AND ALTIMETER [HP206C]
00006  * Author     : Oliver Wang from Seeed studio
00007  * Version    : V0.1
00008  * Create Time: 2014/04
00009  * Change Log :
00010 */
00011 #ifndef _HP20X_DEV_H
00012 #define _HP20X_DEV_H
00013 /****************************************************************************/
00014 /***        Including Files                                               ***/
00015 /****************************************************************************/
00016 
00017 #include "mbed.h"
00018 /****************************************************************************/
00019 /***        Macro Definitions                                             ***/
00020 /****************************************************************************/
00021 
00022 
00023 #define HP20X_ADDRESS          0xEC
00024 //#define HP20X_I2C_DEV_ID       (0xEC)>>1    //CSB PIN is VDD level(address is 0x76)
00025 //#define HP20X_I2C_DEV_ID2      (0XEE)>>1    //CSB PIN is GND level(address is 0x77)
00026 #define HP20X_SOFT_RST         0x06 //Soft reset the device
00027 #define HP20X_WR_CONVERT_CMD   0x40
00028 #define HP20X_CONVERT_OSR4096  0<<2
00029 #define HP20X_CONVERT_OSR2048  1<<2
00030 #define HP20X_CONVERT_OSR1024  2<<2
00031 #define HP20X_CONVERT_OSR512   3<<2
00032 #define HP20X_CONVERT_OSR256   4<<2
00033 #define HP20X_CONVERT_OSR128   5<<2
00034 
00035 #define HP20X_READ_P           0x30   //Read the pressure value only
00036 #define HP20X_READ_A           0x31   //Read the altitude value only
00037 #define HP20X_READ_T           0x32   //Read the temperature value only
00038 #define HP20X_READ_PT          0x10   //Read the temperature and pressure values
00039 #define HP20X_READ_AT          0x11   //Read the temperature and altitude values
00040 #define HP20X_READ_CAL         0X28   //Re-calibrate the internal analog blocks
00041 
00042 #define HP20X_WR_REG_MODE      0xC0
00043 #define HP20X_RD_REG_MODE      0x80
00044 
00045 #define ERR_WR_DEVID_NACK       0x01    
00046 #define ERR_RD_DEVID_NACK       0x02    
00047 #define ERR_WR_REGADD_NACK      0x04   
00048 #define ERR_WR_REGCMD_NACK      0x08   
00049 #define ERR_WR_DATA_NACK        0x10     
00050 #define ERR_RD_DATA_MISMATCH    0x20 
00051 
00052 #define I2C_DID_WR_MASK         0xFE
00053 #define I2C_DID_RD_MASK         0x01
00054 
00055 #define T_WIN_EN                0X01
00056 #define PA_WIN_EN               0X02
00057 #define T_TRAV_EN               0X04
00058 #define PA_TRAV_EN              0X08
00059 #define PA_RDY_EN               0X20
00060 #define T_RDY_EN                0X10
00061 
00062 #define T_WIN_CFG               0X01
00063 #define PA_WIN_CFG              0X02
00064 #define PA_MODE_P               0X00
00065 #define PA_MODE_A               0X40
00066 
00067 #define T_TRAV_CFG              0X04
00068 
00069 #define OK_HP20X_DEV            0X80        //HP20x_dev successfully initialized
00070 #define REG_PARA                0X0F        //Status register
00071 
00072 /****************************************************************************/
00073 /***        Class Definitions                                             ***/
00074 /****************************************************************************/
00075 class HP20x_dev
00076 {
00077   /* Public variables and functions */
00078   public:
00079   
00080   HP20x_dev(PinName p_sda, PinName p_scl);
00081   
00082     char OSR_CFG;
00083     int  OSR_ConvertTime;
00084     /* Constructor */ 
00085     void reset();
00086     char isAvailable();
00087     
00088     /* Read sensor data */
00089     //long ReadTemperature(void);
00090     long ReadPressure(void);
00091    // long ReadAltitude(void);
00092    protected:
00093     I2C i2c;
00094     void writeByte(uint8_t address, uint8_t subAddress, uint8_t data);
00095     char readByte(uint8_t address, uint8_t subAddress);
00096    
00097     
00098   
00099 };
00100 //extern HP20x_dev HP20x;
00101 #endif