diffpress3  2.1.0.0
diffpress3.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 DIFFPRESS3_H
29 #define DIFFPRESS3_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_analog_in.h"
48 #include "drv_i2c_master.h"
49 
70 #define DIFFPRESS3_PMIN -100.0f // Measurement range minimum
71 #define DIFFPRESS3_PMAX 1000.0f // Measurement range maximum
72 #define DIFFPRESS3_ACCP_ABS_MIN -0.3f // Absolute accuracy minimum
73 #define DIFFPRESS3_ACCP_ABS_TYP 0.1f // Absolute accuracy typical
74 #define DIFFPRESS3_ACCP_ABS_MAX 0.3f // Absolute accuracy minimum
75 #define DIFFPRESS3_ACCP_TOT_MIN -0.5f // Total accuracy minimum
76 #define DIFFPRESS3_ACCP_TOT_TYP 0.25f // Total accuracy typical
77 #define DIFFPRESS3_ACCP_TOT_MAX 0.5f // Total accuracy minimum
78 #define DIFFPRESS3_SENP 0.04196f // Sensitivity (digital)
79 #define DIFFPRESS3_AN_SENP 275.0f // Sensitivity (analog)
80 #define DIFFPRESS3_ACCP_REP 0.01f // Repeatability
81 #define DIFFPRESS3_ACCP_DRIFT 0.05f // Long term drift
82 #define DIFFPRESS3_DIG_OUTOFF 5660.0f // Digital Zero pressure offset
83 #define DIFFPRESS3_DIG_FSS 26214.0f // DigitalFull scale span
84 #define DIFFPRESS3_DIG_OUTP_MIN 3207.0f // Digital Output at minimum pressure
85 #define DIFFPRESS3_DIG_OUTP_MAX 29491.0f // Digital Output at maximum pressure
86 #define DIFFPRESS3_AN_OUTOFF 0.87f // Analog Zero pressure offset
87 #define DIFFPRESS3_AN_FSS 4.0f // Analog Full scale span
88 #define DIFFPRESS3_AN_OUTP_MIN 0.5f // Analog Output at minimum pressure
89 #define DIFFPRESS3_AN_OUTP_MAX 4.5f // Analog Output at maximum pressure
90 #define DIFFPRESS3_PRES 0x7FFF // Resolution
91 
96 #define DIFFPRESS3_TRANGE_MIN 0.0f // Measurement range minimum
97 #define DIFFPRESS3_TRANGE_MAX 70.0f // Measurement range maximum
98 #define DIFFPRESS3_TRES 0x7FFF // Resolution
99 #define DIFFPRESS3_SENT 0.004272 // Sensitivity
100 #define DIFFPRESS3_OUTT_MIN 8192.0 // Output at minimum temperature
101 #define DIFFPRESS3_OUTT_MAX 24576.0 // Output at maximum temperature
102 
107 #define DIFFPRESS3_ADC_RESOLUTION 0x7FFF
108 #define DIFFPRESS3_VREF_3V3 3.3
109 #define DIFFPRESS3_VREF_5V 5.0
110 
116 #define DIFFPRESS3_SET_DEV_ADDR 0x78
117  // diffpress3_set
119 
134 #define DIFFPRESS3_MAP_MIKROBUS( cfg, mikrobus ) \
135  cfg.an = MIKROBUS( mikrobus, MIKROBUS_AN ); \
136  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
137  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA )
138  // diffpress3_map // diffpress3
141 
146 typedef enum
147 {
152 
157 typedef enum
158 {
163 
168 typedef enum
169 {
174 
179 typedef struct
180 {
181  analog_in_t adc;
182  i2c_master_t i2c;
184  uint8_t slave_address;
185  float vref;
191 } diffpress3_t;
192 
197 typedef struct
198 {
199  pin_name_t an;
200  pin_name_t scl;
201  pin_name_t sda;
203  analog_in_resolution_t resolution;
204  float vref;
206  uint32_t i2c_speed;
207  uint8_t i2c_address;
214 
219 typedef enum
220 {
222  DIFFPRESS3_ERROR = -1
223 
225 
242 
258 
273 
287 err_t diffpress3_read_raw_adc ( diffpress3_t *ctx, uint16_t *raw_adc, diffpress3_d_sel_t data_sel );
288 
300 err_t diffpress3_read_voltage ( diffpress3_t *ctx, float *voltage );
301 
313 err_t diffpress3_set_vref ( diffpress3_t *ctx, float vref );
314 
328 err_t diffpress3_get_pressure ( diffpress3_t *ctx, float *pressure );
329 
343 err_t diffpress3_get_temperature ( diffpress3_t *ctx, float *temperature );
344 
359 err_t diffpress3_get_digit_out_data ( diffpress3_t *ctx, uint16_t *press_data, uint16_t *temp_data );
360 
361 #ifdef __cplusplus
362 }
363 #endif
364 #endif // DIFFPRESS3_H
365  // diffpress3
367 
368 // ------------------------------------------------------------------------ END
diffpress3_t::vref
float vref
Definition: diffpress3.h:185
DIFFPRESS3_AN_SEL_5V
@ DIFFPRESS3_AN_SEL_5V
Definition: diffpress3.h:159
diffpress3_read_voltage
err_t diffpress3_read_voltage(diffpress3_t *ctx, float *voltage)
Diff Press 3 read voltage level function.
diffpress3_return_value_t
diffpress3_return_value_t
Diff Press 3 Click return value data.
Definition: diffpress3.h:220
diffpress3_cfg_t::an
pin_name_t an
Definition: diffpress3.h:199
diffpress3_an_sel_t
diffpress3_an_sel_t
Diff Press 3 Click AN SEL selector value.
Definition: diffpress3.h:158
diffpress3_t::i2c
i2c_master_t i2c
Definition: diffpress3.h:182
diffpress3_t
Diff Press 3 Click context object.
Definition: diffpress3.h:180
DIFFPRESS3_ERROR
@ DIFFPRESS3_ERROR
Definition: diffpress3.h:222
diffpress3_get_pressure
err_t diffpress3_get_pressure(diffpress3_t *ctx, float *pressure)
Diff Press 3 get pressure function.
diffpress3_cfg_t
Diff Press 3 Click configuration object.
Definition: diffpress3.h:198
diffpress3_cfg_setup
void diffpress3_cfg_setup(diffpress3_cfg_t *cfg)
Diff Press 3 configuration object setup function.
DIFFPRESS3_RAW_DATA_TEMPERATURE
@ DIFFPRESS3_RAW_DATA_TEMPERATURE
Definition: diffpress3.h:171
diffpress3_d_sel_t
diffpress3_d_sel_t
Diff Press 3 Click digital output data selector.
Definition: diffpress3.h:169
diffpress3_set_vref
err_t diffpress3_set_vref(diffpress3_t *ctx, float vref)
Diff Press 3 set vref function.
diffpress3_cfg_t::resolution
analog_in_resolution_t resolution
Definition: diffpress3.h:203
diffpress3_cfg_t::vref
float vref
Definition: diffpress3.h:204
DIFFPRESS3_DRV_SEL_I2C
@ DIFFPRESS3_DRV_SEL_I2C
Definition: diffpress3.h:149
diffpress3_read_raw_adc
err_t diffpress3_read_raw_adc(diffpress3_t *ctx, uint16_t *raw_adc, diffpress3_d_sel_t data_sel)
Diff Press 3 read raw ADC value function.
diffpress3_drv_t
diffpress3_drv_t
Diff Press 3 Click driver selector.
Definition: diffpress3.h:147
diffpress3_cfg_t::sda
pin_name_t sda
Definition: diffpress3.h:201
diffpress3_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: diffpress3.h:206
diffpress3_drv_interface_selection
void diffpress3_drv_interface_selection(diffpress3_cfg_t *cfg, diffpress3_drv_t drv_sel)
Diff Press 3 driver interface setup function.
diffpress3_t::slave_address
uint8_t slave_address
Definition: diffpress3.h:184
diffpress3_get_temperature
err_t diffpress3_get_temperature(diffpress3_t *ctx, float *temperature)
Diff Press 3 get temperature function.
diffpress3_cfg_t::data_sel
diffpress3_d_sel_t data_sel
Definition: diffpress3.h:211
diffpress3_cfg_t::an_sel
diffpress3_an_sel_t an_sel
Definition: diffpress3.h:210
DIFFPRESS3_RAW_DATA_PRESSURE
@ DIFFPRESS3_RAW_DATA_PRESSURE
Definition: diffpress3.h:170
DIFFPRESS3_OK
@ DIFFPRESS3_OK
Definition: diffpress3.h:221
diffpress3_get_digit_out_data
err_t diffpress3_get_digit_out_data(diffpress3_t *ctx, uint16_t *press_data, uint16_t *temp_data)
Diff Press 3 get digital output data function.
DIFFPRESS3_DRV_SEL_ADC
@ DIFFPRESS3_DRV_SEL_ADC
Definition: diffpress3.h:148
diffpress3_cfg_t::scl
pin_name_t scl
Definition: diffpress3.h:200
diffpress3_t::drv_sel
diffpress3_drv_t drv_sel
Definition: diffpress3.h:186
DIFFPRESS3_AN_SEL_2V5
@ DIFFPRESS3_AN_SEL_2V5
Definition: diffpress3.h:160
diffpress3_t::adc
analog_in_t adc
Definition: diffpress3.h:181
diffpress3_cfg_t::drv_sel
diffpress3_drv_t drv_sel
Definition: diffpress3.h:209
diffpress3_t::data_sel
diffpress3_d_sel_t data_sel
Definition: diffpress3.h:189
diffpress3_cfg_t::i2c_address
uint8_t i2c_address
Definition: diffpress3.h:207
diffpress3_init
err_t diffpress3_init(diffpress3_t *ctx, diffpress3_cfg_t *cfg)
Diff Press 3 initialization function.
diffpress3_t::an_sel
diffpress3_an_sel_t an_sel
Definition: diffpress3.h:188