pressure22  2.1.0.0
pressure22.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 PRESSURE22_H
29 #define PRESSURE22_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 
59 #define PRESSURE22_CMD_ADC_READ 0x00
60 #define PRESSURE22_CMD_RESET 0x1E
61 #define PRESSURE22_CMD_PROM_VERSION 0xA0
62 #define PRESSURE22_CMD_PROM_READ_C1 0xA2
63 #define PRESSURE22_CMD_PROM_READ_C2 0xA4
64 #define PRESSURE22_CMD_PROM_READ_C3 0xA6
65 #define PRESSURE22_CMD_PROM_READ_C4 0xA8
66 #define PRESSURE22_CMD_PROM_READ_C5 0xAA
67 #define PRESSURE22_CMD_PROM_READ_C6 0xAC
68 #define PRESSURE22_CMD_PROM_END 0xAE
69  // pressure22_cmd
71 
86 #define PRESSURE22_CRC4_BIT_MASK 0x000Fu
87 #define PRESSURE22_VER_DEF_BIT_MASK 0x007Fu
88 #define PRESSURE22_FCT_DEF_BIT_MASK 0x001Fu
89 
94 #define PRESSURE22_TEMPERATURE_20_C 40.0f
95 #define PRESSURE22_TEMPERATURE_10_C 10.0f
96 #define PRESSURE22_TEMP_TYPICAL 2000.0f
97 #define PRESSURE22_TEMP_DIV 100.0f
98 #define PRESSURE22_OFF_ACT_TEMP_MULTP 131072.0f
99 #define PRESSURE22_OFF_ACT_TEMP_DIV 64.0f
100 #define PRESSURE22_SENS_ACT_TEMP_MULTP 65536.0f
101 #define PRESSURE22_SENS_ACT_TEMP_DIV 128.0f
102 #define PRESSURE22_TEMP_COMP_PRESS_DIV 2097152.0f
103 #define PRESSURE22_COMP_PRESS_DIV 32768.0f
104 #define PRESSURE22_PRESS_CONVERT_PA_MBAR 100.0f
105 #define PRESSURE22_SEC_COMP_TI_DIV 34359738368.0f
106 #define PRESSURE22_SEC_COMP_TI_1_MULTP 14.0f
107 #define PRESSURE22_SEC_COMP_OFFI_1_MULTP 35.0f
108 #define PRESSURE22_SEC_COMP_SENS_MULTP 63.0f
109 #define PRESSURE22_SEC_COMP_OFFI_1_DIV 8.0f
110 #define PRESSURE22_SEC_COMP_TI_2_MULTP 12.0f
111 #define PRESSURE22_SEC_COMP_OFFI_2_MULTP 30.0f
112 #define PRESSURE22_SEC_COMP_OFFI_2_DIV 256.0f
113 #define PRESSURE22_SEC_COMP_SENSI_DIV 32.0f
114 
120 #define PRESSURE22_DEVICE_ADDRESS 0x76
121  // pressure22_set
123 
138 #define PRESSURE22_MAP_MIKROBUS( cfg, mikrobus ) \
139  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
140  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA )
141  // pressure22_map // pressure22
144 
149 typedef enum
150 {
157 
159 
164 typedef enum
165 {
172 
174 
179 typedef struct
180 {
181  // Modules
182  i2c_master_t i2c;
184  // I2C slave address
185  uint8_t slave_address;
187  // Calibration data (factory calibrated) from PROM
188  uint16_t prom_pt;
189  uint8_t prom_crc;
190  uint8_t prom_ver;
191  uint8_t prom_fct;
192  uint16_t prom_c1;
193  uint16_t prom_c2;
194  uint16_t prom_c3;
195  uint16_t prom_c4;
196  uint16_t prom_c5;
197  uint16_t prom_c6;
199  // Conversions
203 } pressure22_t;
204 
209 typedef struct
210 {
211  pin_name_t scl;
212  pin_name_t sda;
214  uint32_t i2c_speed;
215  uint8_t i2c_address;
218 
223 typedef enum
224 {
226  PRESSURE22_ERROR = -1
227 
229 
246 
261 
275 
290 err_t pressure22_generic_write ( pressure22_t *ctx, uint8_t cmd, uint8_t *data_in, uint8_t len );
291 
306 err_t pressure22_generic_read ( pressure22_t *ctx, uint8_t cmd, uint8_t *data_out, uint8_t len );
307 
322 err_t pressure22_set_command ( pressure22_t *ctx, uint8_t cmd );
323 
338 
353 err_t pressure22_get_adc_data ( pressure22_t *ctx, uint32_t *adc );
354 
371 err_t pressure22_get_prom_data ( pressure22_t *ctx, uint8_t cmd_prom, uint16_t *prom );
372 
388 
403 
422  pressure22_temp_conv_t temp_conv );
423 
439 err_t pressure22_get_measurement_data ( pressure22_t *ctx, float *temperature, float *pressure );
440 
441 
442 
443 #ifdef __cplusplus
444 }
445 #endif
446 #endif // PRESSURE22_H
447  // pressure22
449 
450 // ------------------------------------------------------------------------ END
pressure22_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: pressure22.h:214
pressure22_set_command
err_t pressure22_set_command(pressure22_t *ctx, uint8_t cmd)
Pressure 22 set the command function.
pressure22_get_prom_data
err_t pressure22_get_prom_data(pressure22_t *ctx, uint8_t cmd_prom, uint16_t *prom)
Pressure 22 gets the PROM data function.
PRESSURE22_CMD_PRESS_OSR_4096
@ PRESSURE22_CMD_PRESS_OSR_4096
Definition: pressure22.h:155
pressure22_cfg_t::i2c_address
uint8_t i2c_address
Definition: pressure22.h:215
pressure22_t::prom_fct
uint8_t prom_fct
Definition: pressure22.h:191
pressure22_t::slave_address
uint8_t slave_address
Definition: pressure22.h:185
PRESSURE22_CMD_PRESS_OSR_2048
@ PRESSURE22_CMD_PRESS_OSR_2048
Definition: pressure22.h:154
PRESSURE22_CMD_TEMP_OSR_256
@ PRESSURE22_CMD_TEMP_OSR_256
Definition: pressure22.h:166
pressure22_t::prom_c1
uint16_t prom_c1
Definition: pressure22.h:192
pressure22_t::prom_c2
uint16_t prom_c2
Definition: pressure22.h:193
pressure22_t::prom_ver
uint8_t prom_ver
Definition: pressure22.h:190
pressure22_init
err_t pressure22_init(pressure22_t *ctx, pressure22_cfg_t *cfg)
Pressure 22 initialization function.
pressure22_t::prom_crc
uint8_t prom_crc
Definition: pressure22.h:189
pressure22_cfg_t
Pressure 22 Click configuration object.
Definition: pressure22.h:210
pressure22_t
Pressure 22 Click context object.
Definition: pressure22.h:180
pressure22_get_calibration_data
err_t pressure22_get_calibration_data(pressure22_t *ctx)
Pressure 22 gets the calibration data function.
pressure22_t::prom_c3
uint16_t prom_c3
Definition: pressure22.h:194
pressure22_t::i2c
i2c_master_t i2c
Definition: pressure22.h:182
PRESSURE22_CMD_PRESS_OSR_256
@ PRESSURE22_CMD_PRESS_OSR_256
Definition: pressure22.h:151
PRESSURE22_ERROR
@ PRESSURE22_ERROR
Definition: pressure22.h:226
PRESSURE22_CMD_TEMP_OSR_8192
@ PRESSURE22_CMD_TEMP_OSR_8192
Definition: pressure22.h:171
pressure22_get_adc_data
err_t pressure22_get_adc_data(pressure22_t *ctx, uint32_t *adc)
Pressure 22 gets the ADC data function.
pressure22_return_value_t
pressure22_return_value_t
Pressure 22 Click return value data.
Definition: pressure22.h:224
PRESSURE22_CMD_PRESS_OSR_1024
@ PRESSURE22_CMD_PRESS_OSR_1024
Definition: pressure22.h:153
pressure22_generic_write
err_t pressure22_generic_write(pressure22_t *ctx, uint8_t cmd, uint8_t *data_in, uint8_t len)
Pressure 22 I2C writing function.
PRESSURE22_CMD_PRESS_OSR_512
@ PRESSURE22_CMD_PRESS_OSR_512
Definition: pressure22.h:152
PRESSURE22_CMD_TEMP_OSR_2048
@ PRESSURE22_CMD_TEMP_OSR_2048
Definition: pressure22.h:169
pressure22_cfg_t::sda
pin_name_t sda
Definition: pressure22.h:212
pressure22_temp_conv_t
pressure22_temp_conv_t
Pressure 22 Click temperature conversion value data.
Definition: pressure22.h:165
PRESSURE22_CMD_TEMP_OSR_4096
@ PRESSURE22_CMD_TEMP_OSR_4096
Definition: pressure22.h:170
pressure22_t::prom_c4
uint16_t prom_c4
Definition: pressure22.h:195
pressure22_get_measurement_data
err_t pressure22_get_measurement_data(pressure22_t *ctx, float *temperature, float *pressure)
Pressure 22 get the measurement data function.
pressure22_t::prom_c6
uint16_t prom_c6
Definition: pressure22.h:197
pressure22_cfg_t::scl
pin_name_t scl
Definition: pressure22.h:211
PRESSURE22_CMD_PRESS_OSR_8192
@ PRESSURE22_CMD_PRESS_OSR_8192
Definition: pressure22.h:156
PRESSURE22_CMD_TEMP_OSR_1024
@ PRESSURE22_CMD_TEMP_OSR_1024
Definition: pressure22.h:168
pressure22_set_conversion
void pressure22_set_conversion(pressure22_t *ctx, pressure22_press_conv_t press_conv, pressure22_temp_conv_t temp_conv)
Pressure 22 set conversion function.
PRESSURE22_CMD_TEMP_OSR_512
@ PRESSURE22_CMD_TEMP_OSR_512
Definition: pressure22.h:167
pressure22_cfg_setup
void pressure22_cfg_setup(pressure22_cfg_t *cfg)
Pressure 22 configuration object setup function.
pressure22_t::prom_pt
uint16_t prom_pt
Definition: pressure22.h:188
pressure22_generic_read
err_t pressure22_generic_read(pressure22_t *ctx, uint8_t cmd, uint8_t *data_out, uint8_t len)
Pressure 22 I2C reading function.
pressure22_t::temp_conv
pressure22_temp_conv_t temp_conv
Definition: pressure22.h:201
pressure22_default_cfg
err_t pressure22_default_cfg(pressure22_t *ctx)
Pressure 22 default configuration function.
pressure22_check_data_validity
err_t pressure22_check_data_validity(pressure22_t *ctx)
Pressure 22 checks data validity function.
pressure22_press_conv_t
pressure22_press_conv_t
Pressure 22 Click pressure conversion value data.
Definition: pressure22.h:150
pressure22_sw_reset
err_t pressure22_sw_reset(pressure22_t *ctx)
Pressure 22 sw reset function.
PRESSURE22_OK
@ PRESSURE22_OK
Definition: pressure22.h:225
pressure22_t::prom_c5
uint16_t prom_c5
Definition: pressure22.h:196
pressure22_t::press_conv
pressure22_press_conv_t press_conv
Definition: pressure22.h:200