barometer6  2.0.0.0
barometer6.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 BAROMETER6_H
29 #define BAROMETER6_H
30 
31 #ifdef __cplusplus
32 extern "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 BAROMETER6_TEMP_TXD0 0xFC
62 #define BAROMETER6_TEMP_TXD1 0xFB
63 #define BAROMETER6_TEMP_TXD2 0xFA
64 #define BAROMETER6_PRESS_TXD0 0xF9
65 #define BAROMETER6_PRESS_TXD1 0xF8
66 #define BAROMETER6_PRESS_TXD2 0xF7
67 #define BAROMETER6_IO_SETUP 0xF5
68 #define BAROMETER6_CTRL_MESS 0xF4
69 #define BAROMETER6_DEVICE_STAT 0xF3
70 #define BAROMETER6_I2C_SET 0xF2
71 #define BAROMETER6_IIR_CNT 0XF1
72 #define BAROMETER6_RESET 0XE0
73 #define BAROMETER6_CHIP_ID 0XD1
74 #define BAROMETER6_COE_B00_A0_EX 0XB8
75 #define BAROMETER6_COE_A2_0 0XB7
76 #define BAROMETER6_COE_A2_1 0XB6
77 #define BAROMETER6_COE_A1_0 0XB5
78 #define BAROMETER6_COE_A1_1 0XB4
79 #define BAROMETER6_COE_A0_0 0XB3
80 #define BAROMETER6_COE_A0_1 0XB2
81 #define BAROMETER6_COE_BP3_0 0XB1
82 #define BAROMETER6_COE_BP3_1 0XB0
83 #define BAROMETER6_COE_B21_0 0XAF
84 #define BAROMETER6_COE_B21_1 0XAE
85 #define BAROMETER6_COE_B12_0 0XAD
86 #define BAROMETER6_COE_B12_1 0XAC
87 #define BAROMETER6_COE_BP2_0 0XAB
88 #define BAROMETER6_COE_BP2_1 0XAA
89 #define BAROMETER6_COE_B11_0 0XA9
90 #define BAROMETER6_COE_B11_1 0XA8
91 #define BAROMETER6_COE_BP1_0 0XA7
92 #define BAROMETER6_COE_BP1_1 0XA6
93 #define BAROMETER6_COE_BT2_0 0XA5
94 #define BAROMETER6_COE_BT2_1 0XA4
95 #define BAROMETER6_COE_BT1_0 0XA3
96 #define BAROMETER6_COE_BT1_1 0XA2
97 #define BAROMETER6_COE_B00_0 0XA1
98 #define BAROMETER6_COE_B00_1 0XA0
99  // barometer6_reg
101 
121 #define BAROMETER6_CMD_RESET 0xE6
122 
127 #define BAROMETER6_AVG_SKIP 0x00
128 #define BAROMETER6_AVG_1 0x01
129 #define BAROMETER6_AVG_2 0x02
130 #define BAROMETER6_AVG_4 0x03
131 #define BAROMETER6_AVG_8 0x04
132 #define BAROMETER6_AVG_16 0x05
133 #define BAROMETER6_AVG_32 0x06
134 #define BAROMETER6_AVG_64 0x07
135 
140 #define BAROMETER6_SLEEP_MODE 0x00
141 #define BAROMETER6_FORCED_MODE_1 0x01
142 #define BAROMETER6_FORCED_MODE_2 0x02
143 #define BAROMETER6_NORMAL_MODE 0x03
144 
149 #define BAROMETER6_DATA_NOT_READY 0x00
150 #define BAROMETER6_DATA_READY 0x01
151 
156 #define BAROMETER6_STANDBY_1ms 0x00
157 #define BAROMETER6_STANDBY_5ms 0x01
158 #define BAROMETER6_STANDBY_50ms 0x02
159 #define BAROMETER6_STANDBY_250ms 0x03
160 #define BAROMETER6_STANDBY_500ms 0x04
161 #define BAROMETER6_STANDBY_1s 0x05
162 #define BAROMETER6_STANDBY_2s 0x06
163 #define BAROMETER6_STANDBY_4s 0x07
164 
169 #define BAROMETER6_ID_VALUE 0x5C
170 
176 #define BAROMETER6_SET_DEV_ADDR_LOW 0x70
177 #define BAROMETER6_SET_DEV_ADDR_HIGH 0x56
178 
187 #define BAROMETER6_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
188 #define BAROMETER6_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
189  // barometer6_set
191 
206 #define BAROMETER6_MAP_MIKROBUS( cfg, mikrobus ) \
207  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
208  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
209  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
210  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
211  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
212  cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
213  cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST )
214  // barometer6_map // barometer6
216 
221 typedef enum
222 {
227 
232 typedef err_t ( *barometer6_master_io_t )( struct barometer6_s*, uint8_t, uint8_t*, uint8_t );
238 typedef struct barometer6_s
239 {
240  digital_out_t rst;
242  i2c_master_t i2c;
243  spi_master_t spi;
245  uint8_t slave_address;
246  pin_name_t chip_select;
252  float coef_a0;
253  float coef_a1;
254  float coef_a2;
255 
256  float coef_b00;
257  float coef_bt1;
258  float coef_bp1;
259  float coef_b11;
260  float coef_bt2;
261  float coef_bp2;
262  float coef_b12;
263  float coef_b21;
264  float coef_bp3;
265 
267 
272 typedef struct
273 {
274  pin_name_t scl;
275  pin_name_t sda;
276  pin_name_t miso;
277  pin_name_t mosi;
278  pin_name_t sck;
279  pin_name_t cs;
280  pin_name_t rst;
282  uint32_t i2c_speed;
283  uint8_t i2c_address;
285  uint32_t spi_speed;
286  spi_master_mode_t spi_mode;
287  spi_master_chip_select_polarity_t cs_polarity;
292 
297 typedef enum
298 {
300  BAROMETER6_ERROR = -1
301 
303 
320 
336 
351 
364 
379 err_t barometer6_generic_write ( barometer6_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
380 
395 err_t barometer6_generic_read ( barometer6_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
396 
406 void barometer6_write_register ( barometer6_t *ctx, uint8_t reg, uint8_t data_in );
407 
418 void barometer6_read_register ( barometer6_t *ctx, uint8_t reg, uint16_t *data_out );
419 
428 void barometer6_read_id ( barometer6_t *ctx, uint8_t *data_out );
429 
438 
447 
460 void barometer6_set_avrege ( barometer6_t *ctx, uint8_t temp_avg, uint8_t pressure_avg );
461 
470 void barometer6_set_mode ( barometer6_t *ctx, uint8_t mode );
471 
480 void barometer6_set_standby_time ( barometer6_t *ctx, uint8_t t_standby );
481 
491 
500 void barometer6_read_raw_temp ( barometer6_t *ctx, int32_t *data_out );
501 
510 void barometer6_read_raw_pressure ( barometer6_t *ctx, float *data_out );
511 
522 void barometer6_read_conp_coef ( barometer6_t *ctx, uint8_t reg, int16_t *data_out );
523 
536 void barometer6_get_conp_coef ( barometer6_t *ctx, uint8_t reg, float a_coef, float s_coef,
537  float *data_out );
538 
549 void barometer6_get_a0_b00_coef ( barometer6_t *ctx, float *coef_a0, float *coef_b00 );
550 
560 
569 void barometer6_get_temperature_data ( barometer6_t *ctx, float *temp_out );
570 
580 void barometer6_read_temperature_value ( barometer6_t *ctx, float *temp_out );
581 
591 void barometer6_read_preassure_data ( barometer6_t *ctx, float *press_out );
592 
602 void barometer6_read_preassure_value ( barometer6_t *ctx, float *press_out );
603 
604 #ifdef __cplusplus
605 }
606 #endif
607 #endif // BAROMETER6_H
608  // barometer6
610 
611 // ------------------------------------------------------------------------ END
barometer6_generic_write
err_t barometer6_generic_write(barometer6_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Barometer 6 data writing function.
barometer6_cfg_t::spi_speed
uint32_t spi_speed
Definition: barometer6.h:285
barometer6_get_temperature_data
void barometer6_get_temperature_data(barometer6_t *ctx, float *temp_out)
Barometer 6 get temperature data function.
barometer6_read_raw_temp
void barometer6_read_raw_temp(barometer6_t *ctx, int32_t *data_out)
Barometer 6 read raw temperature function.
barometer6_s::coef_bp2
float coef_bp2
Definition: barometer6.h:261
barometer6_read_temperature_value
void barometer6_read_temperature_value(barometer6_t *ctx, float *temp_out)
Barometer 6 get temperature value function.
barometer6_generic_read
err_t barometer6_generic_read(barometer6_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Barometer 6 data reading function.
barometer6_cfg_t
Barometer 6 Click configuration object.
Definition: barometer6.h:273
barometer6_default_cfg
void barometer6_default_cfg(barometer6_t *ctx)
Barometer 6 default configuration function.
barometer6_s::coef_b12
float coef_b12
Definition: barometer6.h:262
spi_specifics.h
This file contains SPI specific macros, functions, etc.
barometer6_write_register
void barometer6_write_register(barometer6_t *ctx, uint8_t reg, uint8_t data_in)
Barometer 6 data writing function.
barometer6_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: barometer6.h:282
barometer6_return_value_t
barometer6_return_value_t
Barometer 6 Click return value data.
Definition: barometer6.h:298
barometer6_cfg_t::rst
pin_name_t rst
Definition: barometer6.h:280
barometer6_s::chip_select
pin_name_t chip_select
Definition: barometer6.h:246
barometer6_s::coef_bp3
float coef_bp3
Definition: barometer6.h:264
barometer6_s::coef_bp1
float coef_bp1
Definition: barometer6.h:258
barometer6_s::write_f
barometer6_master_io_t write_f
Definition: barometer6.h:249
barometer6_software_reset
void barometer6_software_reset(barometer6_t *ctx)
Barometer 6 software reset function.
barometer6_s::coef_b11
float coef_b11
Definition: barometer6.h:259
barometer6_init
err_t barometer6_init(barometer6_t *ctx, barometer6_cfg_t *cfg)
Barometer 6 initialization function.
barometer6_s::slave_address
uint8_t slave_address
Definition: barometer6.h:245
barometer6_s
Barometer 6 Click context object.
Definition: barometer6.h:239
barometer6_s::coef_a0
float coef_a0
Definition: barometer6.h:252
barometer6_cfg_setup
void barometer6_cfg_setup(barometer6_cfg_t *cfg)
Barometer 6 configuration object setup function.
barometer6_s::rst
digital_out_t rst
Definition: barometer6.h:240
BAROMETER6_OK
@ BAROMETER6_OK
Definition: barometer6.h:299
barometer6_s::i2c
i2c_master_t i2c
Definition: barometer6.h:242
barometer6_s::coef_a2
float coef_a2
Definition: barometer6.h:254
barometer6_check_ready
uint8_t barometer6_check_ready(barometer6_t *ctx)
Barometer 6 check if data is ready function.
barometer6_cfg_t::cs
pin_name_t cs
Definition: barometer6.h:279
barometer6_cfg_t::miso
pin_name_t miso
Definition: barometer6.h:276
barometer6_drv_t
barometer6_drv_t
Barometer 6 Click driver selector.
Definition: barometer6.h:222
barometer6_s::coef_b00
float coef_b00
Definition: barometer6.h:256
barometer6_get_conpesation_coe
void barometer6_get_conpesation_coe(barometer6_t *ctx)
Barometer 6 get all conpensation coefficients data function.
barometer6_cfg_t::drv_sel
barometer6_drv_t drv_sel
Definition: barometer6.h:289
barometer6_master_io_t
err_t(* barometer6_master_io_t)(struct barometer6_s *, uint8_t, uint8_t *, uint8_t)
Barometer 6 Click driver interface.
Definition: barometer6.h:232
barometer6_s::spi
spi_master_t spi
Definition: barometer6.h:243
barometer6_read_id
void barometer6_read_id(barometer6_t *ctx, uint8_t *data_out)
Barometer 6 Id reading function.
barometer6_cfg_t::sck
pin_name_t sck
Definition: barometer6.h:278
barometer6_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: barometer6.h:286
BAROMETER6_DRV_SEL_SPI
@ BAROMETER6_DRV_SEL_SPI
Definition: barometer6.h:223
barometer6_cfg_t::cs_polarity
spi_master_chip_select_polarity_t cs_polarity
Definition: barometer6.h:287
barometer6_s::coef_a1
float coef_a1
Definition: barometer6.h:253
barometer6_set_standby_time
void barometer6_set_standby_time(barometer6_t *ctx, uint8_t t_standby)
Barometer 6 set standby time function.
barometer6_read_conp_coef
void barometer6_read_conp_coef(barometer6_t *ctx, uint8_t reg, int16_t *data_out)
Barometer 6 read conpensation coefficients data function.
barometer6_cfg_t::i2c_address
uint8_t i2c_address
Definition: barometer6.h:283
barometer6_cfg_t::mosi
pin_name_t mosi
Definition: barometer6.h:277
barometer6_s::drv_sel
barometer6_drv_t drv_sel
Definition: barometer6.h:247
barometer6_read_register
void barometer6_read_register(barometer6_t *ctx, uint8_t reg, uint16_t *data_out)
Barometer 6 data reading function.
barometer6_s::coef_b21
float coef_b21
Definition: barometer6.h:263
barometer6_cfg_t::scl
pin_name_t scl
Definition: barometer6.h:274
barometer6_cfg_t::sda
pin_name_t sda
Definition: barometer6.h:275
barometer6_read_preassure_value
void barometer6_read_preassure_value(barometer6_t *ctx, float *press_out)
Barometer 6 get preassure mBar function.
barometer6_drv_interface_selection
void barometer6_drv_interface_selection(barometer6_cfg_t *cfg, barometer6_drv_t drv_sel)
Barometer 6 driver interface setup function.
barometer6_s::coef_bt2
float coef_bt2
Definition: barometer6.h:260
barometer6_set_mode
void barometer6_set_mode(barometer6_t *ctx, uint8_t mode)
Barometer 6 set operation mode function.
barometer6_set_avrege
void barometer6_set_avrege(barometer6_t *ctx, uint8_t temp_avg, uint8_t pressure_avg)
Barometer 6 set average data function.
barometer6_read_raw_pressure
void barometer6_read_raw_pressure(barometer6_t *ctx, float *data_out)
Barometer 6 read raw pressure function.
barometer6_s::coef_bt1
float coef_bt1
Definition: barometer6.h:257
barometer6_t
struct barometer6_s barometer6_t
Barometer 6 Click context object.
barometer6_read_preassure_data
void barometer6_read_preassure_data(barometer6_t *ctx, float *press_out)
Barometer 6 get preassure data function.
barometer6_get_conp_coef
void barometer6_get_conp_coef(barometer6_t *ctx, uint8_t reg, float a_coef, float s_coef, float *data_out)
Barometer 6 calculate conpensation coefficients data function.
BAROMETER6_DRV_SEL_I2C
@ BAROMETER6_DRV_SEL_I2C
Definition: barometer6.h:224
barometer6_hardware_reset
void barometer6_hardware_reset(barometer6_t *ctx)
Barometer 6 hardware reset function.
barometer6_s::read_f
barometer6_master_io_t read_f
Definition: barometer6.h:250
BAROMETER6_ERROR
@ BAROMETER6_ERROR
Definition: barometer6.h:300
barometer6_get_a0_b00_coef
void barometer6_get_a0_b00_coef(barometer6_t *ctx, float *coef_a0, float *coef_b00)
Barometer 6 calculate a0 and b00 conpensation coefficients data function.