/* * bme280.h * * Created on: Feb 26, 2023 * Author: Daniel Peter Chokola * License: Beerware - Use this code however you'd like. If you find it * useful you can buy me a beer some time. */ #ifndef BME280_H_ #define BME280_H_ /* Includes */ #include #include "spi.h" /* Definitions */ #define BME280_CAL_LEN (32u) /* Data Structures */ typedef struct bme280_s { SPI_HandleTypeDef *hspi; GPIO_TypeDef *port; uint16_t pin; union __attribute__((packed, aligned(1))) bme280_calib_u { uint8_t byte[BME280_CAL_LEN]; struct __attribute__((packed, aligned(1))) bme280_calib_s { uint16_t cal_t1; int16_t cal_t2; int16_t cal_t3; uint16_t cal_p1; int16_t cal_p2; int16_t cal_p3; int16_t cal_p4; int16_t cal_p5; int16_t cal_p6; int16_t cal_p7; int16_t cal_p8; int16_t cal_p9; uint8_t cal_h1; int16_t cal_h2; uint8_t cal_h3; int16_t cal_h4; int16_t cal_h5; int8_t cal_h6; } field; } cal; int32_t t_fine; } bme280_t; /* Function Prototypes */ int32_t bme280_init(bme280_t *bme280, SPI_HandleTypeDef *hspi, GPIO_TypeDef *port, uint16_t pin); int32_t bme280_temp_get(bme280_t *bme280); int32_t bme280_press_get(bme280_t *bme280); int32_t bme280_hum_get(bme280_t *bme280); #endif /* BME280_H_ */