HP20x_dev.h 3.4 KB

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