Committer:
mcm
Date:
Tue Sep 03 15:59:50 2019 +0000
Revision:
4:a1c46ef057a6
Parent:
3:ab857b70346e
The driver was completed and tested ( NUCLEO-L152RE ), it works as expected.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mcm 2:853301624d95 1 /**
mcm 2:853301624d95 2 * @brief bme280_defs.h
mcm 2:853301624d95 3 * @details Combined humidity and pressure sensor.
mcm 2:853301624d95 4 * Header file.
mcm 2:853301624d95 5 *
mcm 2:853301624d95 6 *
mcm 2:853301624d95 7 * @return N/A
mcm 2:853301624d95 8 *
mcm 2:853301624d95 9 * @author Manuel Caballero
mcm 2:853301624d95 10 * @date 03/September/2019
mcm 2:853301624d95 11 * @version 03/September/2019 The ORIGIN
mcm 2:853301624d95 12 * @pre This is just a port from Bosh driver to mBed ( c++ )
mcm 2:853301624d95 13 * @warning N/A
mcm 2:853301624d95 14 * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ).
mcm 2:853301624d95 15 */
mcm 2:853301624d95 16 /**
mcm 2:853301624d95 17 * Copyright (C) 2018 - 2019 Bosch Sensortec GmbH
mcm 2:853301624d95 18 *
mcm 2:853301624d95 19 * Redistribution and use in source and binary forms, with or without
mcm 2:853301624d95 20 * modification, are permitted provided that the following conditions are met:
mcm 2:853301624d95 21 *
mcm 2:853301624d95 22 * Redistributions of source code must retain the above copyright
mcm 2:853301624d95 23 * notice, this list of conditions and the following disclaimer.
mcm 2:853301624d95 24 *
mcm 2:853301624d95 25 * Redistributions in binary form must reproduce the above copyright
mcm 2:853301624d95 26 * notice, this list of conditions and the following disclaimer in the
mcm 2:853301624d95 27 * documentation and/or other materials provided with the distribution.
mcm 2:853301624d95 28 *
mcm 2:853301624d95 29 * Neither the name of the copyright holder nor the names of the
mcm 2:853301624d95 30 * contributors may be used to endorse or promote products derived from
mcm 2:853301624d95 31 * this software without specific prior written permission.
mcm 2:853301624d95 32 *
mcm 2:853301624d95 33 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
mcm 2:853301624d95 34 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
mcm 2:853301624d95 35 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
mcm 2:853301624d95 36 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mcm 2:853301624d95 37 * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
mcm 2:853301624d95 38 * OR CONTRIBUTORS BE LIABLE FOR ANY
mcm 2:853301624d95 39 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
mcm 2:853301624d95 40 * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO,
mcm 2:853301624d95 41 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
mcm 2:853301624d95 42 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
mcm 2:853301624d95 43 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
mcm 2:853301624d95 44 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
mcm 2:853301624d95 45 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
mcm 2:853301624d95 46 * ANY WAY OUT OF THE USE OF THIS
mcm 2:853301624d95 47 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
mcm 2:853301624d95 48 *
mcm 2:853301624d95 49 * The information provided is believed to be accurate and reliable.
mcm 2:853301624d95 50 * The copyright holder assumes no responsibility
mcm 2:853301624d95 51 * for the consequences of use
mcm 2:853301624d95 52 * of such information nor for any infringement of patents or
mcm 2:853301624d95 53 * other rights of third parties which may result from its use.
mcm 2:853301624d95 54 * No license is granted by implication or otherwise under any patent or
mcm 2:853301624d95 55 * patent rights of the copyright holder.
mcm 2:853301624d95 56 *
mcm 2:853301624d95 57 * @file bme280_defs.h
mcm 2:853301624d95 58 * @date 08 Mar 2019
mcm 2:853301624d95 59 * @version 3.3.6
mcm 2:853301624d95 60 * @brief
mcm 2:853301624d95 61 *
mcm 2:853301624d95 62 */
mcm 2:853301624d95 63
mcm 2:853301624d95 64 /*! @file bme280_defs.h
mcm 2:853301624d95 65 * @brief Sensor driver for BME280 sensor
mcm 2:853301624d95 66 */
mcm 2:853301624d95 67
mcm 2:853301624d95 68 /*!
mcm 2:853301624d95 69 * @defgroup BME280 SENSOR API
mcm 2:853301624d95 70 * @brief
mcm 2:853301624d95 71 */
mcm 2:853301624d95 72 #ifndef BME280_DEFS_H_
mcm 2:853301624d95 73 #define BME280_DEFS_H_
mcm 2:853301624d95 74
mcm 2:853301624d95 75 /********************************************************/
mcm 2:853301624d95 76 /* header includes */
mcm 2:853301624d95 77 #ifdef __KERNEL__
mcm 2:853301624d95 78 #include <linux/types.h>
mcm 2:853301624d95 79 #include <linux/kernel.h>
mcm 2:853301624d95 80 #else
mcm 2:853301624d95 81 #include <stdint.h>
mcm 2:853301624d95 82 #include <stddef.h>
mcm 2:853301624d95 83 #endif
mcm 2:853301624d95 84
mcm 2:853301624d95 85 /********************************************************/
mcm 2:853301624d95 86 /*! @name Common macros */
mcm 2:853301624d95 87 /********************************************************/
mcm 2:853301624d95 88
mcm 2:853301624d95 89 /* [MANUEL] Compatible with mBed
mcm 2:853301624d95 90 #if !defined(UINT8_C) && !defined(INT8_C)
mcm 2:853301624d95 91 #define INT8_C(x) S8_C(x)
mcm 2:853301624d95 92 #define UINT8_C(x) U8_C(x)
mcm 2:853301624d95 93 #endif
mcm 2:853301624d95 94
mcm 2:853301624d95 95 #if !defined(UINT16_C) && !defined(INT16_C)
mcm 2:853301624d95 96 #define INT16_C(x) S16_C(x)
mcm 2:853301624d95 97 #define UINT16_C(x) U16_C(x)
mcm 2:853301624d95 98 #endif
mcm 2:853301624d95 99
mcm 2:853301624d95 100 #if !defined(INT32_C) && !defined(UINT32_C)
mcm 2:853301624d95 101 #define INT32_C(x) S32_C(x)
mcm 2:853301624d95 102 #define UINT32_C(x) U32_C(x)
mcm 2:853301624d95 103 #endif
mcm 2:853301624d95 104
mcm 2:853301624d95 105 #if !defined(INT64_C) && !defined(UINT64_C)
mcm 2:853301624d95 106 #define INT64_C(x) S64_C(x)
mcm 2:853301624d95 107 #define UINT64_C(x) U64_C(x)
mcm 2:853301624d95 108 #endif
mcm 2:853301624d95 109 */
mcm 2:853301624d95 110
mcm 2:853301624d95 111 #if !defined(UINT8_C) && !defined(INT8_C)
mcm 2:853301624d95 112 #define INT8_C(x) int8_t(x)
mcm 2:853301624d95 113 #define UINT8_C(x) uint8_t(x)
mcm 2:853301624d95 114 #endif
mcm 2:853301624d95 115
mcm 2:853301624d95 116 #if !defined(UINT16_C) && !defined(INT16_C)
mcm 2:853301624d95 117 #define INT16_C(x) int16_t(x)
mcm 2:853301624d95 118 #define UINT16_C(x) uint16_t(x)
mcm 2:853301624d95 119 #endif
mcm 2:853301624d95 120
mcm 2:853301624d95 121 #if !defined(INT32_C) && !defined(UINT32_C)
mcm 2:853301624d95 122 #define INT32_C(x) int32_t(x)
mcm 2:853301624d95 123 #define UINT32_C(x) uint32_t(x)
mcm 2:853301624d95 124 #endif
mcm 2:853301624d95 125
mcm 2:853301624d95 126 #if !defined(INT64_C) && !defined(UINT64_C)
mcm 2:853301624d95 127 #define INT64_C(x) int64_t(x)
mcm 2:853301624d95 128 #define UINT64_C(x) uint64_t(x)
mcm 2:853301624d95 129 #endif
mcm 2:853301624d95 130
mcm 2:853301624d95 131 /**@}*/
mcm 2:853301624d95 132 /**\name C standard macros */
mcm 2:853301624d95 133 #ifndef NULL
mcm 2:853301624d95 134 #ifdef __cplusplus
mcm 2:853301624d95 135 #define NULL 0
mcm 2:853301624d95 136 #else
mcm 2:853301624d95 137 #define NULL ((void *) 0)
mcm 2:853301624d95 138 #endif
mcm 2:853301624d95 139 #endif
mcm 2:853301624d95 140
mcm 2:853301624d95 141 /********************************************************/
mcm 2:853301624d95 142
mcm 2:853301624d95 143 #ifndef BME280_FLOAT_ENABLE
mcm 2:853301624d95 144
mcm 2:853301624d95 145 /* #define BME280_FLOAT_ENABLE */
mcm 2:853301624d95 146 #endif
mcm 2:853301624d95 147
mcm 2:853301624d95 148 #ifndef BME280_FLOAT_ENABLE
mcm 2:853301624d95 149 #ifndef BME280_64BIT_ENABLE
mcm 2:853301624d95 150 #define BME280_64BIT_ENABLE
mcm 2:853301624d95 151 #endif
mcm 2:853301624d95 152 #endif
mcm 2:853301624d95 153
mcm 2:853301624d95 154 #ifndef TRUE
mcm 2:853301624d95 155 #define TRUE UINT8_C(1)
mcm 2:853301624d95 156 #endif
mcm 2:853301624d95 157 #ifndef FALSE
mcm 2:853301624d95 158 #define FALSE UINT8_C(0)
mcm 2:853301624d95 159 #endif
mcm 2:853301624d95 160
mcm 2:853301624d95 161 /**\name I2C addresses */
mcm 2:853301624d95 162 #define BME280_I2C_ADDR_PRIM UINT8_C( ( 0x76 << 1U ) ) // [MANUEL] Address compatible with mBed
mcm 2:853301624d95 163 #define BME280_I2C_ADDR_SEC UINT8_C( ( 0x77 << 1U ) ) // [MANUEL] Address compatible with mBed
mcm 2:853301624d95 164
mcm 2:853301624d95 165 /**\name BME280 chip identifier */
mcm 2:853301624d95 166 #define BME280_CHIP_ID UINT8_C(0x60)
mcm 2:853301624d95 167
mcm 2:853301624d95 168 /**\name Register Address */
mcm 2:853301624d95 169 #define BME280_CHIP_ID_ADDR UINT8_C(0xD0)
mcm 2:853301624d95 170 #define BME280_RESET_ADDR UINT8_C(0xE0)
mcm 2:853301624d95 171 #define BME280_TEMP_PRESS_CALIB_DATA_ADDR UINT8_C(0x88)
mcm 2:853301624d95 172 #define BME280_HUMIDITY_CALIB_DATA_ADDR UINT8_C(0xE1)
mcm 2:853301624d95 173 #define BME280_PWR_CTRL_ADDR UINT8_C(0xF4)
mcm 2:853301624d95 174 #define BME280_CTRL_HUM_ADDR UINT8_C(0xF2)
mcm 2:853301624d95 175 #define BME280_CTRL_MEAS_ADDR UINT8_C(0xF4)
mcm 2:853301624d95 176 #define BME280_CONFIG_ADDR UINT8_C(0xF5)
mcm 2:853301624d95 177 #define BME280_DATA_ADDR UINT8_C(0xF7)
mcm 2:853301624d95 178
mcm 2:853301624d95 179 /**\name API success code */
mcm 2:853301624d95 180 #define BME280_OK INT8_C(0)
mcm 2:853301624d95 181
mcm 2:853301624d95 182 /**\name API error codes */
mcm 2:853301624d95 183 #define BME280_E_NULL_PTR INT8_C(-1)
mcm 2:853301624d95 184 #define BME280_E_DEV_NOT_FOUND INT8_C(-2)
mcm 2:853301624d95 185 #define BME280_E_INVALID_LEN INT8_C(-3)
mcm 2:853301624d95 186 #define BME280_E_COMM_FAIL INT8_C(-4)
mcm 2:853301624d95 187 #define BME280_E_SLEEP_MODE_FAIL INT8_C(-5)
mcm 2:853301624d95 188
mcm 2:853301624d95 189 /**\name API warning codes */
mcm 2:853301624d95 190 #define BME280_W_INVALID_OSR_MACRO INT8_C(1)
mcm 2:853301624d95 191
mcm 2:853301624d95 192 /**\name Macros related to size */
mcm 2:853301624d95 193 #define BME280_TEMP_PRESS_CALIB_DATA_LEN UINT8_C(26)
mcm 2:853301624d95 194 #define BME280_HUMIDITY_CALIB_DATA_LEN UINT8_C(7)
mcm 2:853301624d95 195 #define BME280_P_T_H_DATA_LEN UINT8_C(8)
mcm 2:853301624d95 196
mcm 2:853301624d95 197 /**\name Sensor power modes */
mcm 2:853301624d95 198 #define BME280_SLEEP_MODE UINT8_C(0x00)
mcm 2:853301624d95 199 #define BME280_FORCED_MODE UINT8_C(0x01)
mcm 2:853301624d95 200 #define BME280_NORMAL_MODE UINT8_C(0x03)
mcm 2:853301624d95 201
mcm 2:853301624d95 202 /**\name Macro to combine two 8 bit data's to form a 16 bit data */
mcm 2:853301624d95 203 #define BME280_CONCAT_BYTES(msb, lsb) (((uint16_t)msb << 8) | (uint16_t)lsb)
mcm 2:853301624d95 204
mcm 2:853301624d95 205 #define BME280_SET_BITS(reg_data, bitname, data) \
mcm 2:853301624d95 206 ((reg_data & ~(bitname##_MSK)) | \
mcm 2:853301624d95 207 ((data << bitname##_POS) & bitname##_MSK))
mcm 2:853301624d95 208 #define BME280_SET_BITS_POS_0(reg_data, bitname, data) \
mcm 2:853301624d95 209 ((reg_data & ~(bitname##_MSK)) | \
mcm 2:853301624d95 210 (data & bitname##_MSK))
mcm 2:853301624d95 211
mcm 2:853301624d95 212 #define BME280_GET_BITS(reg_data, bitname) ((reg_data & (bitname##_MSK)) >> \
mcm 2:853301624d95 213 (bitname##_POS))
mcm 2:853301624d95 214 #define BME280_GET_BITS_POS_0(reg_data, bitname) (reg_data & (bitname##_MSK))
mcm 2:853301624d95 215
mcm 2:853301624d95 216 /**\name Macros for bit masking */
mcm 2:853301624d95 217 #define BME280_SENSOR_MODE_MSK UINT8_C(0x03)
mcm 2:853301624d95 218 #define BME280_SENSOR_MODE_POS UINT8_C(0x00)
mcm 2:853301624d95 219
mcm 2:853301624d95 220 #define BME280_CTRL_HUM_MSK UINT8_C(0x07)
mcm 2:853301624d95 221 #define BME280_CTRL_HUM_POS UINT8_C(0x00)
mcm 2:853301624d95 222
mcm 2:853301624d95 223 #define BME280_CTRL_PRESS_MSK UINT8_C(0x1C)
mcm 2:853301624d95 224 #define BME280_CTRL_PRESS_POS UINT8_C(0x02)
mcm 2:853301624d95 225
mcm 2:853301624d95 226 #define BME280_CTRL_TEMP_MSK UINT8_C(0xE0)
mcm 2:853301624d95 227 #define BME280_CTRL_TEMP_POS UINT8_C(0x05)
mcm 2:853301624d95 228
mcm 2:853301624d95 229 #define BME280_FILTER_MSK UINT8_C(0x1C)
mcm 2:853301624d95 230 #define BME280_FILTER_POS UINT8_C(0x02)
mcm 2:853301624d95 231
mcm 2:853301624d95 232 #define BME280_STANDBY_MSK UINT8_C(0xE0)
mcm 2:853301624d95 233 #define BME280_STANDBY_POS UINT8_C(0x05)
mcm 2:853301624d95 234
mcm 2:853301624d95 235 /**\name Sensor component selection macros
mcm 2:853301624d95 236 * These values are internal for API implementation. Don't relate this to
mcm 2:853301624d95 237 * data sheet.
mcm 2:853301624d95 238 */
mcm 2:853301624d95 239 #define BME280_PRESS UINT8_C(1)
mcm 2:853301624d95 240 #define BME280_TEMP UINT8_C(1 << 1)
mcm 2:853301624d95 241 #define BME280_HUM UINT8_C(1 << 2)
mcm 2:853301624d95 242 #define BME280_ALL UINT8_C(0x07)
mcm 2:853301624d95 243
mcm 2:853301624d95 244 /**\name Settings selection macros */
mcm 2:853301624d95 245 #define BME280_OSR_PRESS_SEL UINT8_C(1)
mcm 2:853301624d95 246 #define BME280_OSR_TEMP_SEL UINT8_C(1 << 1)
mcm 2:853301624d95 247 #define BME280_OSR_HUM_SEL UINT8_C(1 << 2)
mcm 2:853301624d95 248 #define BME280_FILTER_SEL UINT8_C(1 << 3)
mcm 2:853301624d95 249 #define BME280_STANDBY_SEL UINT8_C(1 << 4)
mcm 2:853301624d95 250 #define BME280_ALL_SETTINGS_SEL UINT8_C(0x1F)
mcm 2:853301624d95 251
mcm 2:853301624d95 252 /**\name Oversampling macros */
mcm 2:853301624d95 253 #define BME280_NO_OVERSAMPLING UINT8_C(0x00)
mcm 2:853301624d95 254 #define BME280_OVERSAMPLING_1X UINT8_C(0x01)
mcm 2:853301624d95 255 #define BME280_OVERSAMPLING_2X UINT8_C(0x02)
mcm 2:853301624d95 256 #define BME280_OVERSAMPLING_4X UINT8_C(0x03)
mcm 2:853301624d95 257 #define BME280_OVERSAMPLING_8X UINT8_C(0x04)
mcm 2:853301624d95 258 #define BME280_OVERSAMPLING_16X UINT8_C(0x05)
mcm 2:853301624d95 259
mcm 2:853301624d95 260 /**\name Standby duration selection macros */
mcm 2:853301624d95 261 #define BME280_STANDBY_TIME_0_5_MS (0x00)
mcm 2:853301624d95 262 #define BME280_STANDBY_TIME_62_5_MS (0x01)
mcm 2:853301624d95 263 #define BME280_STANDBY_TIME_125_MS (0x02)
mcm 2:853301624d95 264 #define BME280_STANDBY_TIME_250_MS (0x03)
mcm 2:853301624d95 265 #define BME280_STANDBY_TIME_500_MS (0x04)
mcm 2:853301624d95 266 #define BME280_STANDBY_TIME_1000_MS (0x05)
mcm 2:853301624d95 267 #define BME280_STANDBY_TIME_10_MS (0x06)
mcm 2:853301624d95 268 #define BME280_STANDBY_TIME_20_MS (0x07)
mcm 2:853301624d95 269
mcm 2:853301624d95 270 /**\name Filter coefficient selection macros */
mcm 2:853301624d95 271 #define BME280_FILTER_COEFF_OFF (0x00)
mcm 2:853301624d95 272 #define BME280_FILTER_COEFF_2 (0x01)
mcm 2:853301624d95 273 #define BME280_FILTER_COEFF_4 (0x02)
mcm 2:853301624d95 274 #define BME280_FILTER_COEFF_8 (0x03)
mcm 2:853301624d95 275 #define BME280_FILTER_COEFF_16 (0x04)
mcm 2:853301624d95 276
mcm 2:853301624d95 277 /*!
mcm 2:853301624d95 278 * @brief Interface selection Enums
mcm 2:853301624d95 279 */
mcm 2:853301624d95 280 enum bme280_intf {
mcm 2:853301624d95 281 /*! SPI interface */
mcm 2:853301624d95 282 BME280_SPI_INTF,
mcm 2:853301624d95 283
mcm 2:853301624d95 284 /*! I2C interface */
mcm 2:853301624d95 285 BME280_I2C_INTF
mcm 2:853301624d95 286 };
mcm 2:853301624d95 287
mcm 2:853301624d95 288 /*!
mcm 2:853301624d95 289 * @brief Type definitions
mcm 2:853301624d95 290 */
mcm 2:853301624d95 291 typedef int8_t (*bme280_com_fptr_t)(uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len);
mcm 2:853301624d95 292 typedef void (*bme280_delay_fptr_t)(uint32_t period);
mcm 2:853301624d95 293
mcm 2:853301624d95 294 /*!
mcm 2:853301624d95 295 * @brief Calibration data
mcm 2:853301624d95 296 */
mcm 2:853301624d95 297 struct bme280_calib_data
mcm 2:853301624d95 298 {
mcm 2:853301624d95 299 /**
mcm 2:853301624d95 300 * @ Trim Variables
mcm 2:853301624d95 301 */
mcm 2:853301624d95 302
mcm 2:853301624d95 303 /**@{*/
mcm 2:853301624d95 304 uint16_t dig_T1;
mcm 2:853301624d95 305 int16_t dig_T2;
mcm 2:853301624d95 306 int16_t dig_T3;
mcm 2:853301624d95 307 uint16_t dig_P1;
mcm 2:853301624d95 308 int16_t dig_P2;
mcm 2:853301624d95 309 int16_t dig_P3;
mcm 2:853301624d95 310 int16_t dig_P4;
mcm 2:853301624d95 311 int16_t dig_P5;
mcm 2:853301624d95 312 int16_t dig_P6;
mcm 2:853301624d95 313 int16_t dig_P7;
mcm 2:853301624d95 314 int16_t dig_P8;
mcm 2:853301624d95 315 int16_t dig_P9;
mcm 2:853301624d95 316 uint8_t dig_H1;
mcm 2:853301624d95 317 int16_t dig_H2;
mcm 2:853301624d95 318 uint8_t dig_H3;
mcm 2:853301624d95 319 int16_t dig_H4;
mcm 2:853301624d95 320 int16_t dig_H5;
mcm 2:853301624d95 321 int8_t dig_H6;
mcm 2:853301624d95 322 int32_t t_fine;
mcm 2:853301624d95 323
mcm 2:853301624d95 324 /**@}*/
mcm 2:853301624d95 325 };
mcm 2:853301624d95 326
mcm 2:853301624d95 327 /*!
mcm 2:853301624d95 328 * @brief bme280 sensor structure which comprises of temperature, pressure and
mcm 2:853301624d95 329 * humidity data
mcm 2:853301624d95 330 */
mcm 2:853301624d95 331 #ifdef BME280_FLOAT_ENABLE
mcm 2:853301624d95 332 struct bme280_data
mcm 2:853301624d95 333 {
mcm 2:853301624d95 334 /*! Compensated pressure */
mcm 2:853301624d95 335 double pressure;
mcm 2:853301624d95 336
mcm 2:853301624d95 337 /*! Compensated temperature */
mcm 2:853301624d95 338 double temperature;
mcm 2:853301624d95 339
mcm 2:853301624d95 340 /*! Compensated humidity */
mcm 2:853301624d95 341 double humidity;
mcm 2:853301624d95 342 };
mcm 2:853301624d95 343 #else
mcm 2:853301624d95 344 struct bme280_data
mcm 2:853301624d95 345 {
mcm 2:853301624d95 346 /*! Compensated pressure */
mcm 2:853301624d95 347 uint32_t pressure;
mcm 2:853301624d95 348
mcm 2:853301624d95 349 /*! Compensated temperature */
mcm 2:853301624d95 350 int32_t temperature;
mcm 2:853301624d95 351
mcm 2:853301624d95 352 /*! Compensated humidity */
mcm 2:853301624d95 353 uint32_t humidity;
mcm 2:853301624d95 354 };
mcm 2:853301624d95 355 #endif /* BME280_USE_FLOATING_POINT */
mcm 2:853301624d95 356
mcm 2:853301624d95 357 /*!
mcm 2:853301624d95 358 * @brief bme280 sensor structure which comprises of uncompensated temperature,
mcm 2:853301624d95 359 * pressure and humidity data
mcm 2:853301624d95 360 */
mcm 2:853301624d95 361 struct bme280_uncomp_data
mcm 2:853301624d95 362 {
mcm 2:853301624d95 363 /*! un-compensated pressure */
mcm 2:853301624d95 364 uint32_t pressure;
mcm 2:853301624d95 365
mcm 2:853301624d95 366 /*! un-compensated temperature */
mcm 2:853301624d95 367 uint32_t temperature;
mcm 2:853301624d95 368
mcm 2:853301624d95 369 /*! un-compensated humidity */
mcm 2:853301624d95 370 uint32_t humidity;
mcm 2:853301624d95 371 };
mcm 2:853301624d95 372
mcm 2:853301624d95 373 /*!
mcm 2:853301624d95 374 * @brief bme280 sensor settings structure which comprises of mode,
mcm 2:853301624d95 375 * oversampling and filter settings.
mcm 2:853301624d95 376 */
mcm 2:853301624d95 377 struct bme280_settings
mcm 2:853301624d95 378 {
mcm 2:853301624d95 379 /*! pressure oversampling */
mcm 2:853301624d95 380 uint8_t osr_p;
mcm 2:853301624d95 381
mcm 2:853301624d95 382 /*! temperature oversampling */
mcm 2:853301624d95 383 uint8_t osr_t;
mcm 2:853301624d95 384
mcm 2:853301624d95 385 /*! humidity oversampling */
mcm 2:853301624d95 386 uint8_t osr_h;
mcm 2:853301624d95 387
mcm 2:853301624d95 388 /*! filter coefficient */
mcm 2:853301624d95 389 uint8_t filter;
mcm 2:853301624d95 390
mcm 2:853301624d95 391 /*! standby time */
mcm 2:853301624d95 392 uint8_t standby_time;
mcm 2:853301624d95 393 };
mcm 2:853301624d95 394
mcm 2:853301624d95 395 /*!
mcm 2:853301624d95 396 * @brief bme280 device structure
mcm 2:853301624d95 397 */
mcm 2:853301624d95 398 struct bme280_dev
mcm 2:853301624d95 399 {
mcm 2:853301624d95 400 /*! Chip Id */
mcm 2:853301624d95 401 uint8_t chip_id;
mcm 2:853301624d95 402
mcm 2:853301624d95 403 /*! Device Id */
mcm 2:853301624d95 404 uint8_t dev_id;
mcm 2:853301624d95 405
mcm 2:853301624d95 406 /*! SPI/I2C interface */
mcm 2:853301624d95 407 enum bme280_intf intf;
mcm 2:853301624d95 408
mcm 2:853301624d95 409 /*! Read function pointer */
mcm 2:853301624d95 410 bme280_com_fptr_t read;
mcm 2:853301624d95 411
mcm 2:853301624d95 412 /*! Write function pointer */
mcm 2:853301624d95 413 bme280_com_fptr_t write;
mcm 2:853301624d95 414
mcm 2:853301624d95 415 /*! Delay function pointer */
mcm 2:853301624d95 416 bme280_delay_fptr_t delay_ms;
mcm 2:853301624d95 417
mcm 2:853301624d95 418 /*! Trim data */
mcm 2:853301624d95 419 struct bme280_calib_data calib_data;
mcm 2:853301624d95 420
mcm 2:853301624d95 421 /*! Sensor settings */
mcm 2:853301624d95 422 struct bme280_settings settings;
mcm 2:853301624d95 423 };
mcm 2:853301624d95 424
mcm 2:853301624d95 425 #endif /* BME280_DEFS_H_ */
mcm 2:853301624d95 426 /** @}*/