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
32 extern "C"{
33 #endif
34 
39 #ifdef PREINIT_SUPPORTED
40 #include "preinit.h"
41 #endif
42 
43 #ifdef MikroCCoreVersion
44  #if MikroCCoreVersion >= 1
45  #include "delays.h"
46  #endif
47 #endif
48 
49 #include "drv_digital_out.h"
50 #include "drv_digital_in.h"
51 #include "drv_i2c_master.h"
52 #include "drv_spi_master.h"
53 #include "spi_specifics.h"
54 
75 #define BAROMETER9_REG_PART_ID0 0x00
76 #define BAROMETER9_REG_PART_ID1 0x01
77 #define BAROMETER9_REG_UIND0 0x02
78 #define BAROMETER9_REG_UIND1 0x03
79 #define BAROMETER9_REG_UIND2 0x04
80 #define BAROMETER9_REG_UIND3 0x05
81 #define BAROMETER9_MODE_CFG 0x06
82 #define BAROMETER9_MEAS_CFG 0x07
83 #define BAROMETER9_STBY_CFG 0x08
84 #define BAROMETER9_OVS_CFG 0x09
85 #define BAROMETER9_MAVG_CFG 0x0A
86 #define BAROMETER9_INTF_CFG 0x0B
87 #define BAROMETER9_INT_CFG 0x0C
88 #define BAROMETER9_PRESS_LO_XL_CFG 0x0D
89 #define BAROMETER9_PRESS_LO_L_CFG 0x0E
90 #define BAROMETER9_PRESS_LO_H_CFG 0x0F
91 #define BAROMETER9_PRESS_HI_XL_CFG 0x10
92 #define BAROMETER9_PRESS_HI_L_CFG 0x11
93 #define BAROMETER9_PRESS_HI_H_CFG 0x12
94 #define BAROMETER9_FIFO_CFG 0x13
95 #define BAROMETER9_DATA_STAT 0x14
96 #define BAROMETER9_FIFO_STAT 0x15
97 #define BAROMETER9_INT_STAT 0x16
98 #define BAROMETER9_PRESS_OUT_XL 0x17
99 #define BAROMETER9_PRESS_OUT_L 0x18
100 #define BAROMETER9_PRESS_OUT_H 0x19
101 #define BAROMETER9_TEMP_OUT_L 0x1A
102 #define BAROMETER9_TEMP_OUT_H 0x1B
103 #define BAROMETER9_PRESS_OUT_F_XL 0x27
104 #define BAROMETER9_PRESS_OUT_F_L 0x28
105 #define BAROMETER9_PRESS_OUT_F_H 0x29
106  // barometer9_reg
108 
123 #define BAROMETER9_HIGH_POWER_MODE 0x80
124 #define BAROMETER9_LOW_POWER_MODE 0x00
125 #define BAROMETER9_DIRECT_PATH 0x00
126 #define BAROMETER9_FIFO_MODE 0x20
127 #define BAROMETER9_AVERAGE_MODE 0x40
128 #define BAROMETER9_IDLE_MODE 0x00
129 #define BAROMETER9_MEASURMENT_MODE 0x10
130 #define BAROMETER9_SW_RESET 0x08
131 #define BAROMETER9_READ_PRESS_ONLY 0x01
132 #define BAROMETER9_READ_TEMP_ONLY 0x02
133 #define BAROMETER9_READ_PRES_AND_TEMP 0x03
134 
139 #define BAROMETER9_P_CONV_0 0x00
140 #define BAROMETER9_P_CONV_1 0x08
141 #define BAROMETER9_P_CONV_2 0x10
142 #define BAROMETER9_PT_RATE_1 0x00
143 #define BAROMETER9_PT_RATE_4 0x01
144 #define BAROMETER9_PT_RATE_8 0x02
145 #define BAROMETER9_PT_RATE_16 0x03
146 #define BAROMETER9_PT_RATE_32 0x04
147 #define BAROMETER9_PT_RATE_64 0x05
148 #define BAROMETER9_PT_RATE_128 0x06
149 #define BAROMETER9_PT_RATE_256 0x07
150 
155 #define BAROMETER9_TEMPERATURE_CON_CONST 128
156 #define BAROMETER9_K_TO_C_CON_CONST 273.15f
157 #define BAROMETER9_PRESSURE_CON_CONST 64
158 
163 #define BAROMETER9_DEVICE_ID 0x0321
164 
170 #define BAROMETER9_DEVICE_ADDRESS 0x20
171 
180 #define BAROMETER9_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
181 #define BAROMETER9_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
182  // barometer9_set
184 
199 #define BAROMETER9_MAP_MIKROBUS( cfg, mikrobus ) \
200  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
201  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
202  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
203  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
204  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
205  cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
206  cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
207  // barometer9_map // barometer9
210 
215 typedef enum
216 {
221 
226 struct barometer9_s;
227 typedef err_t ( *barometer9_master_io_t )( struct barometer9_s*, uint8_t, uint8_t*, uint8_t );
233 typedef struct barometer9_s
234 {
235  digital_in_t int_pin;
237  i2c_master_t i2c;
238  spi_master_t spi;
240  uint8_t slave_address;
241  pin_name_t chip_select;
248 
253 typedef struct
254 {
255  pin_name_t scl;
256  pin_name_t sda;
257  pin_name_t miso;
258  pin_name_t mosi;
259  pin_name_t sck;
260  pin_name_t cs;
261  pin_name_t int_pin;
263  uint32_t i2c_speed;
264  uint8_t i2c_address;
266  uint32_t spi_speed;
267  spi_master_mode_t spi_mode;
268  spi_master_chip_select_polarity_t cs_polarity;
273 
278 typedef enum
279 {
281  BAROMETER9_ERROR = -1
282 
284 
301 
317 
332 
346 
361 err_t barometer9_generic_write ( barometer9_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
362 
377 err_t barometer9_generic_read ( barometer9_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
378 
391 err_t barometer9_read_part_id ( barometer9_t *ctx, uint16_t *part_id );
392 
405 err_t barometer9_get_temperature ( barometer9_t *ctx, float *temperature );
406 
419 err_t barometer9_get_pressure ( barometer9_t *ctx, float *pressure );
420 
433 
434 #ifdef __cplusplus
435 }
436 #endif
437 #endif // BAROMETER9_H
438  // barometer9
440 
441 // ------------------------------------------------------------------------ END
barometer9_generic_write
err_t barometer9_generic_write(barometer9_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Barometer 9 data writing function.
barometer9_cfg_t::mosi
pin_name_t mosi
Definition: barometer9.h:258
barometer9_cfg_t::miso
pin_name_t miso
Definition: barometer9.h:257
barometer9_sw_reset
err_t barometer9_sw_reset(barometer9_t *ctx)
Barometer 9 software reset function.
barometer9_s::chip_select
pin_name_t chip_select
Definition: barometer9.h:241
barometer9_cfg_t
Barometer 9 Click configuration object.
Definition: barometer9.h:254
barometer9_t
struct barometer9_s barometer9_t
Barometer 9 Click context object.
spi_specifics.h
This file contains SPI specific macros, functions, etc.
barometer9_s
Barometer 9 Click context object.
Definition: barometer9.h:234
barometer9_get_temperature
err_t barometer9_get_temperature(barometer9_t *ctx, float *temperature)
Barometer 9 temperature reading function.
barometer9_s::write_f
barometer9_master_io_t write_f
Definition: barometer9.h:244
barometer9_s::read_f
barometer9_master_io_t read_f
Definition: barometer9.h:245
barometer9_get_pressure
err_t barometer9_get_pressure(barometer9_t *ctx, float *pressure)
Barometer 9 pressure reading function.
barometer9_cfg_t::drv_sel
barometer9_drv_t drv_sel
Definition: barometer9.h:270
barometer9_s::i2c
i2c_master_t i2c
Definition: barometer9.h:237
barometer9_read_part_id
err_t barometer9_read_part_id(barometer9_t *ctx, uint16_t *part_id)
Barometer 9 Device ID reading function.
barometer9_cfg_t::sda
pin_name_t sda
Definition: barometer9.h:256
barometer9_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: barometer9.h:263
BAROMETER9_DRV_SEL_SPI
@ BAROMETER9_DRV_SEL_SPI
Definition: barometer9.h:217
barometer9_s::drv_sel
barometer9_drv_t drv_sel
Definition: barometer9.h:242
BAROMETER9_ERROR
@ BAROMETER9_ERROR
Definition: barometer9.h:281
barometer9_s::slave_address
uint8_t slave_address
Definition: barometer9.h:240
barometer9_cfg_t::cs_polarity
spi_master_chip_select_polarity_t cs_polarity
Definition: barometer9.h:268
barometer9_generic_read
err_t barometer9_generic_read(barometer9_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Barometer 9 data reading function.
barometer9_cfg_t::sck
pin_name_t sck
Definition: barometer9.h:259
barometer9_cfg_t::spi_speed
uint32_t spi_speed
Definition: barometer9.h:266
BAROMETER9_OK
@ BAROMETER9_OK
Definition: barometer9.h:280
barometer9_cfg_t::scl
pin_name_t scl
Definition: barometer9.h:255
barometer9_cfg_t::int_pin
pin_name_t int_pin
Definition: barometer9.h:261
barometer9_cfg_t::i2c_address
uint8_t i2c_address
Definition: barometer9.h:264
barometer9_init
err_t barometer9_init(barometer9_t *ctx, barometer9_cfg_t *cfg)
Barometer 9 initialization function.
barometer9_master_io_t
err_t(* barometer9_master_io_t)(struct barometer9_s *, uint8_t, uint8_t *, uint8_t)
Definition: barometer9.h:227
BAROMETER9_DRV_SEL_I2C
@ BAROMETER9_DRV_SEL_I2C
Definition: barometer9.h:218
barometer9_s::spi
spi_master_t spi
Definition: barometer9.h:238
barometer9_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: barometer9.h:267
barometer9_default_cfg
err_t barometer9_default_cfg(barometer9_t *ctx)
Barometer 9 default configuration function.
barometer9_drv_interface_sel
void barometer9_drv_interface_sel(barometer9_cfg_t *cfg, barometer9_drv_t drv_sel)
Barometer 9 driver interface setup function.
barometer9_drv_t
barometer9_drv_t
Barometer 9 Click driver selector.
Definition: barometer9.h:216
barometer9_s::int_pin
digital_in_t int_pin
Definition: barometer9.h:235
barometer9_cfg_setup
void barometer9_cfg_setup(barometer9_cfg_t *cfg)
Barometer 9 configuration object setup function.
barometer9_return_value_t
barometer9_return_value_t
Barometer 9 Click return value data.
Definition: barometer9.h:279
barometer9_cfg_t::cs
pin_name_t cs
Definition: barometer9.h:260