LibDriver BMP280
Loading...
Searching...
No Matches
driver_bmp280.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_BMP280_H
38#define DRIVER_BMP280_H
39
40#include <stdio.h>
41#include <stdint.h>
42#include <string.h>
43
44#ifdef __cplusplus
45extern "C"{
46#endif
47
53
58
67
71typedef enum
72{
73 BMP280_ADDRESS_ADO_LOW = (0x76 << 1),
76
80typedef enum
81{
85
98
108
123
135
139typedef enum
140{
144
148typedef struct bmp280_handle_s
149{
150 uint8_t iic_addr;
151 uint8_t (*iic_init)(void);
152 uint8_t (*iic_deinit)(void);
153 uint8_t (*iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
154 uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
155 uint8_t (*spi_init)(void);
156 uint8_t (*spi_deinit)(void);
157 uint8_t (*spi_read)(uint8_t reg, uint8_t *buf, uint16_t len);
158 uint8_t (*spi_write)(uint8_t reg, uint8_t *buf, uint16_t len);
159 void (*delay_ms)(uint32_t ms);
160 void (*debug_print)(const char *const fmt, ...);
161 uint8_t inited;
162 uint8_t iic_spi;
163 uint16_t t1;
164 int16_t t2;
165 int16_t t3;
166 uint16_t p1;
167 int16_t p2;
168 int16_t p3;
169 int16_t p4;
170 int16_t p5;
171 int16_t p6;
172 int16_t p7;
173 int16_t p8;
174 int16_t p9;
175 int32_t t_fine;
177
193
197
204
211#define DRIVER_BMP280_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
212
219#define DRIVER_BMP280_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
220
227#define DRIVER_BMP280_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
228
235#define DRIVER_BMP280_LINK_IIC_READ(HANDLE, FUC) (HANDLE)->iic_read = FUC
236
243#define DRIVER_BMP280_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
244
251#define DRIVER_BMP280_LINK_SPI_INIT(HANDLE, FUC) (HANDLE)->spi_init = FUC
252
259#define DRIVER_BMP280_LINK_SPI_DEINIT(HANDLE, FUC) (HANDLE)->spi_deinit = FUC
260
267#define DRIVER_BMP280_LINK_SPI_READ(HANDLE, FUC) (HANDLE)->spi_read = FUC
268
275#define DRIVER_BMP280_LINK_SPI_WRITE(HANDLE, FUC) (HANDLE)->spi_write = FUC
276
283#define DRIVER_BMP280_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
284
291#define DRIVER_BMP280_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
292
296
303
312uint8_t bmp280_info(bmp280_info_t *info);
313
324
334uint8_t bmp280_get_interface(bmp280_handle_t *handle, bmp280_interface_t *interface);
335
345uint8_t bmp280_set_addr_pin(bmp280_handle_t *handle, bmp280_address_t addr_pin);
346
356uint8_t bmp280_get_addr_pin(bmp280_handle_t *handle, bmp280_address_t *addr_pin);
357
371uint8_t bmp280_init(bmp280_handle_t *handle);
372
384uint8_t bmp280_deinit(bmp280_handle_t *handle);
385
402uint8_t bmp280_read_temperature_pressure(bmp280_handle_t *handle, uint32_t *temperature_raw, float *temperature_c,
403 uint32_t *pressure_raw, float *pressure_pa);
404
419uint8_t bmp280_read_pressure(bmp280_handle_t *handle, uint32_t *pressure_raw, float *pressure_pa);
420
435uint8_t bmp280_read_temperature(bmp280_handle_t *handle, uint32_t *temperature_raw, float *temperature_c);
436
447uint8_t bmp280_soft_reset(bmp280_handle_t *handle);
448
460uint8_t bmp280_get_status(bmp280_handle_t *handle, uint8_t *status);
461
474
487
500
513
525uint8_t bmp280_set_mode(bmp280_handle_t *handle, bmp280_mode_t mode);
526
538uint8_t bmp280_get_mode(bmp280_handle_t *handle, bmp280_mode_t *mode);
539
552
565
577uint8_t bmp280_set_filter(bmp280_handle_t *handle, bmp280_filter_t filter);
578
590uint8_t bmp280_get_filter(bmp280_handle_t *handle, bmp280_filter_t *filter);
591
604
617
621
628
641uint8_t bmp280_set_reg(bmp280_handle_t *handle, uint8_t reg, uint8_t value);
642
655uint8_t bmp280_get_reg(bmp280_handle_t *handle, uint8_t reg, uint8_t *value);
656
660
664
665#ifdef __cplusplus
666}
667#endif
668
669#endif
uint8_t bmp280_soft_reset(bmp280_handle_t *handle)
soft reset
uint8_t bmp280_set_filter(bmp280_handle_t *handle, bmp280_filter_t filter)
set filter
uint8_t bmp280_get_pressure_oversampling(bmp280_handle_t *handle, bmp280_oversampling_t *oversampling)
get pressure oversampling
bmp280_spi_wire_t
bmp280 spi wire enumeration definition
uint8_t bmp280_info(bmp280_info_t *info)
get chip's information
uint8_t bmp280_set_mode(bmp280_handle_t *handle, bmp280_mode_t mode)
set mode
uint8_t bmp280_get_mode(bmp280_handle_t *handle, bmp280_mode_t *mode)
get mode
uint8_t bmp280_read_temperature_pressure(bmp280_handle_t *handle, uint32_t *temperature_raw, float *temperature_c, uint32_t *pressure_raw, float *pressure_pa)
read the temperature and pressure data
bmp280_filter_t
bmp280 filter enumeration definition
uint8_t bmp280_get_temperatue_oversampling(bmp280_handle_t *handle, bmp280_oversampling_t *oversampling)
get temperatue oversampling
uint8_t bmp280_deinit(bmp280_handle_t *handle)
close the chip
bmp280_mode_t
bmp280 mode enumeration definition
uint8_t bmp280_get_filter(bmp280_handle_t *handle, bmp280_filter_t *filter)
get filter
uint8_t bmp280_get_addr_pin(bmp280_handle_t *handle, bmp280_address_t *addr_pin)
get the iic address pin
bmp280_interface_t
bmp280 interface enumeration definition
bmp280_status_t
bmp280 status enumeration definition
uint8_t bmp280_set_interface(bmp280_handle_t *handle, bmp280_interface_t interface)
set the interface
uint8_t bmp280_get_standby_time(bmp280_handle_t *handle, bmp280_standby_time_t *standby_time)
get standby time
uint8_t bmp280_set_spi_wire(bmp280_handle_t *handle, bmp280_spi_wire_t spi)
set spi wire
uint8_t bmp280_read_pressure(bmp280_handle_t *handle, uint32_t *pressure_raw, float *pressure_pa)
read the pressure data
uint8_t bmp280_get_spi_wire(bmp280_handle_t *handle, bmp280_spi_wire_t *spi)
get spi wire
uint8_t bmp280_set_pressure_oversampling(bmp280_handle_t *handle, bmp280_oversampling_t oversampling)
set pressure oversampling
uint8_t bmp280_set_addr_pin(bmp280_handle_t *handle, bmp280_address_t addr_pin)
set the iic address pin
bmp280_address_t
bmp280 address enumeration definition
struct bmp280_info_s bmp280_info_t
bmp280 information structure definition
uint8_t bmp280_get_interface(bmp280_handle_t *handle, bmp280_interface_t *interface)
get the interface
uint8_t bmp280_set_standby_time(bmp280_handle_t *handle, bmp280_standby_time_t standby_time)
set standby time
bmp280_oversampling_t
bmp280 oversampling enumeration definition
uint8_t bmp280_get_status(bmp280_handle_t *handle, uint8_t *status)
get status
uint8_t bmp280_init(bmp280_handle_t *handle)
initialize the chip
struct bmp280_handle_s bmp280_handle_t
bmp280 handle structure definition
uint8_t bmp280_read_temperature(bmp280_handle_t *handle, uint32_t *temperature_raw, float *temperature_c)
read the temperature data
bmp280_standby_time_t
bmp280 standby time enumeration definition
uint8_t bmp280_set_temperatue_oversampling(bmp280_handle_t *handle, bmp280_oversampling_t oversampling)
set temperatue oversampling
@ BMP280_SPI_WIRE_4
@ BMP280_SPI_WIRE_3
@ BMP280_FILTER_OFF
@ BMP280_FILTER_COEFF_16
@ BMP280_FILTER_COEFF_8
@ BMP280_FILTER_COEFF_2
@ BMP280_FILTER_COEFF_4
@ BMP280_MODE_SLEEP
@ BMP280_MODE_NORMAL
@ BMP280_MODE_FORCED
@ BMP280_INTERFACE_SPI
@ BMP280_INTERFACE_IIC
@ BMP280_STATUS_IM_UPDATE
@ BMP280_STATUS_MEASURING
@ BMP280_ADDRESS_ADO_HIGH
@ BMP280_ADDRESS_ADO_LOW
@ BMP280_OVERSAMPLING_x1
@ BMP280_OVERSAMPLING_x4
@ BMP280_OVERSAMPLING_x16
@ BMP280_OVERSAMPLING_SKIP
@ BMP280_OVERSAMPLING_x8
@ BMP280_OVERSAMPLING_x2
@ BMP280_STANDBY_TIME_1000_MS
@ BMP280_STANDBY_TIME_62P5_MS
@ BMP280_STANDBY_TIME_0P5_MS
@ BMP280_STANDBY_TIME_4000_MS
@ BMP280_STANDBY_TIME_2000_MS
@ BMP280_STANDBY_TIME_500_MS
@ BMP280_STANDBY_TIME_125_MS
@ BMP280_STANDBY_TIME_250_MS
uint8_t bmp280_set_reg(bmp280_handle_t *handle, uint8_t reg, uint8_t value)
set the chip register
uint8_t bmp280_get_reg(bmp280_handle_t *handle, uint8_t reg, uint8_t *value)
get the chip register
bmp280 handle structure definition
uint8_t(* spi_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* spi_read)(uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* spi_write)(uint8_t reg, uint8_t *buf, uint16_t len)
void(* debug_print)(const char *const fmt,...)
uint8_t(* iic_init)(void)
uint8_t(* spi_deinit)(void)
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_deinit)(void)
bmp280 information structure definition
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]