BME280 Driver 2.0.x
Driver for BME280 sensor
Loading...
Searching...
No Matches
bme280.c File Reference

Source code for BME280 Driver. More...

#include <stdint.h>
#include <stddef.h>
#include "bme280.h"
Include dependency graph for bme280.c:

Data Structures

struct  adc_regs
 keeps raw adc values from sensor, used in bme280_read_compensate function More...
 

Macros

#define CAT_I16T(msb, lsb)   ((int16_t)(((int16_t)msb << 8) | (int16_t)lsb))
 concatenate two bytes into signed half-word
 
#define CAT_UI16T(msb, lsb)   ((uint16_t)(((uint16_t)msb << 8) | (uint16_t)lsb))
 concatenate two bytes into unsigned half-word
 
#define IS_NULL(x)   ((NULL == x))
 check if x is null
 

Enumerations

enum  { read_all = 0 , read_temp , read_press , read_hum }
 type of read, used as parameter to call bme280_read_compensate function
 
enum  { sleep_mode = 0x00 , forced_mode = 0x01 , normal_mode = 0x03 }
 possible value of "mode" variable inside BME280_t structure
 
enum  { not_initialized = 0x00 , initialized }
 possible value of "initialized" variabie inside BME280_t structure
 

Functions

static int8_t bme280_read_compensation_parameters (BME280_t *Dev)
 read compensation data
 
static int8_t bme280_read_compensate (uint8_t read_type, BME280_t *Dev, BME280_S32_t *temp, BME280_U32_t *press, BME280_U32_t *hum)
 read and compensate measured values
 
static BME280_S32_t bme280_parse_press_temp_s32t (uint8_t *raw)
 convert buffer to single variable
 
static BME280_S32_t bme280_parse_hum_s32t (uint8_t *raw)
 convert buffer to single variable
 
static BME280_S32_t bme280_compensate_t_s32t (BME280_t *Dev, BME280_S32_t adc_T)
 compensate temperature value
 
static BME280_U32_t bme280_compensate_p_u32t (BME280_t *Dev, BME280_S32_t adc_P)
 compensate pressure value
 
static BME280_U32_t bme280_compensate_h_u32t (BME280_t *Dev, BME280_S32_t adc_H)
 compensate humidity value
 
static void bme280_convert_t_S32_struct (BME280_S32_t temp, BME280_Data_t *data)
 convert temperature to structure
 
static void bme280_convert_t_S32_float (BME280_S32_t temp_in, float *temp_out)
 convert temperature to float
 
static void bme280_convert_p_U32_struct (BME280_U32_t press, BME280_Data_t *data)
 convert pressure to structure
 
static void bme280_convert_p_U32_float (BME280_U32_t press_in, float *press_out)
 convert pressure to structure
 
static void bme280_convert_h_U32_struct (BME280_U32_t hum, BME280_Data_t *data)
 convert humidity to structure
 
static void bme280_convert_h_U32_float (BME280_U32_t hum_in, float *hum_out)
 convert humidity to structure
 
static int8_t bme280_is_normal_mode (BME280_t *Dev)
 check for normal mode
 
static int8_t bme280_is_sleep_mode (BME280_t *Dev)
 check for sleep mode
 
static int8_t bme280_set_forced_mode (BME280_t *Dev, uint8_t *delay)
 check and set forced mode
 
static void bme280_osrs_to_oversampling (uint8_t *osrs)
 change osrs_x reg value to oversampling
 
static int8_t bme280_busy_check (BME280_t *Dev)
 check if sensor is busy
 
int8_t BME280_Init (BME280_t *Dev, BME280_Driver_t *Driver)
 Function to initialize sensor and resources.
 
int8_t BME280_ConfigureAll (BME280_t *Dev, BME280_Config_t *Config)
 Function to set all sensor settings at once.
 
int8_t BME280_Reset (BME280_t *Dev)
 Function to perform sensor's software reset.
 
int8_t BME280_GetMode (BME280_t *Dev, uint8_t *Mode)
 Function gets current Operating Mode from sensor.
 
int8_t BME280_GetPOvs (BME280_t *Dev, uint8_t *POvs)
 Function gets current pressure Oversampling from sensor.
 
int8_t BME280_GetTOvs (BME280_t *Dev, uint8_t *TOvs)
 Function gets current temperature Oversampling from sensor.
 
int8_t BME280_GetHOvs (BME280_t *Dev, uint8_t *HOvs)
 Function gets current humidity Oversampling from sensor.
 
int8_t BME280_GetTStby (BME280_t *Dev, uint8_t *TStby)
 Function gets current Standby Time from sensor.
 
int8_t BME280_GetTFilter (BME280_t *Dev, uint8_t *Filter)
 Function gets current IIR Filter coeficient from sensor.
 
int8_t BME280_Is3WireSPIEnabled (BME280_t *Dev, uint8_t *Result)
 Function checks if 3-wire SPI is enabled.
 
int8_t BME280_SetMode (BME280_t *Dev, uint8_t Mode)
 Function sets sensor's Operating Mode.
 
int8_t BME280_SetPOvs (BME280_t *Dev, uint8_t POvs)
 Function sets sensor's pressure Oversampling.
 
int8_t BME280_SetTOvs (BME280_t *Dev, uint8_t TOvs)
 Function sets sensor's temperature Oversampling.
 
int8_t BME280_SetHOvs (BME280_t *Dev, uint8_t HOvs)
 Function sets sensor's humidity Oversampling.
 
int8_t BME280_SetTStby (BME280_t *Dev, uint8_t TStby)
 Function sets sensor's Standby Time.
 
int8_t BME280_SetFilter (BME280_t *Dev, uint8_t Filter)
 Function sets sensor's IIR Filter coeficient.
 
int8_t BME280_Enable3WireSPI (BME280_t *Dev)
 Function enables 3-wire SPI bus.
 
int8_t BME280_Disable3WireSPI (BME280_t *Dev)
 Function disables 3-wire SPI bus.
 
int8_t BME280_ReadAllLast (BME280_t *Dev, BME280_Data_t *Data)
 Function reads all measured data at once.
 
int8_t BME280_ReadTempLast (BME280_t *Dev, int8_t *TempInt, uint8_t *TempFract)
 Function reads last measured temperature.
 
int8_t BME280_ReadPressLast (BME280_t *Dev, uint16_t *PressInt, uint16_t *PressFract)
 Function reads last measured pressure.
 
int8_t BME280_ReadHumLast (BME280_t *Dev, uint8_t *HumInt, uint16_t *HumFract)
 Function reads last measured humidity.
 
int8_t BME280_ReadAllForce (BME280_t *Dev, BME280_Data_t *Data)
 Function forces single measure and returns all data as integers.
 
int8_t BME280_ReadTempForce (BME280_t *Dev, int8_t *TempInt, uint8_t *TempFract)
 Function forces single measure and returns temperatrue as integers (forced mode)
 
int8_t BME280_ReadPressForce (BME280_t *Dev, uint16_t *PressInt, uint16_t *PressFract)
 Function forces single measure and returns pressure as integers (forced mode)
 
int8_t BME280_ReadHumForce (BME280_t *Dev, uint8_t *HumInt, uint16_t *HumFract)
 Function forces single measure and returns humidity as integers (forced mode)
 
int8_t BME280_ReadAllLast_F (BME280_t *Dev, BME280_DataF_t *Data)
 Function reads all measured data at once.
 
int8_t BME280_ReadTempLast_F (BME280_t *Dev, float *Temp)
 Function reads last measured temperature.
 
int8_t BME280_ReadPressLast_F (BME280_t *Dev, float *Press)
 Function reads last measured pressure.
 
int8_t BME280_ReadHumLast_F (BME280_t *Dev, float *Hum)
 Function reads last measured humidity.
 
int8_t BME280_ReadAllForce_F (BME280_t *Dev, BME280_DataF_t *Data)
 Function forces single measure and returns all data as floats.
 
int8_t BME280_ReadTempForce_F (BME280_t *Dev, float *Temp)
 Function forces single measure and returns temperatrue as floats (forced mode)
 
int8_t BME280_ReadPressForce_F (BME280_t *Dev, float *Press)
 Function forces single measure and returns pressure as floats (forced mode)
 
int8_t BME280_ReadHumForce_F (BME280_t *Dev, float *Hum)
 Function forces single measure and returns humidity as floats (forced mode)
 

Variables

uint8_t press_raw [BME280_PRESS_ADC_LEN]
 keeps raw adc value of pressure
 
uint8_t temp_raw [BME280_TEMP_ADC_LEN]
 keeps raw adc value of temperature
 
uint8_t hum_raw [BME280_HUM_ADC_LEN]
 keeps raw adc value of humidity
 

Detailed Description

Source code for BME280 Driver.

Author
Ɓukasz Juraszek / JuraszekL
Date
20.04.2023
Note
https://github.com/JuraszekL/BME280_Driver