pressure16  2.0.0.0
pressure16.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 PRESSURE16_H
29 #define PRESSURE16_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
35 #include "mikrosdk_version.h"
36 
37 #ifdef __GNUC__
38 #if mikroSDK_GET_VERSION < 20800ul
39 #include "rcu_delays.h"
40 #else
41 #include "delays.h"
42 #endif
43 #endif
44 
45 #include "drv_digital_out.h"
46 #include "drv_digital_in.h"
47 #include "drv_i2c_master.h"
48 #include "drv_spi_master.h"
49 
50 
71 #define PRESSURE16_REG_INT_CFG 0x0B
72 #define PRESSURE16_REG_THR_P_L 0x0C
73 #define PRESSURE16_REG_THR_P_H 0x0D
74 #define PRESSURE16_REG_INTERFACE_CTRL 0x0E
75 #define PRESSURE16_REG_DEVICE_ID 0x0F
76 #define PRESSURE16_REG_CTRL_1 0x10
77 #define PRESSURE16_REG_CTRL_2 0x11
78 #define PRESSURE16_REG_CTRL_3 0x12
79 #define PRESSURE16_REG_FIFO_CTRL 0x13
80 #define PRESSURE16_REG_FIFO_WTM 0x14
81 #define PRESSURE16_REG_REF_P_L 0x15
82 #define PRESSURE16_REG_REF_P_H 0x16
83 #define PRESSURE16_REG_OPC_P_L 0x18
84 #define PRESSURE16_REG_OPC_P_H 0x19
85 #define PRESSURE16_REG_INT_SOURCE 0x24
86 #define PRESSURE16_REG_FIFO_STATUS_1 0x25
87 #define PRESSURE16_REG_FIFO_STATUS_2 0x26
88 #define PRESSURE16_REG_STATUS 0x27
89 #define PRESSURE16_REG_DATA_P_XL 0x28
90 #define PRESSURE16_REG_DATA_P_L 0x29
91 #define PRESSURE16_REG_DATA_P_H 0x2A
92 #define PRESSURE16_REG_DATA_T_L 0x2B
93 #define PRESSURE16_REG_DATA_T_H 0x2C
94 #define PRESSURE16_REG_FIFO_DATA_P_XL 0x78
95 #define PRESSURE16_REG_FIFO_DATA_P_L 0x79
96 #define PRESSURE16_REG_FIFO_DATA_P_H 0x7A
97 #define PRESSURE16_REG_FIFO_DATA_T_L 0x7B
98 #define PRESSURE16_REG_FIFO_DATA_T_H 0x7C
99  // pressure16_reg
101 
116 #define PRESSURE16_SET_CTRL_ODR_POWER_DOWN_MODE 0x00
117 #define PRESSURE16_SET_CTRL_ODR_1 0x01
118 #define PRESSURE16_SET_CTRL_ODR_10 0x02
119 #define PRESSURE16_SET_CTRL_ODR_25 0x03
120 #define PRESSURE16_SET_CTRL_ODR_50 0x04
121 #define PRESSURE16_SET_CTRL_ODR_75 0x05
122 #define PRESSURE16_SET_CTRL_ODR_100 0x06
123 #define PRESSURE16_SET_CTRL_ODR_200 0x07
124 
125 #define PRESSURE16_SET_CTRL_LPFP_DISABLE 0x00
126 #define PRESSURE16_SET_CTRL_LPFP_ENABLE 0x01
127 
128 #define PRESSURE16_SET_CTRL_LPFP_DISABLE 0x00
129 #define PRESSURE16_SET_CTRL_LPFP_ENABLE 0x01
130 
131 #define PRESSURE16_SET_BDU_DATA_UPDATES_CONTINUOUS 0x00
132 #define PRESSURE16_SET_BDU_DATA_NOT_UPDATES_UNTIL_READ 0x01
133 
134 #define PRESSURE16_SET_SIM_SPI_4_WIRE_INTERFACE 0x00
135 #define PRESSURE16_SET_SIM_SPI_3_WIRE_INTERFACE 0x01
136 
137 #define PRESSURE16_SET_BOOT_NORMAL_OPERATION 0x00
138 #define PRESSURE16_SET_BOOT_REBOOT_MEMORY_CONTENT 0x01
139 
140 #define PRESSURE16_SET_INT_H_L_INTERRUPT_ACTIVE_HIGH 0x00
141 #define PRESSURE16_SET_INT_H_L_INTERRUPT_ACTIVE_LOW 0x01
142 
143 #define PRESSURE16_SET_PP_OD_PUSH_PULL 0x00
144 #define PRESSURE16_SET_PP_OD_OPEN_DRAIN 0x01
145 
146 #define PRESSURE16_SET_IF_ADD_INC_DISABLED 0x00
147 #define PRESSURE16_SET_IF_ADD_INC_ENABLED 0x01
148 
149 #define PRESSURE16_SET_LOW_NOISE_ENABLE_LOW_POWER_MODE 0x00
150 #define PRESSURE16_SET_LOW_NOISE_ENABLE_LOW_NOISE_MODE 0x01
151 
152 #define PRESSURE16_SET_ONE_SHOT_NORMAL_OPERATION 0x00
153 #define PRESSURE16_SET_ONE_SHOT_NEW_DATA_SET_IS_ACQUIRED 0x01
154 
155 #define PRESSURE16_SET_INT_F_FULL_DISABLED 0x00
156 #define PRESSURE16_SET_INT_F_FULL_ENABLED 0x01
157 
158 #define PRESSURE16_SET_INT_F_WTM_DISABLED 0x00
159 #define PRESSURE16_SET_INT_F_WTM_ENABLED 0x01
160 
161 #define PRESSURE16_SET_INT_F_OVR_DISABLED 0x00
162 #define PRESSURE16_SET_INT_F_OVR_ENABLED 0x01
163 
164 #define PRESSURE16_SET_DRDY_DISABLED 0x00
165 #define PRESSURE16_SET_DRDY_ENABLED 0x01
166 
167 #define PRESSURE16_SET_INT_S_DATA_SIGNAL 0x00
168 #define PRESSURE16_SET_INT_S_PRESSURE_HIGH_EVENT 0x01
169 #define PRESSURE16_SET_INT_S_PRESSURE_LOW_EVENT 0x02
170 #define PRESSURE16_SET_INT_S_PRESSURE_LOW_HIGH_EVENT 0x03
171 
172 #define PRESSURE16_SET_INT_CFG_AUTOREFP_DISABLED 0x00
173 #define PRESSURE16_SET_INT_CFG_AUTOREFP_ENABLED 0x01
174 
175 #define PRESSURE16_SET_INT_CFG_RESET_ARP_NORMAL_MODE 0x00
176 #define PRESSURE16_SET_INT_CFG_RESET_ARP_RST_AUTOREFP 0x01
177 
178 #define PRESSURE16_SET_INT_CFG_AUTOZERO_DISABLED 0x00
179 #define PRESSURE16_SET_INT_CFG_AUTOZERO_ENABLED 0x01
180 
181 #define PRESSURE16_SET_INT_CFG_AUTOZERO_NORMAL_MODE 0x00
182 #define PRESSURE16_SET_INT_CFG_RST_AUTOZERO 0x01
183 
184 #define PRESSURE16_SET_INT_CFG_DIFF_EN_DISABLED 0x00
185 #define PRESSURE16_SET_INT_CFG_DIFF_EN_ENABLED 0x01
186 
187 #define PRESSURE16_SET_INT_CFG_LIR_INT_IS_NOT_LATCHED 0x00
188 #define PRESSURE16_SET_INT_CFG_LIR_INT_IS_LATCHED 0x01
189 
190 #define PRESSURE16_SET_INT_CFG_PLE_INT_IS_INACTIVE 0x00
191 #define PRESSURE16_SET_INT_CFG_PLE_INT_IS_ACTIVE 0x01
192 
193 #define PRESSURE16_SET_INT_CFG_PHE_INT_IS_INACTIVE 0x00
194 #define PRESSURE16_SET_INT_CFG_PHE_INT_IS_ACTIVE 0x01
195 
196 #define PRESSURE16_SET_SW_RESET_BIT_MASK 0x04
197 
203 #define PRESSURE16_SET_DEV_ADDR_GND 0x5C
204 #define PRESSURE16_SET_DEV_ADDR_VCC 0x5D
205 
211 #define PRESSURE16_DEVICE_ID 0xB3
212  // pressure16_set
214 
229 #define PRESSURE16_MAP_MIKROBUS( cfg, mikrobus ) \
230  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
231  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
232  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
233  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
234  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
235  cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
236  cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
237  // pressure16_map // pressure16
240 
245 typedef enum
246 {
251 
256 typedef err_t ( *pressure16_master_io_t )( struct pressure16_s*, uint8_t, uint8_t*, uint8_t );
262 typedef struct pressure16_s
263 {
264  digital_in_t int_pin;
266  i2c_master_t i2c;
267  spi_master_t spi;
269  uint8_t slave_address;
270  pin_name_t chip_select;
277 
282 typedef struct
283 {
284  pin_name_t scl;
285  pin_name_t sda;
286  pin_name_t miso;
287  pin_name_t mosi;
288  pin_name_t sck;
289  pin_name_t cs;
290  pin_name_t int_pin;
292  uint32_t i2c_speed;
293  uint8_t i2c_address;
295  uint32_t spi_speed;
296  spi_master_mode_t spi_mode;
297  spi_master_chip_select_polarity_t cs_polarity;
302 
307 typedef struct
308 {
309 
310  uint8_t auto_refp;
311  uint8_t reset_arp;
312  uint8_t auto_zero;
313  uint8_t reset_az;
314  uint8_t diff_en;
315  uint8_t lir;
316  uint8_t ple;
317  uint8_t phe;
318 
320 
325 typedef struct
326 {
327 
328  uint8_t odr;
329  uint8_t en_lpfp;
330  uint8_t lpfp_cfg;
331  uint8_t bdu;
332  uint8_t sim;
333  uint8_t boot;
334  uint8_t int_h_l;
335  uint8_t pp_od;
336  uint8_t if_add_inc;
337  uint8_t low_noise_en;
338  uint8_t one_shot;
339  uint8_t int_f_full;
340  uint8_t int_f_wtm;
341  uint8_t int_f_ovr;
342  uint8_t drdy;
343  uint8_t int_s;
344 
346 
351 typedef enum
352 {
354  PRESSURE16_ERROR = -1
355 
357 
374 
390 
406 
421 
437 err_t pressure16_generic_write ( pressure16_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
438 
454 err_t pressure16_generic_read ( pressure16_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
455 
470 err_t pressure16_get_device_id ( pressure16_t *ctx, uint8_t *dev_id );
471 
486 
502 
518 
534 
550 
565 err_t pressure16_get_pressure ( pressure16_t *ctx, float *pressure );
566 
581 err_t pressure16_get_temperature ( pressure16_t *ctx, float *temperature );
582 
598 err_t pressure16_get_press_temp ( pressure16_t *ctx, float *pressure, float *temperature );
599 
613 
614 #ifdef __cplusplus
615 }
616 #endif
617 #endif // PRESSURE16_H
618  // pressure16
620 
621 // ------------------------------------------------------------------------ END
pressure16_cfg_t::scl
pin_name_t scl
Definition: pressure16.h:284
pressure16_set_ctrl_config
err_t pressure16_set_ctrl_config(pressure16_t *ctx, pressure16_ctrl_cfg_t ctrl_cfg_data)
Pressure 16 set control configuration function.
pressure16_cfg_t::cs_polarity
spi_master_chip_select_polarity_t cs_polarity
Definition: pressure16.h:297
pressure16_drv_t
pressure16_drv_t
Pressure 16 Click driver selector.
Definition: pressure16.h:246
PRESSURE16_DRV_SEL_SPI
@ PRESSURE16_DRV_SEL_SPI
Definition: pressure16.h:247
pressure16_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: pressure16.h:292
pressure16_int_cfg_t::reset_az
uint8_t reset_az
Definition: pressure16.h:313
pressure16_get_pressure
err_t pressure16_get_pressure(pressure16_t *ctx, float *pressure)
Pressure 16 get pressure function.
pressure16_master_io_t
err_t(* pressure16_master_io_t)(struct pressure16_s *, uint8_t, uint8_t *, uint8_t)
Pressure 16 Click driver interface.
Definition: pressure16.h:256
pressure16_ctrl_cfg_t
Pressure 16 Click Control configuration object.
Definition: pressure16.h:326
PRESSURE16_DRV_SEL_I2C
@ PRESSURE16_DRV_SEL_I2C
Definition: pressure16.h:248
pressure16_ctrl_cfg_t::bdu
uint8_t bdu
Definition: pressure16.h:331
pressure16_drv_interface_selection
void pressure16_drv_interface_selection(pressure16_cfg_t *cfg, pressure16_drv_t drv_sel)
Pressure 16 driver interface setup function.
pressure16_int_cfg_t::diff_en
uint8_t diff_en
Definition: pressure16.h:314
pressure16_s::int_pin
digital_in_t int_pin
Definition: pressure16.h:264
pressure16_int_cfg_t::reset_arp
uint8_t reset_arp
Definition: pressure16.h:311
pressure16_s::drv_sel
pressure16_drv_t drv_sel
Definition: pressure16.h:271
pressure16_init
err_t pressure16_init(pressure16_t *ctx, pressure16_cfg_t *cfg)
Pressure 16 initialization function.
pressure16_cfg_t
Pressure 16 Click configuration object.
Definition: pressure16.h:283
pressure16_get_interrupt
uint8_t pressure16_get_interrupt(pressure16_t *ctx)
Pressure 16 get interrupt function.
pressure16_cfg_t::sck
pin_name_t sck
Definition: pressure16.h:288
pressure16_int_cfg_t::auto_zero
uint8_t auto_zero
Definition: pressure16.h:312
pressure16_s::slave_address
uint8_t slave_address
Definition: pressure16.h:269
pressure16_ctrl_cfg_t::int_f_wtm
uint8_t int_f_wtm
Definition: pressure16.h:340
pressure16_ctrl_cfg_t::odr
uint8_t odr
Definition: pressure16.h:328
pressure16_int_cfg_t::lir
uint8_t lir
Definition: pressure16.h:315
pressure16_generic_read
err_t pressure16_generic_read(pressure16_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Pressure 16 data reading function.
pressure16_get_ctrl_config
err_t pressure16_get_ctrl_config(pressure16_t *ctx, pressure16_ctrl_cfg_t *ctrl_cfg_data)
Pressure 16 get control configuration function.
pressure16_ctrl_cfg_t::en_lpfp
uint8_t en_lpfp
Definition: pressure16.h:329
pressure16_int_cfg_t::ple
uint8_t ple
Definition: pressure16.h:316
pressure16_s
Pressure 16 Click context object.
Definition: pressure16.h:263
pressure16_t
struct pressure16_s pressure16_t
Pressure 16 Click context object.
pressure16_get_interrupt_config
err_t pressure16_get_interrupt_config(pressure16_t *ctx, pressure16_int_cfg_t *int_cfg_data)
Pressure 16 get interrupt configuration function.
pressure16_ctrl_cfg_t::sim
uint8_t sim
Definition: pressure16.h:332
pressure16_ctrl_cfg_t::int_f_full
uint8_t int_f_full
Definition: pressure16.h:339
pressure16_cfg_t::cs
pin_name_t cs
Definition: pressure16.h:289
pressure16_sw_reset
err_t pressure16_sw_reset(pressure16_t *ctx)
Pressure 16 software reset function.
pressure16_ctrl_cfg_t::if_add_inc
uint8_t if_add_inc
Definition: pressure16.h:336
pressure16_ctrl_cfg_t::pp_od
uint8_t pp_od
Definition: pressure16.h:335
pressure16_s::i2c
i2c_master_t i2c
Definition: pressure16.h:266
pressure16_cfg_t::mosi
pin_name_t mosi
Definition: pressure16.h:287
pressure16_s::read_f
pressure16_master_io_t read_f
Definition: pressure16.h:274
pressure16_ctrl_cfg_t::drdy
uint8_t drdy
Definition: pressure16.h:342
pressure16_cfg_t::miso
pin_name_t miso
Definition: pressure16.h:286
pressure16_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: pressure16.h:296
pressure16_generic_write
err_t pressure16_generic_write(pressure16_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Pressure 16 data writing function.
pressure16_s::spi
spi_master_t spi
Definition: pressure16.h:267
pressure16_return_value_t
pressure16_return_value_t
Pressure 16 Click return value data.
Definition: pressure16.h:352
pressure16_get_device_id
err_t pressure16_get_device_id(pressure16_t *ctx, uint8_t *dev_id)
Pressure 16 get device ID function.
pressure16_set_interrupt_config
err_t pressure16_set_interrupt_config(pressure16_t *ctx, pressure16_int_cfg_t int_cfg_data)
Pressure 16 set interrupt configuration function.
pressure16_cfg_setup
void pressure16_cfg_setup(pressure16_cfg_t *cfg)
Pressure 16 configuration object setup function.
pressure16_ctrl_cfg_t::int_s
uint8_t int_s
Definition: pressure16.h:343
pressure16_int_cfg_t
Pressure 16 Click Interrupt configuration object.
Definition: pressure16.h:308
pressure16_ctrl_cfg_t::boot
uint8_t boot
Definition: pressure16.h:333
pressure16_cfg_t::i2c_address
uint8_t i2c_address
Definition: pressure16.h:293
pressure16_get_press_temp
err_t pressure16_get_press_temp(pressure16_t *ctx, float *pressure, float *temperature)
Pressure 16 get pressure and temperature function.
pressure16_cfg_t::sda
pin_name_t sda
Definition: pressure16.h:285
pressure16_ctrl_cfg_t::low_noise_en
uint8_t low_noise_en
Definition: pressure16.h:337
pressure16_ctrl_cfg_t::int_f_ovr
uint8_t int_f_ovr
Definition: pressure16.h:341
pressure16_cfg_t::int_pin
pin_name_t int_pin
Definition: pressure16.h:290
pressure16_int_cfg_t::auto_refp
uint8_t auto_refp
Definition: pressure16.h:310
pressure16_int_cfg_t::phe
uint8_t phe
Definition: pressure16.h:317
pressure16_s::chip_select
pin_name_t chip_select
Definition: pressure16.h:270
pressure16_ctrl_cfg_t::one_shot
uint8_t one_shot
Definition: pressure16.h:338
PRESSURE16_ERROR
@ PRESSURE16_ERROR
Definition: pressure16.h:354
pressure16_ctrl_cfg_t::lpfp_cfg
uint8_t lpfp_cfg
Definition: pressure16.h:330
pressure16_default_cfg
err_t pressure16_default_cfg(pressure16_t *ctx)
Pressure 16 default configuration function.
pressure16_cfg_t::spi_speed
uint32_t spi_speed
Definition: pressure16.h:295
PRESSURE16_OK
@ PRESSURE16_OK
Definition: pressure16.h:353
pressure16_get_temperature
err_t pressure16_get_temperature(pressure16_t *ctx, float *temperature)
Pressure 16 get temperature function.
pressure16_cfg_t::drv_sel
pressure16_drv_t drv_sel
Definition: pressure16.h:299
pressure16_ctrl_cfg_t::int_h_l
uint8_t int_h_l
Definition: pressure16.h:334
pressure16_s::write_f
pressure16_master_io_t write_f
Definition: pressure16.h:273