Files @ 55d6f1467ce4
Branch filter:

Location: windsonde/Include/bme280.h - annotation

ethanzonca
Add friendly mode and associated timeout
#ifndef _BME280_H_
#define _BME280_H_

#include <stdbool.h>
#include <inttypes.h>
#include "stm32f0xx_hal.h"

#define BME280_I2C_ADDR 0b11101100

#define PIN_BME280_SDA GPIO_PIN_7
#define PIN_BME280_SCL GPIO_PIN_6
#define PORT_BME280 GPIOB


//Register names
#define BME280_DIG_T1_LSB_REG			0x88
#define BME280_DIG_T1_MSB_REG			0x89
#define BME280_DIG_T2_LSB_REG			0x8A
#define BME280_DIG_T2_MSB_REG			0x8B
#define BME280_DIG_T3_LSB_REG			0x8C
#define BME280_DIG_T3_MSB_REG			0x8D
#define BME280_DIG_P1_LSB_REG			0x8E
#define BME280_DIG_P1_MSB_REG			0x8F
#define BME280_DIG_P2_LSB_REG			0x90
#define BME280_DIG_P2_MSB_REG			0x91
#define BME280_DIG_P3_LSB_REG			0x92
#define BME280_DIG_P3_MSB_REG			0x93
#define BME280_DIG_P4_LSB_REG			0x94
#define BME280_DIG_P4_MSB_REG			0x95
#define BME280_DIG_P5_LSB_REG			0x96
#define BME280_DIG_P5_MSB_REG			0x97
#define BME280_DIG_P6_LSB_REG			0x98
#define BME280_DIG_P6_MSB_REG			0x99
#define BME280_DIG_P7_LSB_REG			0x9A
#define BME280_DIG_P7_MSB_REG			0x9B
#define BME280_DIG_P8_LSB_REG			0x9C
#define BME280_DIG_P8_MSB_REG			0x9D
#define BME280_DIG_P9_LSB_REG			0x9E
#define BME280_DIG_P9_MSB_REG			0x9F
#define BME280_DIG_H1_REG				0xA1
#define BME280_CHIP_ID_REG				0xD0 //Chip ID
#define BME280_RST_REG					0xE0 //Softreset Reg
#define BME280_DIG_H2_LSB_REG			0xE1
#define BME280_DIG_H2_MSB_REG			0xE2
#define BME280_DIG_H3_REG				0xE3
#define BME280_DIG_H4_MSB_REG			0xE4
#define BME280_DIG_H4_LSB_REG			0xE5
#define BME280_DIG_H5_MSB_REG			0xE6
#define BME280_DIG_H6_REG				0xE7
#define BME280_CTRL_HUMIDITY_REG		0xF2 //Ctrl Humidity Reg
#define BME280_STAT_REG					0xF3 //Status Reg
#define BME280_CTRL_MEAS_REG			0xF4 //Ctrl Measure Reg
#define BME280_CONFIG_REG				0xF5 //Configuration Reg
#define BME280_PRESSURE_MSB_REG			0xF7 //Pressure MSB
#define BME280_PRESSURE_LSB_REG			0xF8 //Pressure LSB
#define BME280_PRESSURE_XLSB_REG		0xF9 //Pressure XLSB
#define BME280_TEMPERATURE_MSB_REG		0xFA //Temperature MSB
#define BME280_TEMPERATURE_LSB_REG		0xFB //Temperature LSB
#define BME280_TEMPERATURE_XLSB_REG		0xFC //Temperature XLSB
#define BME280_HUMIDITY_MSB_REG			0xFD //Humidity MSB
#define BME280_HUMIDITY_LSB_REG			0xFE //Humidity LSB

bool bme280_init(void);
void bme280_update(void);
void bme280_update_pressure(void);
void bme280_update_temperature(void);
void bme280_update_humidity(void);
int32_t bme280_get_pressure(void);
int32_t bme280_get_temperature(void);
int32_t bme280_get_humidity(void);
int32_t bme280_read_pressure_raw(void);
int32_t bme280_read_temperature_raw(void);
int32_t bme280_read_humidity_raw(void);
int32_t bme280_read_pressure_raw(void);
int32_t bme280_read_temperature_raw(void);
int32_t bme280_read_humidity_raw(void);
uint8_t bme280_read_byte(uint8_t register_address);
void bme280_read(uint8_t register_address, uint8_t* data, uint8_t length);
void bme280_write(uint8_t register_address, uint8_t data);
int32_t bme280_convert_temperature(int32_t adc_T);
uint32_t bme280_convert_pressure(int32_t adc_P);
uint32_t bme280_convert_humidity(int32_t adc_H);
I2C_HandleTypeDef* bme280_get_i2c_handle(void);

#endif /* _BME280_H_ */