Go to the documentation of this file.
35 #include "mikrosdk_version.h"
38 #if mikroSDK_GET_VERSION < 20800ul
39 #include "rcu_delays.h"
45 #include "drv_digital_out.h"
46 #include "drv_digital_in.h"
47 #include "drv_i2c_master.h"
48 #include "drv_spi_master.h"
71 #define PRESSURE20_REG_TRIM1_MSB 0x05
72 #define PRESSURE20_REG_TRIM2_LSB 0x06
73 #define PRESSURE20_REG_TRIM2_MSB 0x07
74 #define PRESSURE20_REG_DEVICE_ID 0x0C
75 #define PRESSURE20_REG_IO_DRIVE_STRENGTH 0x0D
76 #define PRESSURE20_REG_OTP_CONFIG1 0xAC
77 #define PRESSURE20_REG_OTP_MR_LSB 0xAD
78 #define PRESSURE20_REG_OTP_MR_MSB 0xAE
79 #define PRESSURE20_REG_OTP_MRA_LSB 0xAF
80 #define PRESSURE20_REG_OTP_MRA_MSB 0xB0
81 #define PRESSURE20_REG_OTP_MRB_LSB 0xB1
82 #define PRESSURE20_REG_OTP_MRB_MSB 0xB2
83 #define PRESSURE20_REG_OTP_ADDRESS_REG 0xB5
84 #define PRESSURE20_REG_OTP_COMMAND_REG 0xB6
85 #define PRESSURE20_REG_OTP_RDATA 0xB8
86 #define PRESSURE20_REG_OTP_STATUS 0xB9
87 #define PRESSURE20_REG_OTP_DBG2 0xBC
88 #define PRESSURE20_REG_MASTER_LOCK 0xBE
89 #define PRESSURE20_REG_OTP_STATUS2 0xBF
90 #define PRESSURE20_REG_MODE_SELECT 0xC0
91 #define PRESSURE20_REG_INTERRUPT_STATUS 0xC1
92 #define PRESSURE20_REG_INTERRUPT_MASK 0xC2
93 #define PRESSURE20_REG_FIFO_CONFIG 0xC3
94 #define PRESSURE20_REG_FIFO_FILL 0xC4
95 #define PRESSURE20_REG_SPI_MODE 0xC5
96 #define PRESSURE20_REG_PRESS_ABS_LSB 0xC7
97 #define PRESSURE20_REG_PRESS_ABS_MSB 0xC8
98 #define PRESSURE20_REG_PRESS_DELTA_LSB 0xC9
99 #define PRESSURE20_REG_PRESS_DELTA_MSB 0xCA
100 #define PRESSURE20_REG_DEVICE_STATUS 0xCD
101 #define PRESSURE20_REG_I3C_INFO 0xCE
102 #define PRESSURE20_REG_VERSION 0xD3
103 #define PRESSURE20_REG_DUMMY 0xEE
104 #define PRESSURE20_REG_PRESS_DATA_0 0xFA
105 #define PRESSURE20_REG_PRESS_DATA_1 0xFB
106 #define PRESSURE20_REG_PRESS_DATA_2 0xFC
107 #define PRESSURE20_REG_TEMP_DATA_0 0xFD
108 #define PRESSURE20_REG_TEMP_DATA_1 0xFE
109 #define PRESSURE20_REG_TEMP_DATA_2 0xFF
127 #define PRESSURE20_TRIM1_MSB_PEFE_OFFSET_MASK 0x3F
128 #define PRESSURE20_TRIM2_LSB_HFOSC_MASK 0x7F
129 #define PRESSURE20_TRIM2_MSB_PEFE_GAIN_MASK 0x70
130 #define PRESSURE20_TRIM2_MSB_BG_PTAT_MASK 0x0F
136 #define PRESSURE20_OTP_ADDRESS_OFFSET 0xF8
137 #define PRESSURE20_OTP_ADDRESS_GAIN 0xF9
138 #define PRESSURE20_OTP_ADDRESS_HFOSC 0xFA
139 #define PRESSURE20_OTP_COMMAND_READ_ACTION 0x10
145 #define PRESSURE20_OTP_MRA_LSB 0x04
146 #define PRESSURE20_OTP_MRA_MSB 0x04
147 #define PRESSURE20_OTP_MRB_LSB 0x21
148 #define PRESSURE20_OTP_MRB_MSB 0x20
149 #define PRESSURE20_OTP_MR_LSB 0x10
150 #define PRESSURE20_OTP_MR_MSB 0x80
156 #define PRESSURE20_OTP_WRITE_SWITCH 0x02
157 #define PRESSURE20_OTP_ENABLE 0x01
158 #define PRESSURE20_OTP_DISABLE 0x00
164 #define PRESSURE20_OTP_RESET_SET 0x80
165 #define PRESSURE20_OTP_RESET_CLEAR 0x00
171 #define PRESSURE20_BUSY 0x01
177 #define PRESSURE20_BOOT_UP_STATUS 0x01
183 #define PRESSURE20_MASTER_LOCK 0x00
184 #define PRESSURE20_MASTER_UNLOCK 0x1F
190 #define PRESSURE20_MEAS_CONFIG_MODE0_ODR_25HZ 0x00
191 #define PRESSURE20_MEAS_CONFIG_MODE1_ODR_120HZ 0x20
192 #define PRESSURE20_MEAS_CONFIG_MODE2_ODR_40HZ 0x40
193 #define PRESSURE20_MEAS_CONFIG_MODE3_ODR_2HZ 0x60
194 #define PRESSURE20_MEAS_CONFIG_MODE4 0x80
195 #define PRESSURE20_FORCED_MEAS_TRIGGER 0x10
196 #define PRESSURE20_MEAS_MODE_TRIGGER 0x00
197 #define PRESSURE20_MEAS_MODE_CONTINUOUS 0x08
198 #define PRESSURE20_POWER_MODE_NORMAL 0x00
199 #define PRESSURE20_POWER_MODE_ACTIVE 0x04
200 #define PRESSURE20_FIFO_READOUT_MODE_PRESS_1ST 0x00
201 #define PRESSURE20_FIFO_READOUT_MODE_TEMP_ONLY 0x01
202 #define PRESSURE20_FIFO_READOUT_MODE_TEMP_1ST 0x02
203 #define PRESSURE20_FIFO_READOUT_MODE_PRESS_ONLY 0x03
209 #define PRESSURE20_MODE_SYNC_STATUS 0x01
215 #define PRESSURE20_FIFO_FLUSH 0x80
216 #define PRESSURE20_FIFO_EMPTY 0x40
217 #define PRESSURE20_FIFO_FULL 0x20
218 #define PRESSURE20_FIFO_LEVEL_EMPTY 0x00
219 #define PRESSURE20_FIFO_LEVEL_1 0x01
220 #define PRESSURE20_FIFO_LEVEL_2 0x02
221 #define PRESSURE20_FIFO_LEVEL_3 0x03
222 #define PRESSURE20_FIFO_LEVEL_4 0x04
223 #define PRESSURE20_FIFO_LEVEL_5 0x05
224 #define PRESSURE20_FIFO_LEVEL_6 0x06
225 #define PRESSURE20_FIFO_LEVEL_7 0x07
226 #define PRESSURE20_FIFO_LEVEL_8 0x08
227 #define PRESSURE20_FIFO_LEVEL_9 0x09
228 #define PRESSURE20_FIFO_LEVEL_10 0x0A
229 #define PRESSURE20_FIFO_LEVEL_11 0x0B
230 #define PRESSURE20_FIFO_LEVEL_12 0x0C
231 #define PRESSURE20_FIFO_LEVEL_13 0x0D
232 #define PRESSURE20_FIFO_LEVEL_14 0x0E
233 #define PRESSURE20_FIFO_LEVEL_15 0x0F
234 #define PRESSURE20_FIFO_LEVEL_FULL 0x10
240 #define PRESSURE20_INT_STAT_PRESS_DELTA 0x40
241 #define PRESSURE20_INT_STAT_PRESS_ABS 0x20
242 #define PRESSURE20_INT_STAT_FIFO_WMK_LOW 0x08
243 #define PRESSURE20_INT_STAT_FIFO_WMK_HIGH 0x04
244 #define PRESSURE20_INT_STAT_FIFO_UNDERFLOW 0x02
245 #define PRESSURE20_INT_STAT_FIFO_OVERFLOW 0x01
251 #define PRESSURE20_INT_MASK_RESERVED 0x80
252 #define PRESSURE20_INT_MASK_PRESS_DELTA 0x40
253 #define PRESSURE20_INT_MASK_PRESS_ABS 0x20
254 #define PRESSURE20_INT_MASK_FIFO_WMK_LOW 0x08
255 #define PRESSURE20_INT_MASK_FIFO_WMK_HIGH 0x04
256 #define PRESSURE20_INT_MASK_FIFO_UNDERFLOW 0x02
257 #define PRESSURE20_INT_MASK_FIFO_OVERFLOW 0x01
258 #define PRESSURE20_INT_MASK_ALL 0xFF
264 #define PRESSURE20_DEVICE_ID 0x63
270 #define PRESSURE20_PRESSURE_RES_RAW 0x020000ul
271 #define PRESSURE20_PRESSURE_RES_MBAR 400
272 #define PRESSURE20_PRESSURE_OFFSET_MBAR 700
273 #define PRESSURE20_TEMPERATURE_RES_RAW 0x040000ul
274 #define PRESSURE20_TEMPERATURE_RES_C 65
275 #define PRESSURE20_TEMPERATURE_OFFSET_C 25
281 #define PRESSURE20_SPI_READ_REG 0x3C
282 #define PRESSURE20_SPI_WRITE_REG 0x33
289 #define PRESSURE20_DEVICE_ADDRESS_0 0x63
290 #define PRESSURE20_DEVICE_ADDRESS_1 0x64
300 #define PRESSURE20_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
301 #define PRESSURE20_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
319 #define PRESSURE20_MAP_MIKROBUS( cfg, mikrobus ) \
320 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
321 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
322 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
323 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
324 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
325 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
326 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
604 #endif // PRESSURE20_H
err_t(* pressure20_master_io_t)(struct pressure20_s *, uint8_t, uint8_t *, uint8_t)
Pressure 20 Click driver interface.
Definition: pressure20.h:346
err_t pressure20_generic_write(pressure20_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Pressure 20 data writing function.
pin_name_t sck
Definition: pressure20.h:378
digital_in_t int_pin
Definition: pressure20.h:354
pressure20_drv_t
Pressure 20 Click driver selector.
Definition: pressure20.h:336
err_t pressure20_read_otp_data(pressure20_t *ctx, uint8_t otp_address, uint8_t *data_out)
Pressure 20 read otp data function.
err_t pressure20_read_data(pressure20_t *ctx, float *pressure, float *temperature)
Pressure 20 read data function.
spi_master_chip_select_polarity_t cs_polarity
Definition: pressure20.h:387
Pressure 20 Click context object.
Definition: pressure20.h:353
err_t pressure20_clear_interrupts(pressure20_t *ctx)
Pressure 20 clear interrupts function.
@ PRESSURE20_DRV_SEL_SPI
Definition: pressure20.h:337
err_t pressure20_check_communication(pressure20_t *ctx)
Pressure 20 check communication function.
This file contains SPI specific macros, functions, etc.
pin_name_t int_pin
Definition: pressure20.h:380
err_t pressure20_init(pressure20_t *ctx, pressure20_cfg_t *cfg)
Pressure 20 initialization function.
uint8_t i2c_address
Definition: pressure20.h:383
pin_name_t sda
Definition: pressure20.h:375
uint32_t i2c_speed
Definition: pressure20.h:382
Pressure 20 Click configuration object.
Definition: pressure20.h:373
pressure20_drv_t drv_sel
Definition: pressure20.h:361
@ PRESSURE20_ERROR
Definition: pressure20.h:400
uint8_t slave_address
Definition: pressure20.h:359
void pressure20_drv_interface_selection(pressure20_cfg_t *cfg, pressure20_drv_t drv_sel)
Pressure 20 driver interface setup function.
spi_master_t spi
Definition: pressure20.h:357
@ PRESSURE20_DRV_SEL_I2C
Definition: pressure20.h:338
@ PRESSURE20_OK
Definition: pressure20.h:399
pin_name_t scl
Definition: pressure20.h:374
struct pressure20_s pressure20_t
Pressure 20 Click context object.
pressure20_master_io_t write_f
Definition: pressure20.h:363
err_t pressure20_generic_read(pressure20_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Pressure 20 data reading function.
pressure20_drv_t drv_sel
Definition: pressure20.h:389
i2c_master_t i2c
Definition: pressure20.h:356
pressure20_master_io_t read_f
Definition: pressure20.h:364
uint8_t pressure20_get_int_pin(pressure20_t *ctx)
Pressure 20 get int pin function.
err_t pressure20_write_mode_select(pressure20_t *ctx, uint8_t mode_select)
Pressure 20 write mode select function.
uint32_t spi_speed
Definition: pressure20.h:385
spi_master_mode_t spi_mode
Definition: pressure20.h:386
pin_name_t miso
Definition: pressure20.h:376
pin_name_t cs
Definition: pressure20.h:379
pin_name_t mosi
Definition: pressure20.h:377
pin_name_t chip_select
Definition: pressure20.h:360
err_t pressure20_read_register(pressure20_t *ctx, uint8_t reg, uint8_t *data_out)
Pressure 20 read register function.
err_t pressure20_write_register(pressure20_t *ctx, uint8_t reg, uint8_t data_in)
Pressure 20 write register function.
void pressure20_cfg_setup(pressure20_cfg_t *cfg)
Pressure 20 configuration object setup function.
pressure20_return_value_t
Pressure 20 Click return value data.
Definition: pressure20.h:398
err_t pressure20_default_cfg(pressure20_t *ctx)
Pressure 20 default configuration function.