barometer13 2.1.0.0
barometer13.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 BAROMETER13_H
29#define BAROMETER13_H
30
31#ifdef __cplusplus
32extern "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 BAROMETER13_REG_CHIP_ID 0x01
76#define BAROMETER13_REG_REV_ID 0x02
77#define BAROMETER13_REG_CHIP_STATUS 0x11
78#define BAROMETER13_REG_DRIVE_CONFIG 0x13
79#define BAROMETER13_REG_INT_CONFIG 0x14
80#define BAROMETER13_REG_INT_SOURCE 0x15
81#define BAROMETER13_REG_FIFO_CONFIG 0x16
82#define BAROMETER13_REG_FIFO_COUNT 0x17
83#define BAROMETER13_REG_FIFO_SEL 0x18
84#define BAROMETER13_REG_TEMP_DATA_XLSB 0x1D
85#define BAROMETER13_REG_TEMP_DATA_LSB 0x1E
86#define BAROMETER13_REG_TEMP_DATA_MSB 0x1F
87#define BAROMETER13_REG_PRESS_DATA_XLSB 0x20
88#define BAROMETER13_REG_PRESS_DATA_LSB 0x21
89#define BAROMETER13_REG_PRESS_DATA_MSB 0x22
90#define BAROMETER13_REG_INT_STATUS 0x27
91#define BAROMETER13_REG_STATUS 0x28
92#define BAROMETER13_REG_FIFO_DATA 0x29
93#define BAROMETER13_REG_NVM_ADDR 0x2B
94#define BAROMETER13_REG_NVM_DATA_LSB 0x2C
95#define BAROMETER13_REG_NVM_DATA_MSB 0x2D
96#define BAROMETER13_REG_DSP_CONFIG 0x30
97#define BAROMETER13_REG_DSP_IIR 0x31
98#define BAROMETER13_REG_OOR_THR_P_LSB 0x32
99#define BAROMETER13_REG_OOR_THR_P_MSB 0x33
100#define BAROMETER13_REG_OOR_RANGE 0x34
101#define BAROMETER13_REG_OOR_CONFIG 0x35
102#define BAROMETER13_REG_OSR_CONFIG 0x36
103#define BAROMETER13_REG_ODR_CONFIG 0x37
104#define BAROMETER13_REG_OSR_EFF 0x38
105#define BAROMETER13_REG_CMD 0x7E
106
107 // barometer13_reg
108
123#define BAROMETER13_CHIP_ID 0x51
124#define BAROMETER13_REV_ID 0x32
125
130#define BAROMETER13_INT_ENABLE 0x08
131#define BAROMETER13_INT_DISABLE 0x00
132#define BAROMETER13_INT_OPEN_DRAIN 0x04
133#define BAROMETER13_INT_PUSH_PULL 0x00
134#define BAROMETER13_INT_ACTIVE_HIGH 0x02
135#define BAROMETER13_INT_ACTIVE_LOW 0x00
136#define BAROMETER13_INT_LATCHED 0x01
137#define BAROMETER13_INT_PULSED 0x00
138
143#define BAROMETER13_OOR_P_EN 0x08
144#define BAROMETER13_FIFO_THS_EN 0x04
145#define BAROMETER13_FIFO_FULL_EN 0x02
146#define BAROMETER13_DRDY_DATA_EN 0x01
147#define BAROMETER13_DRDY_DATA_DIS 0x00
148
153#define BAROMETER13_INT_STATUS_POR 0x10
154#define BAROMETER13_INT_STATUS_OOR_P 0x08
155#define BAROMETER13_INT_STATUS_FIFO_THS 0x04
156#define BAROMETER13_INT_STATUS_FIFO_FULL 0x02
157#define BAROMETER13_INT_STATUS_DRDY_DATA_REG 0x01
158
163#define BAROMETER13_OOR_SEL_IIR_P 0x80
164#define BAROMETER13_FIFO_SEL_IIR_P 0x40
165#define BAROMETER13_SHDW_SEL_IIR_P 0x20
166#define BAROMETER13_FIFO_SEL_IIR_T 0x10
167#define BAROMETER13_SHDW_SEL_IIR_T 0x08
168#define BAROMETER13_IIR_FLUSH_FORCED_EN 0x04
169#define BAROMETER13_DSP_CFG_RESERVED_BITS 0x03
170
175#define BAROMETER13_SET_IIR_P_BYPASS 0x00
176#define BAROMETER13_SET_IIR_P_FLT_COEF_1 0x08
177#define BAROMETER13_SET_IIR_P_FLT_COEF_3 0x10
178#define BAROMETER13_SET_IIR_P_FLT_COEF_7 0x18
179#define BAROMETER13_SET_IIR_P_FLT_COEF_15 0x20
180#define BAROMETER13_SET_IIR_P_FLT_COEF_31 0x28
181#define BAROMETER13_SET_IIR_P_FLT_COEF_63 0x30
182#define BAROMETER13_SET_IIR_P_FLT_COEF_127 0x38
183#define BAROMETER13_SET_IIR_T_BYPASS 0x00
184#define BAROMETER13_SET_IIR_T_FLT_COEF_1 0x01
185#define BAROMETER13_SET_IIR_T_FLT_COEF_3 0x02
186#define BAROMETER13_SET_IIR_T_FLT_COEF_7 0x03
187#define BAROMETER13_SET_IIR_T_FLT_COEF_15 0x04
188#define BAROMETER13_SET_IIR_T_FLT_COEF_31 0x05
189#define BAROMETER13_SET_IIR_T_FLT_COEF_63 0x06
190#define BAROMETER13_SET_IIR_T_FLT_COEF_127 0x07
191
196#define BAROMETER13_PRESS_EN 0x40
197#define BAROMETER13_OSR_P_1X 0x00
198#define BAROMETER13_OSR_P_2X 0x08
199#define BAROMETER13_OSR_P_4X 0x10
200#define BAROMETER13_OSR_P_8X 0x18
201#define BAROMETER13_OSR_P_16X 0x20
202#define BAROMETER13_OSR_P_32X 0x28
203#define BAROMETER13_OSR_P_64X 0x30
204#define BAROMETER13_OSR_P_128X 0x38
205#define BAROMETER13_OSR_T_1X 0x00
206#define BAROMETER13_OSR_T_2X 0x01
207#define BAROMETER13_OSR_T_4X 0x02
208#define BAROMETER13_OSR_T_8X 0x03
209#define BAROMETER13_OSR_T_16X 0x04
210#define BAROMETER13_OSR_T_32X 0x05
211#define BAROMETER13_OSR_T_64X 0x06
212#define BAROMETER13_OSR_T_128X 0x07
213
218#define BAROMETER13_DEEP_DIS 0x80
219#define BAROMETER13_ODR_240_HZ 0x00
220#define BAROMETER13_ODR_218_537_HZ 0x04
221#define BAROMETER13_ODR_199_111_HZ 0x08
222#define BAROMETER13_ODR_179_2_HZ 0x0C
223#define BAROMETER13_ODR_160_HZ 0x10
224#define BAROMETER13_ODR_149_333_HZ 0x14
225#define BAROMETER13_ODR_140_HZ 0x18
226#define BAROMETER13_ODR_129_855_HZ 0x1C
227#define BAROMETER13_ODR_120_HZ 0x20
228#define BAROMETER13_ODR_110_164_HZ 0x24
229#define BAROMETER13_ODR_100_299_HZ 0x28
230#define BAROMETER13_ODR_89p6_HZ 0x2C
231#define BAROMETER13_ODR_80_HZ 0x30
232#define BAROMETER13_ODR_70_HZ 0x34
233#define BAROMETER13_ODR_60_HZ 0x38
234#define BAROMETER13_ODR_50_056_HZ 0x3C
235#define BAROMETER13_ODR_45_025_HZ 0x40
236#define BAROMETER13_ODR_40_HZ 0x44
237#define BAROMETER13_ODR_35_HZ 0x48
238#define BAROMETER13_ODR_30_HZ 0x4C
239#define BAROMETER13_ODR_25_005_HZ 0x50
240#define BAROMETER13_ODR_20_HZ 0x54
241#define BAROMETER13_ODR_15_HZ 0x58
242#define BAROMETER13_ODR_10_HZ 0x5C
243#define BAROMETER13_ODR_5_HZ 0x60
244#define BAROMETER13_ODR_4_HZ 0x64
245#define BAROMETER13_ODR_3_HZ 0x68
246#define BAROMETER13_ODR_2_HZ 0x6C
247#define BAROMETER13_ODR_1_HZ 0x70
248#define BAROMETER13_ODR_0_5_HZ 0x74
249#define BAROMETER13_ODR_0_25_HZ 0x78
250#define BAROMETER13_ODR_0_125_HZ 0x7C
251#define BAROMETER13_PWR_MODE_STANDBY 0x00
252#define BAROMETER13_PWR_MODE_NORMAL 0x01
253#define BAROMETER13_PWR_MODE_FORCE 0x02
254#define BAROMETER13_PWR_MODE_NON_STOP 0x03
255
260#define BAROMETER13_INT_STATE_HIGH 0x01
261#define BAROMETER13_INT_STATE_LOW 0x00
262
267#define BAROMETER13_PRESS_DATA_RES 64.0f
268#define BAROMETER13_TEMP_DATA_RES 65536.0f
269#define BAROMETER13_PA_TO_MBAR 100.0f
270
276#define BAROMETER13_DEVICE_ADDRESS_1 0x46
277#define BAROMETER13_DEVICE_ADDRESS_0 0x47
278
287#define BAROMETER13_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
288#define BAROMETER13_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
289
290 // barometer13_set
291
306#define BAROMETER13_MAP_MIKROBUS( cfg, mikrobus ) \
307 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
308 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
309 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
310 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
311 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
312 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
313 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
314
315 // barometer13_map
316 // barometer13
317
328
333typedef err_t ( *barometer13_master_io_t )( struct barometer13_s*, uint8_t, uint8_t*, uint8_t );
354
359typedef struct
360{
361 pin_name_t scl;
362 pin_name_t sda;
363 pin_name_t miso;
364 pin_name_t mosi;
365 pin_name_t sck;
366 pin_name_t cs;
367 pin_name_t int_pin;
369 uint32_t i2c_speed;
370 uint8_t i2c_address;
372 uint32_t spi_speed;
373 spi_master_mode_t spi_mode;
374 spi_master_chip_select_polarity_t cs_polarity;
379
390
407
423
438
452
467err_t barometer13_generic_write ( barometer13_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
468
483err_t barometer13_generic_read ( barometer13_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
484
499err_t barometer13_reg_write ( barometer13_t *ctx, uint8_t reg, uint8_t data_in );
500
515err_t barometer13_reg_read ( barometer13_t *ctx, uint8_t reg, uint8_t *data_out );
516
531err_t barometer13_get_device_id ( barometer13_t *ctx, uint8_t *chip_id, uint8_t *rev_id );
532
549err_t barometer13_set_int_cfg ( barometer13_t *ctx, uint8_t int_en, uint8_t int_od,
550 uint8_t int_pol, uint8_t int_mode );
551
565err_t barometer13_set_drdy_data ( barometer13_t *ctx, uint8_t en_drdy_data );
566
580err_t barometer13_get_int_status ( barometer13_t *ctx, uint8_t *int_status );
581
597err_t barometer13_set_shdw_sel ( barometer13_t *ctx, uint8_t shdw_sel_iir_p, uint8_t shdw_sel_iir_t );
598
614err_t barometer13_set_lpf_band_flt ( barometer13_t *ctx, uint8_t set_iir_p, uint8_t set_iir_t );
615
630err_t barometer13_set_osr ( barometer13_t *ctx, uint8_t osr_p, uint8_t osr_t );
631
645
659err_t barometer13_set_odr ( barometer13_t *ctx, uint8_t odr );
660
674err_t barometer13_set_pwr_mode ( barometer13_t *ctx, uint8_t pwr_mode );
675
690err_t barometer13_get_raw_data ( barometer13_t *ctx, int32_t *press_data, int32_t *temp_data );
691
706err_t barometer13_get_measurement ( barometer13_t *ctx, float *pressure, float *temperature );
707
721err_t barometer13_get_pressure ( barometer13_t *ctx, float *pressure );
722
735
736#ifdef __cplusplus
737}
738#endif
739#endif // BAROMETER13_H
740
741 // barometer13
742
743// ------------------------------------------------------------------------ END
barometer13_return_value_t
Barometer 13 Click return value data.
Definition barometer13.h:385
@ BAROMETER13_OK
Definition barometer13.h:386
@ BAROMETER13_ERROR
Definition barometer13.h:387
struct barometer13_s barometer13_t
Barometer 13 Click context object.
err_t(* barometer13_master_io_t)(struct barometer13_s *, uint8_t, uint8_t *, uint8_t)
Barometer 13 Click driver interface.
Definition barometer13.h:333
barometer13_drv_t
Barometer 13 Click driver selector.
Definition barometer13.h:323
@ BAROMETER13_DRV_SEL_I2C
Definition barometer13.h:325
@ BAROMETER13_DRV_SEL_SPI
Definition barometer13.h:324
err_t barometer13_default_cfg(barometer13_t *ctx)
Barometer 13 default configuration function.
err_t barometer13_set_drdy_data(barometer13_t *ctx, uint8_t en_drdy_data)
Barometer 13 set data ready function.
err_t barometer13_get_device_id(barometer13_t *ctx, uint8_t *chip_id, uint8_t *rev_id)
Barometer 13 get device ID function.
err_t barometer13_set_int_cfg(barometer13_t *ctx, uint8_t int_en, uint8_t int_od, uint8_t int_pol, uint8_t int_mode)
Barometer 13 set the interrupt config function.
err_t barometer13_get_int_status(barometer13_t *ctx, uint8_t *int_status)
Barometer 13 get interrupt status function.
err_t barometer13_set_lpf_band_flt(barometer13_t *ctx, uint8_t set_iir_p, uint8_t set_iir_t)
Barometer 13 set LPF band filter function.
err_t barometer13_generic_write(barometer13_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Barometer 13 data writing function.
uint8_t barometer13_get_interrupt(barometer13_t *ctx)
Barometer 13 get the interrupt function.
err_t barometer13_reg_write(barometer13_t *ctx, uint8_t reg, uint8_t data_in)
Barometer 13 register data writing function.
err_t barometer13_set_osr(barometer13_t *ctx, uint8_t osr_p, uint8_t osr_t)
Barometer 13 set over-sampling rate function.
void barometer13_cfg_setup(barometer13_cfg_t *cfg)
Barometer 13 configuration object setup function.
err_t barometer13_get_pressure(barometer13_t *ctx, float *pressure)
Barometer 13 get the pressure data function.
err_t barometer13_set_pwr_mode(barometer13_t *ctx, uint8_t pwr_mode)
Barometer 13 set power mode configuration function.
err_t barometer13_set_shdw_sel(barometer13_t *ctx, uint8_t shdw_sel_iir_p, uint8_t shdw_sel_iir_t)
Barometer 13 set shadow IIR selection function.
err_t barometer13_init(barometer13_t *ctx, barometer13_cfg_t *cfg)
Barometer 13 initialization function.
err_t barometer13_get_measurement(barometer13_t *ctx, float *pressure, float *temperature)
Barometer 13 get the measurement data function.
err_t barometer13_generic_read(barometer13_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Barometer 13 data reading function.
err_t barometer13_press_enable(barometer13_t *ctx)
Barometer 13 enable pressure data function.
err_t barometer13_reg_read(barometer13_t *ctx, uint8_t reg, uint8_t *data_out)
Barometer 13 register data reading function.
err_t barometer13_set_odr(barometer13_t *ctx, uint8_t odr)
Barometer 13 set the output data rate function.
void barometer13_drv_interface_sel(barometer13_cfg_t *cfg, barometer13_drv_t drv_sel)
Barometer 13 driver interface setup function.
err_t barometer13_get_raw_data(barometer13_t *ctx, int32_t *press_data, int32_t *temp_data)
Barometer 13 get raw data function.
This file contains SPI specific macros, functions, etc.
Barometer 13 Click configuration object.
Definition barometer13.h:360
uint32_t i2c_speed
Definition barometer13.h:369
spi_master_chip_select_polarity_t cs_polarity
Definition barometer13.h:374
pin_name_t sck
Definition barometer13.h:365
spi_master_mode_t spi_mode
Definition barometer13.h:373
pin_name_t mosi
Definition barometer13.h:364
uint32_t spi_speed
Definition barometer13.h:372
pin_name_t scl
Definition barometer13.h:361
pin_name_t int_pin
Definition barometer13.h:367
pin_name_t miso
Definition barometer13.h:363
pin_name_t sda
Definition barometer13.h:362
barometer13_drv_t drv_sel
Definition barometer13.h:376
pin_name_t cs
Definition barometer13.h:366
uint8_t i2c_address
Definition barometer13.h:370
Barometer 13 Click context object.
Definition barometer13.h:340
spi_master_t spi
Definition barometer13.h:344
barometer13_master_io_t write_f
Definition barometer13.h:350
digital_in_t int_pin
Definition barometer13.h:341
i2c_master_t i2c
Definition barometer13.h:343
uint8_t slave_address
Definition barometer13.h:346
barometer13_master_io_t read_f
Definition barometer13.h:351
pin_name_t chip_select
Definition barometer13.h:347
barometer13_drv_t drv_sel
Definition barometer13.h:348