barometer9 2.1.0.0
barometer9.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef BAROMETER9_H
29#define BAROMETER9_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
35#include "drv_digital_out.h"
36#include "drv_digital_in.h"
37#include "drv_i2c_master.h"
38#include "drv_spi_master.h"
39#include "spi_specifics.h"
40
61#define BAROMETER9_REG_PART_ID0 0x00
62#define BAROMETER9_REG_PART_ID1 0x01
63#define BAROMETER9_REG_UIND0 0x02
64#define BAROMETER9_REG_UIND1 0x03
65#define BAROMETER9_REG_UIND2 0x04
66#define BAROMETER9_REG_UIND3 0x05
67#define BAROMETER9_MODE_CFG 0x06
68#define BAROMETER9_MEAS_CFG 0x07
69#define BAROMETER9_STBY_CFG 0x08
70#define BAROMETER9_OVS_CFG 0x09
71#define BAROMETER9_MAVG_CFG 0x0A
72#define BAROMETER9_INTF_CFG 0x0B
73#define BAROMETER9_INT_CFG 0x0C
74#define BAROMETER9_PRESS_LO_XL_CFG 0x0D
75#define BAROMETER9_PRESS_LO_L_CFG 0x0E
76#define BAROMETER9_PRESS_LO_H_CFG 0x0F
77#define BAROMETER9_PRESS_HI_XL_CFG 0x10
78#define BAROMETER9_PRESS_HI_L_CFG 0x11
79#define BAROMETER9_PRESS_HI_H_CFG 0x12
80#define BAROMETER9_FIFO_CFG 0x13
81#define BAROMETER9_DATA_STAT 0x14
82#define BAROMETER9_FIFO_STAT 0x15
83#define BAROMETER9_INT_STAT 0x16
84#define BAROMETER9_PRESS_OUT_XL 0x17
85#define BAROMETER9_PRESS_OUT_L 0x18
86#define BAROMETER9_PRESS_OUT_H 0x19
87#define BAROMETER9_TEMP_OUT_L 0x1A
88#define BAROMETER9_TEMP_OUT_H 0x1B
89#define BAROMETER9_PRESS_OUT_F_XL 0x27
90#define BAROMETER9_PRESS_OUT_F_L 0x28
91#define BAROMETER9_PRESS_OUT_F_H 0x29
92 // barometer9_reg
94
109#define BAROMETER9_HIGH_POWER_MODE 0x80
110#define BAROMETER9_LOW_POWER_MODE 0x00
111#define BAROMETER9_DIRECT_PATH 0x00
112#define BAROMETER9_FIFO_MODE 0x20
113#define BAROMETER9_AVERAGE_MODE 0x40
114#define BAROMETER9_IDLE_MODE 0x00
115#define BAROMETER9_MEASURMENT_MODE 0x10
116#define BAROMETER9_SW_RESET 0x08
117#define BAROMETER9_READ_PRESS_ONLY 0x01
118#define BAROMETER9_READ_TEMP_ONLY 0x02
119#define BAROMETER9_READ_PRES_AND_TEMP 0x03
120
125#define BAROMETER9_P_CONV_0 0x00
126#define BAROMETER9_P_CONV_1 0x08
127#define BAROMETER9_P_CONV_2 0x10
128#define BAROMETER9_PT_RATE_1 0x00
129#define BAROMETER9_PT_RATE_4 0x01
130#define BAROMETER9_PT_RATE_8 0x02
131#define BAROMETER9_PT_RATE_16 0x03
132#define BAROMETER9_PT_RATE_32 0x04
133#define BAROMETER9_PT_RATE_64 0x05
134#define BAROMETER9_PT_RATE_128 0x06
135#define BAROMETER9_PT_RATE_256 0x07
136
141#define BAROMETER9_TEMPERATURE_CON_CONST 128
142#define BAROMETER9_K_TO_C_CON_CONST 273.15f
143#define BAROMETER9_PRESSURE_CON_CONST 64
144
149#define BAROMETER9_DEVICE_ID 0x0321
150
156#define BAROMETER9_DEVICE_ADDRESS 0x20
157
166#define BAROMETER9_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
167#define BAROMETER9_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
168 // barometer9_set
170
185#define BAROMETER9_MAP_MIKROBUS( cfg, mikrobus ) \
186 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
187 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
188 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
189 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
190 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
191 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
192 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
193 // barometer9_map // barometer9
196
201typedef enum
202{
207
212struct barometer9_s;
213typedef err_t ( *barometer9_master_io_t )( struct barometer9_s*, uint8_t, uint8_t*, uint8_t );
219typedef struct barometer9_s
220{
221 digital_in_t int_pin;
223 i2c_master_t i2c;
224 spi_master_t spi;
227 pin_name_t chip_select;
234
239typedef struct
240{
241 pin_name_t scl;
242 pin_name_t sda;
243 pin_name_t miso;
244 pin_name_t mosi;
245 pin_name_t sck;
246 pin_name_t cs;
247 pin_name_t int_pin;
249 uint32_t i2c_speed;
250 uint8_t i2c_address;
252 uint32_t spi_speed;
253 spi_master_mode_t spi_mode;
254 spi_master_chip_select_polarity_t cs_polarity;
259
264typedef enum
265{
268
270
287
303
318
332
347err_t barometer9_generic_write ( barometer9_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
348
363err_t barometer9_generic_read ( barometer9_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
364
377err_t barometer9_read_part_id ( barometer9_t *ctx, uint16_t *part_id );
378
391err_t barometer9_get_temperature ( barometer9_t *ctx, float *temperature );
392
405err_t barometer9_get_pressure ( barometer9_t *ctx, float *pressure );
406
419
420#ifdef __cplusplus
421}
422#endif
423#endif // BAROMETER9_H
424 // barometer9
426
427// ------------------------------------------------------------------------ END
barometer9_return_value_t
Barometer 9 Click return value data.
Definition: barometer9.h:265
@ BAROMETER9_ERROR
Definition: barometer9.h:267
@ BAROMETER9_OK
Definition: barometer9.h:266
struct barometer9_s barometer9_t
Barometer 9 Click context object.
barometer9_drv_t
Barometer 9 Click driver selector.
Definition: barometer9.h:202
@ BAROMETER9_DRV_SEL_SPI
Definition: barometer9.h:203
@ BAROMETER9_DRV_SEL_I2C
Definition: barometer9.h:204
err_t(* barometer9_master_io_t)(struct barometer9_s *, uint8_t, uint8_t *, uint8_t)
Definition: barometer9.h:213
err_t barometer9_generic_read(barometer9_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Barometer 9 data reading function.
void barometer9_cfg_setup(barometer9_cfg_t *cfg)
Barometer 9 configuration object setup function.
err_t barometer9_init(barometer9_t *ctx, barometer9_cfg_t *cfg)
Barometer 9 initialization function.
err_t barometer9_read_part_id(barometer9_t *ctx, uint16_t *part_id)
Barometer 9 Device ID reading function.
err_t barometer9_get_temperature(barometer9_t *ctx, float *temperature)
Barometer 9 temperature reading function.
err_t barometer9_get_pressure(barometer9_t *ctx, float *pressure)
Barometer 9 pressure reading function.
err_t barometer9_generic_write(barometer9_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Barometer 9 data writing function.
err_t barometer9_default_cfg(barometer9_t *ctx)
Barometer 9 default configuration function.
err_t barometer9_sw_reset(barometer9_t *ctx)
Barometer 9 software reset function.
void barometer9_drv_interface_sel(barometer9_cfg_t *cfg, barometer9_drv_t drv_sel)
Barometer 9 driver interface setup function.
This file contains SPI specific macros, functions, etc.
Barometer 9 Click configuration object.
Definition: barometer9.h:240
uint32_t i2c_speed
Definition: barometer9.h:249
spi_master_chip_select_polarity_t cs_polarity
Definition: barometer9.h:254
barometer9_drv_t drv_sel
Definition: barometer9.h:256
pin_name_t sck
Definition: barometer9.h:245
spi_master_mode_t spi_mode
Definition: barometer9.h:253
pin_name_t mosi
Definition: barometer9.h:244
uint32_t spi_speed
Definition: barometer9.h:252
pin_name_t scl
Definition: barometer9.h:241
pin_name_t int_pin
Definition: barometer9.h:247
pin_name_t miso
Definition: barometer9.h:243
pin_name_t sda
Definition: barometer9.h:242
pin_name_t cs
Definition: barometer9.h:246
uint8_t i2c_address
Definition: barometer9.h:250
Barometer 9 Click context object.
Definition: barometer9.h:220
spi_master_t spi
Definition: barometer9.h:224
barometer9_master_io_t write_f
Definition: barometer9.h:230
barometer9_drv_t drv_sel
Definition: barometer9.h:228
digital_in_t int_pin
Definition: barometer9.h:221
i2c_master_t i2c
Definition: barometer9.h:223
uint8_t slave_address
Definition: barometer9.h:226
pin_name_t chip_select
Definition: barometer9.h:227
barometer9_master_io_t read_f
Definition: barometer9.h:231