BMP280_ATY.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. /**
  2. * @file BMP280_ATY.h
  3. *
  4. * @param Project DEVICE_GENERAL_ATY_LIB
  5. *
  6. * @author ATY
  7. *
  8. * @copyright
  9. * - Copyright 2017 - 2023 MZ-ATY
  10. * - This code follows:
  11. * - MZ-ATY Various Contents Joint Statement -
  12. * <a href="https://mengze.top/MZ-ATY_VCJS">
  13. * https://mengze.top/MZ-ATY_VCJS</a>
  14. * - CC 4.0 BY-NC-SA -
  15. * <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
  16. * https://creativecommons.org/licenses/by-nc-sa/4.0/</a>
  17. * - Your use will be deemed to have accepted the terms of this statement.
  18. *
  19. * @brief Familiar functions of BMP280 for all embedded device
  20. *
  21. * @version
  22. * - 1_01_220831 > ATY
  23. * -# Preliminary version, first Release
  24. ********************************************************************************
  25. */
  26. #ifndef __BMP280_ATY_H
  27. #define __BMP280_ATY_H
  28. #include "INCLUDE_ATY.h"
  29. #include "HW_I2C_ATY.h"
  30. /******************************* For user *************************************/
  31. // Set SDO voltage level for device address
  32. #define BP280_SDO 1
  33. // #define BMP280_USE_FIXED_POINT_COMPENSATE
  34. // #define __DEBUG_BMP280_ATY
  35. /******************************************************************************/
  36. typedef long signed int BMP280_S32_t; // signed 32
  37. typedef long unsigned int BMP280_U32_t; // unsigned 32
  38. typedef long long signed int BMP280_S64_t; // signed 64
  39. #define BMP280_ADDRESS (0x76 | BP280_SDO)
  40. #define BMP280_RESET_VALUE 0xB6
  41. #define BMP280_CHIPID_REG 0xD0
  42. #define BMP280_RESET_REG 0xE0 // Softreset Register
  43. #define BMP280_STATUS_REG 0xF3
  44. #define BMP280_CTRLMEAS_REG 0xF4 // Ctrl Measure Register
  45. #define BMP280_CONFIG_REG 0xF5
  46. #define BMP280_PRESSURE_MSB_REG 0xF7
  47. #define BMP280_PRESSURE_LSB_REG 0xF8
  48. #define BMP280_PRESSURE_XLSB_REG 0xF9
  49. #define BMP280_TEMPERATURE_MSB_REG 0xFA
  50. #define BMP280_TEMPERATURE_LSB_REG 0xFB
  51. #define BMP280_TEMPERATURE_XLSB_REG 0xFC
  52. #define BMP280_MEASURING 0x01 // Measure state reg
  53. #define BMP280_IM_UPDATE 0x08 // Update state reg
  54. // BMP280 work mode
  55. typedef enum {
  56. BMP280_SLEEP_MODE = 0x00,
  57. BMP280_FORCED_MODE = 0x01, // and 0x02
  58. BMP280_NORMAL_MODE = 0x03
  59. } BMP280_WORK_MODE;
  60. // Pressure oversampling factor
  61. typedef enum
  62. {
  63. BMP280_P_MODE_SKIP = 0x0, // skipped
  64. BMP280_P_MODE_1, // x1
  65. BMP280_P_MODE_2, // x2
  66. BMP280_P_MODE_3, // x4
  67. BMP280_P_MODE_4, // x8
  68. BMP280_P_MODE_5 // x16
  69. } BMP280_P_OVERSAMPLING;
  70. // Temperature oversampling factor
  71. typedef enum {
  72. BMP280_T_MODE_SKIP = 0x0, // skipped
  73. BMP280_T_MODE_1, // x1
  74. BMP280_T_MODE_2, // x2
  75. BMP280_T_MODE_3, // x4
  76. BMP280_T_MODE_4, // x8
  77. BMP280_T_MODE_5 // x16
  78. } BMP280_T_OVERSAMPLING;
  79. // IIR filter time constant
  80. typedef enum {
  81. BMP280_FILTER_OFF = 0x0, // filter off
  82. BMP280_FILTER_MODE_1, // x2 0.223*ODR
  83. BMP280_FILTER_MODE_2, // x4 0.092*ODR
  84. BMP280_FILTER_MODE_3, // x8 0.042*ODR
  85. BMP280_FILTER_MODE_4 // x16 0.021*ODR
  86. } BMP280_FILTER_COEFFICIENT;
  87. // Hold time
  88. typedef enum {
  89. BMP280_T_SB1 = 0x0, // 0.5ms
  90. BMP280_T_SB2, // 62.5ms
  91. BMP280_T_SB3, // 125ms
  92. BMP280_T_SB4, // 250ms
  93. BMP280_T_SB5, // 500ms
  94. BMP280_T_SB6, // 1000ms
  95. BMP280_T_SB7, // 2000ms
  96. BMP280_T_SB8 // 4000ms
  97. } BMP280_T_SB;
  98. // T1~P9 Is the compensation coefficient
  99. typedef struct _BMP280_CC
  100. {
  101. uint16_t T1;
  102. int16_t T2;
  103. int16_t T3;
  104. uint16_t P1;
  105. int16_t P2;
  106. int16_t P3;
  107. int16_t P4;
  108. int16_t P5;
  109. int16_t P6;
  110. int16_t P7;
  111. int16_t P8;
  112. int16_t P9;
  113. } BMP280_CC;
  114. #define BMP280_DIG_T1_LSB_REG 0x88
  115. #define BMP280_DIG_T1_MSB_REG 0x89
  116. #define BMP280_DIG_T2_LSB_REG 0x8A
  117. #define BMP280_DIG_T2_MSB_REG 0x8B
  118. #define BMP280_DIG_T3_LSB_REG 0x8C
  119. #define BMP280_DIG_T3_MSB_REG 0x8D
  120. #define BMP280_DIG_P1_LSB_REG 0x8E
  121. #define BMP280_DIG_P1_MSB_REG 0x8F
  122. #define BMP280_DIG_P2_LSB_REG 0x90
  123. #define BMP280_DIG_P2_MSB_REG 0x91
  124. #define BMP280_DIG_P3_LSB_REG 0x92
  125. #define BMP280_DIG_P3_MSB_REG 0x93
  126. #define BMP280_DIG_P4_LSB_REG 0x94
  127. #define BMP280_DIG_P4_MSB_REG 0x95
  128. #define BMP280_DIG_P5_LSB_REG 0x96
  129. #define BMP280_DIG_P5_MSB_REG 0x97
  130. #define BMP280_DIG_P6_LSB_REG 0x98
  131. #define BMP280_DIG_P6_MSB_REG 0x99
  132. #define BMP280_DIG_P7_LSB_REG 0x9A
  133. #define BMP280_DIG_P7_MSB_REG 0x9B
  134. #define BMP280_DIG_P8_LSB_REG 0x9C
  135. #define BMP280_DIG_P8_MSB_REG 0x9D
  136. #define BMP280_DIG_P9_LSB_REG 0x9E
  137. #define BMP280_DIG_P9_MSB_REG 0x9F
  138. typedef struct
  139. {
  140. BMP280_P_OVERSAMPLING P_Osample;
  141. BMP280_T_OVERSAMPLING T_Osample;
  142. BMP280_WORK_MODE WORKMODE;
  143. } BMP280_OVERSAMPLE_MODE;
  144. typedef struct
  145. {
  146. BMP280_T_SB T_SB;
  147. BMP280_FILTER_COEFFICIENT FILTER_COEFFICIENT;
  148. FunctionalState SPI_EN;
  149. } BMP280_CONFIG;
  150. extern struct _BMP280_CC bmp280Cc;
  151. extern uint8_t bmp280Id;
  152. extern uint8_t bmp280InitFlag;
  153. uint8_t BMP280_TempPreGet(uint16_t* tp);
  154. #endif /* __BMP280_ATY_H */
  155. /******************************** End Of File *********************************/