38 #include "drv_digital_out.h" 39 #include "drv_digital_in.h" 40 #include "drv_i2c_master.h" 41 #include "drv_spi_master.h" 54 #define PRESSURE5_MAP_MIKROBUS( cfg, mikrobus ) \ 55 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \ 56 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \ 57 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \ 58 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \ 59 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \ 60 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \ 61 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT ) 68 #define PRESSURE5_MASTER_I2C 0 69 #define PRESSURE5_MASTER_SPI 1 76 #define PRESSURE5_RETVAL uint8_t 78 #define PRESSURE5_OK 0x00 79 #define PRESSURE5_INIT_ERROR 0xFF 86 #define PRESSURE5_REG_DEVICE_ID 0x00 87 #define PRESSURE5_REG_ERROR 0x02 88 #define PRESSURE5_REG_PRESSURE_DATA_0 0x04 89 #define PRESSURE5_REG_PRESSURE_DATA_1 0x05 90 #define PRESSURE5_REG_PRESSURE_DATA_2 0x06 91 #define PRESSURE5_REG_TEMPERATURE_DATA_0 0x07 92 #define PRESSURE5_REG_TEMPERATURE_DATA_1 0x08 93 #define PRESSURE5_REG_TEMPERATURE_DATA_2 0x09 94 #define PRESSURE5_REG_SENSOR_TIME_0 0x0C 95 #define PRESSURE5_REG_SENSOR_TIME_1 0x0D 96 #define PRESSURE5_REG_SENSOR_TIME_2 0x0E 97 #define PRESSURE5_REG_EVENT 0x10 98 #define PRESSURE5_REG_INT_STATUS 0x11 99 #define PRESSURE5_REG_FIFO_LENGTH 0x13 100 #define PRESSURE5_REG_FIFO_DATA 0x14 101 #define PRESSURE5_REG_FIFO_WATERMARK_0 0x15 102 #define PRESSURE5_REG_FIFO_WATERMARK_1 0x16 103 #define PRESSURE5_REG_FIFO_CONFIG_1 0x17 104 #define PRESSURE5_REG_FIFO_CONFIG_2 0x18 105 #define PRESSURE5_REG_INT_CTRL 0x19 106 #define PRESSURE5_REG_IF_CONFIG 0x1A 107 #define PRESSURE5_REG_POWER_CTRL 0x1B 108 #define PRESSURE5_REG_OSR 0x1C 109 #define PRESSURE5_REG_ODR 0x1D 110 #define PRESSURE5_REG_CONFIGURATION 0x1F 111 #define PRESSURE5_REG_COMMAND 0x7E 118 #define PRESSURE5_FCFG_FIFO_ENABLE 0x01 119 #define PRESSURE5_FCFG_FIFO_DISABLE 0x00 120 #define PRESSURE5_FCFG_FIFO_STOP_ON_FULL_ENABLE 0x02 121 #define PRESSURE5_FCFG_FIFO_STOP_ON_FULL_DISABLE 0x00 122 #define PRESSURE5_FCFG_FIFO_TIME_ENABLE 0x04 123 #define PRESSURE5_FCFG_FIFO_TIME_DISABLE 0x00 124 #define PRESSURE5_FCFG_FIFO_PRESSURE_STORE_ENABLE 0x08 125 #define PRESSURE5_FCFG_FIFO_PRESSURE_STORE_DISABLE 0x00 126 #define PRESSURE5_FCFG_FIFO_TEMP_STORE_ENABLE 0x10 127 #define PRESSURE5_FCFG_FIFO_TEMP_STORE_DISABLE 0x00 134 #define PRESSURE5_INTCFG_INT_OUTPUT_PUSH_PULL 0x00 135 #define PRESSURE5_INTCFG_INT_OUTPUT_OPEN_DRAIN 0x01 136 #define PRESSURE5_INTCFG_INT_LEVEL_ACTIVE_HIGH 0x02 137 #define PRESSURE5_INTCFG_INT_LEVEL_ACTIVE_LOW 0x00 138 #define PRESSURE5_INTCFG_INT_LATCH_ENABLE 0x04 139 #define PRESSURE5_INTCFG_INT_LATCH_DISABLE 0x00 140 #define PRESSURE5_INTCFG_FIFO_WTM_ENABLE 0x08 141 #define PRESSURE5_INTCFG_FIFO_WTM_DISABLE 0x00 142 #define PRESSURE5_INTCFG_FIFO_FULL_ENABLE 0x10 143 #define PRESSURE5_INTCFG_FIFO_FULL_DISABLE 0x00 144 #define PRESSURE5_INTCFG_DATA_READY_ENABLE 0x20 145 #define PRESSURE5_INTCFG_DATA_READY_DISABLE 0x00 152 #define PRESSURE5_IFCFG_SPI_4_WIRE 0x00 153 #define PRESSURE5_IFCFG_SPI_3_WIRE 0x01 154 #define PRESSURE5_IFCFG_I2C_WATCHDOG_ENABLE 0x02 155 #define PRESSURE5_IFCFG_I2C_WATCHDOG_DISABLE 0x00 156 #define PRESSURE5_IFCFG_I2C_WATCHDOG_SHORT_1p25ms 0x00 157 #define PRESSURE5_IFCFG_I2C_WATCHDOG_LONG_40ms 0x04 164 #define PRESSURE5_PCTRL_PRESSURE_SENSOR_DISABLE 0x00 165 #define PRESSURE5_PCTRL_PRESSURE_SENSOR_ENABLE 0x01 166 #define PRESSURE5_PCTRL_TEMP_SENSOR_DISABLE 0x00 167 #define PRESSURE5_PCTRL_TEMP_SENSOR_ENABLE 0x02 168 #define PRESSURE5_PCTRL_MODE_SLEEP 0x00 169 #define PRESSURE5_PCTRL_MODE_FORCED 0x10 170 #define PRESSURE5_PCTRL_MODE_NORMAL 0x30 177 #define PRESSURE5_OSR_PRESSURE_x1 0x00 178 #define PRESSURE5_OSR_PRESSURE_x2 0x01 179 #define PRESSURE5_OSR_PRESSURE_x4 0x02 180 #define PRESSURE5_OSR_PRESSURE_x8 0x03 181 #define PRESSURE5_OSR_PRESSURE_x16 0x04 182 #define PRESSURE5_OSR_PRESSURE_x32 0x05 183 #define PRESSURE5_OSR_TEMP_x1 0x00 >> 1 184 #define PRESSURE5_OSR_TEMP_x2 0x10 >> 1 185 #define PRESSURE5_OSR_TEMP_x4 0x20 >> 1 186 #define PRESSURE5_OSR_TEMP_x8 0x30 >> 1 187 #define PRESSURE5_OSR_TEMP_x16 0x40 >> 1 188 #define PRESSURE5_OSR_TEMP_x32 0x50 >> 1 195 #define PRESSURE5_ODR_200 0x00 196 #define PRESSURE5_ODR_100 0x01 197 #define PRESSURE5_ODR_50 0x02 198 #define PRESSURE5_ODR_25 0x03 199 #define PRESSURE5_ODR_12p5 0x04 200 #define PRESSURE5_ODR_6p25 0x05 201 #define PRESSURE5_ODR_3p1 0x06 202 #define PRESSURE5_ODR_1p5 0x07 203 #define PRESSURE5_ODR_0p75 0x08 204 #define PRESSURE5_ODR_0p39 0x09 205 #define PRESSURE5_ODR_0p2 0x0A 206 #define PRESSURE5_ODR_0p1 0x0B 207 #define PRESSURE5_ODR_0p05 0x0C 208 #define PRESSURE5_ODR_0p02 0x0D 209 #define PRESSURE5_ODR_0p01 0x0E 210 #define PRESSURE5_ODR_0p006 0x0F 211 #define PRESSURE5_ODR_0p003 0x10 212 #define PRESSURE5_ODR_0p0015 0x11 219 #define PRESSURE5_CFG_FILTER_COEFF_0 0x00 220 #define PRESSURE5_CFG_FILTER_COEFF_1 0x01 << 1 221 #define PRESSURE5_CFG_FILTER_COEFF_3 0x02 << 1 222 #define PRESSURE5_CFG_FILTER_COEFF_7 0x03 << 1 223 #define PRESSURE5_CFG_FILTER_COEFF_15 0x04 << 1 224 #define PRESSURE5_CFG_FILTER_COEFF_31 0x05 << 1 225 #define PRESSURE5_CFG_FILTER_COEFF_63 0x06 << 1 226 #define PRESSURE5_CFG_FILTER_COEFF_127 0x07 << 1 233 #define PRESSURE5_CMD_EXTMODE_EN_MIDDLE 0x34 234 #define PRESSURE5_CMD_FIFO_FLUSH 0xB0 235 #define PRESSURE5_CMD_SOFTWARE_RESET 0xB6 242 #define PRESSURE5_DEVICE_SLAVE_ADDR_GND 0x76 243 #define PRESSURE5_DEVICE_SLAVE_ADDR_VCC 0x77 250 #define PRESSURE5_TEMPERATURE_RAW_DATA 0x07 251 #define PRESSURE5_PRESSURE_RAW_DATA 0x04 258 #define PRESSURE5_DEVICE_ID 0x50 523 #endif // _PRESSURE5_H_ uint16_t T1
Definition: pressure5.h:334
hal_spi_mode_t spi_mode
Definition: pressure5.h:325
pin_name_t mosi
Definition: pressure5.h:312
uint32_t pressure5_get_raw_data(pressure5_t *ctx, uint8_t data_addr)
Get (Temperature or Pressure) Raw data.
hal_i2c_address_t slave_address
Definition: pressure5.h:295
pin_name_t miso
Definition: pressure5.h:311
PRESSURE5_RETVAL pressure5_init(pressure5_t *ctx, pressure5_cfg_t *cfg)
Initialization function.
int8_t P7
Definition: pressure5.h:344
Definition: pressure5.h:353
int8_t T3
Definition: pressure5.h:336
hal_i2c_address_t i2c_address
Definition: pressure5.h:323
float P4
Definition: pressure5.h:362
float P5
Definition: pressure5.h:363
pin_name_t cs
Definition: pressure5.h:314
uint16_t P5
Definition: pressure5.h:342
pressure5_select_t sel
Definition: pressure5.h:327
int8_t P3
Definition: pressure5.h:340
float P6
Definition: pressure5.h:364
int8_t P11
Definition: pressure5.h:348
i2c_master_t i2c
Definition: pressure5.h:290
int16_t P1
Definition: pressure5.h:338
float P9
Definition: pressure5.h:367
float P2
Definition: pressure5.h:360
pin_name_t scl
Definition: pressure5.h:309
float T2
Definition: pressure5.h:356
int16_t P2
Definition: pressure5.h:339
float T3
Definition: pressure5.h:357
pin_name_t int_pin
Definition: pressure5.h:318
hal_i2c_speed_t i2c_speed
Definition: pressure5.h:322
void pressure5_generic_write(pressure5_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic write function.
void pressure5_default_cfg(pressure5_t *ctx)
Click Default Configuration function.
uint16_t T2
Definition: pressure5.h:335
void pressure5_cfg_setup(pressure5_cfg_t *cfg)
Config Object Initialization function.
int8_t P4
Definition: pressure5.h:341
float P10
Definition: pressure5.h:368
void pressure5_software_reset(pressure5_t *ctx)
Software Reset.
float pressure5_get_temperature_data(pressure5_t *ctx)
Get Temperature data in C.
Definition: pressure5.h:332
void(* pressure5_master_io_t)(struct pressure5_s *, uint8_t, uint8_t *, uint8_t)
Master Input/Output type.
Definition: pressure5.h:277
float P11
Definition: pressure5.h:369
digital_in_t int_pin
Definition: pressure5.h:286
float T1
Definition: pressure5.h:355
Click configuration structure definition.
Definition: pressure5.h:305
uint8_t pressure5_get_interrupt_state(pressure5_t *ctx)
Get Interrupt pin state.
spi_master_t spi
Definition: pressure5.h:291
uint8_t pressure5_select_t
Communication type.
Definition: pressure5.h:272
void pressure5_generic_read(pressure5_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic read function.
float P3
Definition: pressure5.h:361
pressure5_master_io_t read_f
Definition: pressure5.h:297
int8_t P8
Definition: pressure5.h:345
float pressure5_get_pressure_data(pressure5_t *ctx)
Get Pressure data in mBar.
uint8_t pressure5_read_byte(pressure5_t *ctx, uint8_t reg_addr)
Function for read one byte from register.
float P1
Definition: pressure5.h:359
Click ctx object definition.
Definition: pressure5.h:282
int8_t P10
Definition: pressure5.h:347
float P7
Definition: pressure5.h:365
pin_name_t sda
Definition: pressure5.h:310
struct pressure5_s pressure5_t
Click ctx object definition.
pin_name_t sck
Definition: pressure5.h:313
#define PRESSURE5_RETVAL
Definition: pressure5.h:76
void pressure5_write_byte(pressure5_t *ctx, uint8_t reg_addr, uint8_t data_in)
Function for write one byte to the register.
float P8
Definition: pressure5.h:366
int16_t P9
Definition: pressure5.h:346
uint16_t P6
Definition: pressure5.h:343
pressure5_select_t master_sel
Definition: pressure5.h:298
pressure5_master_io_t write_f
Definition: pressure5.h:296
hal_spi_speed_t spi_speed
Definition: pressure5.h:324
void pressure5_update_coefficient(pressure5_t *ctx)
Update calibration coefficients.