KETCube
ketCube_bmeX80.h
Go to the documentation of this file.
1 
45 #ifndef __KETCUBE_BMEX80_H
46 #define __KETCUBE_BMEX80_H
47 
48 #include "ketCube_cfg.h"
49 #include "ketCube_common.h"
50 
51 #define KETCUBE_BMEX80_SENSOR_TYPE_BME280
52 //#define KETCUBE_BMEX80_SENSOR_TYPE_BME680
53 
66 
68 
77 typedef enum {
78  KETCUBE_BMEX80_OS_H_X0 = (uint8_t) 0x00,
79  KETCUBE_BMEX80_OS_H_X1 = (uint8_t) 0x01,
80  KETCUBE_BMEX80_OS_H_X2 = (uint8_t) 0x02,
81  KETCUBE_BMEX80_OS_H_X4 = (uint8_t) 0x03,
82  KETCUBE_BMEX80_OS_H_X8 = (uint8_t) 0x04,
83  KETCUBE_BMEX80_OS_H_X16 = (uint8_t) 0x05,
85 
89 typedef enum {
90  KETCUBE_BMEX80_OS_T_X0 = (uint8_t) 0x00,
91  KETCUBE_BMEX80_OS_T_X1 = (uint8_t) 0x01,
92  KETCUBE_BMEX80_OS_T_X2 = (uint8_t) 0x02,
93  KETCUBE_BMEX80_OS_T_X4 = (uint8_t) 0x03,
94  KETCUBE_BMEX80_OS_T_X8 = (uint8_t) 0x04,
95  KETCUBE_BMEX80_OS_T_X16 = (uint8_t) 0x05,
97 
101 typedef enum {
102  KETCUBE_BMEX80_OS_P_X0 = (uint8_t) 0x00,
103  KETCUBE_BMEX80_OS_P_X1 = (uint8_t) 0x01,
104  KETCUBE_BMEX80_OS_P_X2 = (uint8_t) 0x02,
105  KETCUBE_BMEX80_OS_P_X4 = (uint8_t) 0x03,
106  KETCUBE_BMEX80_OS_P_X8 = (uint8_t) 0x04,
107  KETCUBE_BMEX80_OS_P_X16 = (uint8_t) 0x05,
109 
110 #ifdef KETCUBE_BMEX80_SENSOR_TYPE_BME280
111 
114 typedef struct {
115  uint16_t dig_T1;
116  int16_t dig_T2;
117  int16_t dig_T3;
118  uint16_t dig_P1;
119  int16_t dig_P2;
120  int16_t dig_P3;
121  int16_t dig_P4;
122  int16_t dig_P5;
123  int16_t dig_P6;
124  int16_t dig_P7;
125  int16_t dig_P8;
126  int16_t dig_P9;
127  uint8_t dig_H1;
128  int16_t dig_H2;
129  uint8_t dig_H3;
130  int16_t dig_H4;
131  int16_t dig_H5;
132  int8_t dig_H6;
133  int32_t t_fine;
135 #endif /* KETCUBE_BMEX80_SENSOR_TYPE_BME280 */
136 
137 #ifdef KETCUBE_BMEX80_SENSOR_TYPE_BME680
138 
141 typedef struct {
142  uint16_t par_h1;
143  uint16_t par_h2;
144  int8_t par_h3;
145  int8_t par_h4;
146  int8_t par_h5;
147  uint8_t par_h6;
148  int8_t par_h7;
149  int8_t par_gh1;
150  int16_t par_gh2;
151  int8_t par_gh3;
152  uint16_t par_t1;
153  int16_t par_t2;
154  int8_t par_t3;
155  uint16_t par_p1;
156  int16_t par_p2;
157  int8_t par_p3;
158  int16_t par_p4;
159  int16_t par_p5;
160  int8_t par_p6;
161  int8_t par_p7;
162  int16_t par_p8;
163  int16_t par_p9;
164  uint8_t par_p10;
165  int32_t t_fine;
167 #endif /* KETCUBE_BMEX80_SENSOR_TYPE_BME680 */
168 
172 #define BME_CONCAT_BYTES(msb, lsb) (((uint16_t)msb << 8) | (uint16_t)lsb)
173 
177 #define BME680_T2_LSB_REG 1
178 #define BME680_T2_MSB_REG 2
179 #define BME680_T3_REG 3
180 #define BME680_P1_LSB_REG 5
181 #define BME680_P1_MSB_REG 6
182 #define BME680_P2_LSB_REG 7
183 #define BME680_P2_MSB_REG 8
184 #define BME680_P3_REG 9
185 #define BME680_P4_LSB_REG 11
186 #define BME680_P4_MSB_REG 12
187 #define BME680_P5_LSB_REG 13
188 #define BME680_P5_MSB_REG 14
189 #define BME680_P7_REG 15
190 #define BME680_P6_REG 16
191 #define BME680_P8_LSB_REG 19
192 #define BME680_P8_MSB_REG 20
193 #define BME680_P9_LSB_REG 21
194 #define BME680_P9_MSB_REG 22
195 #define BME680_P10_REG 23
196 #define BME680_H2_MSB_REG 25
197 #define BME680_H2_LSB_REG 26
198 #define BME680_H1_LSB_REG 26
199 #define BME680_H1_MSB_REG 27
200 #define BME680_H3_REG 28
201 #define BME680_H4_REG 29
202 #define BME680_H5_REG 30
203 #define BME680_H6_REG 31
204 #define BME680_H7_REG 32
205 #define BME680_T1_LSB_REG 33
206 #define BME680_T1_MSB_REG 34
207 #define BME680_GH2_LSB_REG 35
208 #define BME680_GH2_MSB_REG 36
209 #define BME680_GH1_REG 37
210 #define BME680_GH3_REG 38
211 
215 //#define KETCUBE_BMEX80_I2C_ADDRESS (uint8_t) (0x77 << 1) /* SDO pin HIGH */
216 #define KETCUBE_BMEX80_I2C_ADDRESS (uint8_t) (0x76 << 1) /* SDO pin LOW */
217 
218 #define KETCUBE_BMEX80_CALIB_2_LENGTH 16
219 
220 #ifdef KETCUBE_BMEX80_SENSOR_TYPE_BME280
221 #define KETCUBE_BMEX80_CHIP_ID 0x60
222 #define KETCUBE_BMEX80_CALIB_1_LENGTH 26
223 #define KETCUBE_BMEX80_MEASURING_SHIFT 3
224 #endif /* KETCUBE_BMEX80_SENSOR_TYPE_BME280 */
225 
226 #ifdef KETCUBE_BMEX80_SENSOR_TYPE_BME680
227 #define KETCUBE_BMEX80_CHIP_ID 0x61
228 #define KETCUBE_BMEX80_CALIB_1_LENGTH 25
229 #define KETCUBE_BMEX80_MEASURING_SHIFT 5
230 #endif /* KETCUBE_BMEX80_SENSOR_TYPE_BME680 */
231 
240 #define KETCUBE_BMEX80_CHIP_ID_REG 0xD0
241 #define KETCUBE_BMEX80_CALIB_2_FIRST_REG 0xE1
242 
243 #ifdef KETCUBE_BMEX80_SENSOR_TYPE_BME280
244 #define KETCUBE_BMEX80_HUMIDITY_REG 0XFD
245 #define KETCUBE_BMEX80_TEMPERATURE_REG 0XFA
246 #define KETCUBE_BMEX80_PRESSURE_REG 0XF7
247 #define KETCUBE_BMEX80_CTRL_MEAS_REG 0XF4
248 #define KETCUBE_BMEX80_STATUS_REG 0XF3
249 #define KETCUBE_BMEX80_CTRL_HUM_REG 0XF2
250 #define KETCUBE_BMEX80_CALIB_1_FIRST_REG 0x88
251 #endif /* KETCUBE_BMEX80_SENSOR_TYPE_BME280 */
252 
253 #ifdef KETCUBE_BMEX80_SENSOR_TYPE_BME680
254 #define KETCUBE_BMEX80_HUMIDITY_REG 0X25
255 #define KETCUBE_BMEX80_TEMPERATURE_REG 0X22
256 #define KETCUBE_BMEX80_PRESSURE_REG 0X1F
257 #define KETCUBE_BMEX80_CTRL_MEAS_REG 0X74
258 #define KETCUBE_BMEX80_CTRL_HUM_REG 0X72
259 #define KETCUBE_BMEX80_CALIB_1_FIRST_REG 0x89
260 #define KETCUBE_BMEX80_STATUS_REG 0X1D
261 #endif /* KETCUBE_BMEX80_SENSOR_TYPE_BME680 */
262 
273  *** msg);
276  uint8_t * len);
277 
288 #endif /* __KETCUBE_BMEX80_H */
KETCUBE_BMEX80_OS_H_X0
@ KETCUBE_BMEX80_OS_H_X0
Definition: ketCube_bmeX80.h:78
ketCube_InterModMsg_t
KETCube inter-module message.
Definition: ketCube_cfg.h:116
ketCube_bmeX80_Calib_t::t_fine
int32_t t_fine
Definition: ketCube_bmeX80.h:133
KETCUBE_BMEX80_OS_P_X1
@ KETCUBE_BMEX80_OS_P_X1
Definition: ketCube_bmeX80.h:103
ketCube_bmeX80_Calib_t::dig_P2
int16_t dig_P2
Definition: ketCube_bmeX80.h:119
ketCube_cfg_ModuleCfgByte_t
KETCube module configuration byte.
Definition: ketCube_cfg.h:147
KETCUBE_BMEX80_OS_P_X8
@ KETCUBE_BMEX80_OS_P_X8
Definition: ketCube_bmeX80.h:106
KETCUBE_BMEX80_OS_T_X2
@ KETCUBE_BMEX80_OS_T_X2
Definition: ketCube_bmeX80.h:92
ketCube_bmeX80_moduleCfg
ketCube_bmeX80_moduleCfg_t ketCube_bmeX80_moduleCfg
ketCube_bmeX80_Calib_t::dig_T2
int16_t dig_T2
Definition: ketCube_bmeX80.h:116
ketCube_bmeX80_UnInit
ketCube_cfg_ModError_t ketCube_bmeX80_UnInit(void)
KETCUBE_BMEX80_OS_P_X4
@ KETCUBE_BMEX80_OS_P_X4
Definition: ketCube_bmeX80.h:105
ketCube_bmeX80_moduleCfg_t::coreCfg
ketCube_cfg_ModuleCfgByte_t coreCfg
Definition: ketCube_bmeX80.h:64
ketCube_bmeX80_Calib_t::dig_P1
uint16_t dig_P1
Definition: ketCube_bmeX80.h:118
ketCube_bmeX80_OS_T_t
ketCube_bmeX80_OS_T_t
Temperature oversampling.
Definition: ketCube_bmeX80.h:89
KETCUBE_BMEX80_OS_T_X4
@ KETCUBE_BMEX80_OS_T_X4
Definition: ketCube_bmeX80.h:93
ketCube_bmeX80_OS_P_t
ketCube_bmeX80_OS_P_t
Pressure oversampling.
Definition: ketCube_bmeX80.h:101
KETCUBE_BMEX80_OS_H_X2
@ KETCUBE_BMEX80_OS_H_X2
Definition: ketCube_bmeX80.h:80
ketCube_bmeX80_Calib_t::dig_T1
uint16_t dig_T1
Definition: ketCube_bmeX80.h:115
ketCube_bmeX80_Calib_t::dig_H5
int16_t dig_H5
Definition: ketCube_bmeX80.h:131
ketCube_bmeX80_moduleCfg_t
struct ketCube_bmeX80_moduleCfg_t ketCube_bmeX80_moduleCfg_t
KETCube module configuration.
ketCube_bmeX80_Calib_t::dig_P5
int16_t dig_P5
Definition: ketCube_bmeX80.h:122
ketCube_bmeX80_Calib_t::dig_H1
uint8_t dig_H1
Definition: ketCube_bmeX80.h:127
ketCube_bmeX80_Calib_t
Calibration data structure.
Definition: ketCube_bmeX80.h:114
KETCUBE_BMEX80_OS_T_X8
@ KETCUBE_BMEX80_OS_T_X8
Definition: ketCube_bmeX80.h:94
ketCube_bmeX80_Calib_t::dig_H6
int8_t dig_H6
Definition: ketCube_bmeX80.h:132
ketCube_bmeX80_Calib_t::dig_P6
int16_t dig_P6
Definition: ketCube_bmeX80.h:123
ketCube_bmeX80_OS_H_t
ketCube_bmeX80_OS_H_t
Relative humidity oversampling.
Definition: ketCube_bmeX80.h:77
KETCUBE_BMEX80_OS_P_X16
@ KETCUBE_BMEX80_OS_P_X16
Definition: ketCube_bmeX80.h:107
KETCUBE_BMEX80_OS_T_X1
@ KETCUBE_BMEX80_OS_T_X1
Definition: ketCube_bmeX80.h:91
ketCube_common.h
KETCube common definitions.
ketCube_bmeX80_Calib_t::dig_H3
uint8_t dig_H3
Definition: ketCube_bmeX80.h:129
KETCUBE_BMEX80_OS_H_X4
@ KETCUBE_BMEX80_OS_H_X4
Definition: ketCube_bmeX80.h:81
KETCUBE_BMEX80_OS_P_X0
@ KETCUBE_BMEX80_OS_P_X0
Definition: ketCube_bmeX80.h:102
ketCube_bmeX80_Calib_t::dig_P8
int16_t dig_P8
Definition: ketCube_bmeX80.h:125
KETCUBE_BMEX80_OS_T_X0
@ KETCUBE_BMEX80_OS_T_X0
Definition: ketCube_bmeX80.h:90
ketCube_bmeX80_Calib_t::dig_H4
int16_t dig_H4
Definition: ketCube_bmeX80.h:130
ketCube_bmeX80_Calib_t::dig_P3
int16_t dig_P3
Definition: ketCube_bmeX80.h:120
ketCube_bmeX80_ReadData
ketCube_cfg_ModError_t ketCube_bmeX80_ReadData(uint8_t *buffer, uint8_t *len)
KETCUBE_BMEX80_OS_P_X2
@ KETCUBE_BMEX80_OS_P_X2
Definition: ketCube_bmeX80.h:104
ketCube_bmeX80_Calib_t::dig_T3
int16_t dig_T3
Definition: ketCube_bmeX80.h:117
ketCube_bmeX80_Calib_t::dig_H2
int16_t dig_H2
Definition: ketCube_bmeX80.h:128
ketCube_bmeX80_Calib_t::dig_P9
int16_t dig_P9
Definition: ketCube_bmeX80.h:126
ketCube_cfg.h
This file contains definitions for the KETCube configuration.
ketCube_bmeX80_moduleCfg_t
KETCube module configuration.
Definition: ketCube_bmeX80.h:63
ketCube_bmeX80_Calib_t::dig_P4
int16_t dig_P4
Definition: ketCube_bmeX80.h:121
ketCube_bmeX80_Calib_t::dig_P7
int16_t dig_P7
Definition: ketCube_bmeX80.h:124
ketCube_bmeX80_Init
ketCube_cfg_ModError_t ketCube_bmeX80_Init(ketCube_InterModMsg_t ***msg)
KETCUBE_BMEX80_OS_H_X8
@ KETCUBE_BMEX80_OS_H_X8
Definition: ketCube_bmeX80.h:82
KETCUBE_BMEX80_OS_H_X16
@ KETCUBE_BMEX80_OS_H_X16
Definition: ketCube_bmeX80.h:83
ketCube_cfg_ModError_t
ketCube_cfg_ModError_t
Error code type.
Definition: ketCube_cfg.h:100
KETCUBE_BMEX80_OS_T_X16
@ KETCUBE_BMEX80_OS_T_X16
Definition: ketCube_bmeX80.h:95
KETCUBE_BMEX80_OS_H_X1
@ KETCUBE_BMEX80_OS_H_X1
Definition: ketCube_bmeX80.h:79