diff --git a/Include/bme280.h b/Include/bme280.h new file mode 100644 --- /dev/null +++ b/Include/bme280.h @@ -0,0 +1,85 @@ +#ifndef _BME280_H_ +#define _BME280_H_ + +#include +#include +#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_ */