Go to the documentation of this file.
35 #include "drv_digital_out.h"
36 #include "drv_digital_in.h"
37 #include "drv_i2c_master.h"
38 #include "drv_spi_master.h"
61 #define ACCELQVAR_REG_PIN_CTRL 0x0C
62 #define ACCELQVAR_REG_WAKE_UP_DUR_EXT 0x0E
63 #define ACCELQVAR_REG_WHO_AM_I 0x0F
64 #define ACCELQVAR_REG_CTRL1 0x10
65 #define ACCELQVAR_REG_CTRL2 0x11
66 #define ACCELQVAR_REG_CTRL3 0x12
67 #define ACCELQVAR_REG_CTRL4 0x13
68 #define ACCELQVAR_REG_CTRL5 0x14
69 #define ACCELQVAR_REG_FIFO_CTRL 0x15
70 #define ACCELQVAR_REG_FIFO_WTM 0x16
71 #define ACCELQVAR_REG_INTERRUPT_CFG 0x17
72 #define ACCELQVAR_REG_SIXD 0x18
73 #define ACCELQVAR_REG_WAKE_UP_THS 0x1C
74 #define ACCELQVAR_REG_WAKE_UP_DUR 0x1D
75 #define ACCELQVAR_REG_FREE_FALL 0x1E
76 #define ACCELQVAR_REG_MD1_CFG 0x1F
77 #define ACCELQVAR_REG_MD2_CFG 0x20
78 #define ACCELQVAR_REG_WAKE_UP_SRC 0x21
79 #define ACCELQVAR_REG_TAP_SRC 0x22
80 #define ACCELQVAR_REG_SIXD_SRC 0x23
81 #define ACCELQVAR_REG_ALL_INT_SRC 0x24
82 #define ACCELQVAR_REG_STATUS 0x25
83 #define ACCELQVAR_REG_FIFO_STATUS1 0x26
84 #define ACCELQVAR_REG_FIFO_STATUS2 0x27
85 #define ACCELQVAR_REG_OUT_X_L 0x28
86 #define ACCELQVAR_REG_OUT_X_H 0x29
87 #define ACCELQVAR_REG_OUT_Y_L 0x2A
88 #define ACCELQVAR_REG_OUT_Y_H 0x2B
89 #define ACCELQVAR_REG_OUT_Z_L 0x2C
90 #define ACCELQVAR_REG_OUT_Z_H 0x2D
91 #define ACCELQVAR_REG_OUT_T_AH_QVAR_L 0x2E
92 #define ACCELQVAR_REG_OUT_T_AH_QVAR_H 0x2F
93 #define ACCELQVAR_REG_AH_QVAR_CFG 0x31
94 #define ACCELQVAR_REG_SELF_TEST 0x32
95 #define ACCELQVAR_REG_I3C_IF_CTRL 0x33
96 #define ACCELQVAR_REG_EMB_FUNC_STATUS_MAINPAGE 0x34
97 #define ACCELQVAR_REG_FSM_STATUS_MAINPAGE 0x35
98 #define ACCELQVAR_REG_MLC_STATUS_MAINPAGE 0x36
99 #define ACCELQVAR_REG_SLEEP 0x3D
100 #define ACCELQVAR_REG_IF_WAKE_UP 0x3E
101 #define ACCELQVAR_REG_FUNC_CFG_ACCESS 0x3F
102 #define ACCELQVAR_REG_FIFO_DATA_OUT_TAG 0x40
103 #define ACCELQVAR_REG_FIFO_DATA_OUT_X_L 0x41
104 #define ACCELQVAR_REG_FIFO_DATA_OUT_X_H 0x42
105 #define ACCELQVAR_REG_FIFO_DATA_OUT_Y_L 0x43
106 #define ACCELQVAR_REG_FIFO_DATA_OUT_Y_H 0x44
107 #define ACCELQVAR_REG_FIFO_DATA_OUT_Z_L 0x45
108 #define ACCELQVAR_REG_FIFO_DATA_OUT_Z_H 0x46
109 #define ACCELQVAR_REG_FIFO_BATCH_DEC 0x47
110 #define ACCELQVAR_REG_TAP_CFG0 0x6F
111 #define ACCELQVAR_REG_TAP_CFG1 0x70
112 #define ACCELQVAR_REG_TAP_CFG2 0x71
113 #define ACCELQVAR_REG_TAP_CFG3 0x72
114 #define ACCELQVAR_REG_TAP_CFG4 0x73
115 #define ACCELQVAR_REG_TAP_CFG5 0x74
116 #define ACCELQVAR_REG_TAP_CFG6 0x75
117 #define ACCELQVAR_REG_TIMESTAMP0 0x7A
118 #define ACCELQVAR_REG_TIMESTAMP1 0x7B
119 #define ACCELQVAR_REG_TIMESTAMP2 0x7C
120 #define ACCELQVAR_REG_TIMESTAMP3 0x7D
138 #define ACCELQVAR_WHO_AM_I 0x47
144 #define ACCELQVAR_CTRL1_INT1_ON_RES 0x40
145 #define ACCELQVAR_CTRL1_SW_RESET 0x20
146 #define ACCELQVAR_CTRL1_IF_ADD_INC 0x10
147 #define ACCELQVAR_CTRL1_DRDY_PULSED 0x08
148 #define ACCELQVAR_CTRL1_WU_X_EN 0x04
149 #define ACCELQVAR_CTRL1_WU_Y_EN 0x02
150 #define ACCELQVAR_CTRL1_WU_Z_EN 0x01
156 #define ACCELQVAR_CTRL2_INT1_BOOT 0x80
157 #define ACCELQVAR_CTRL2_INT1_FIFO_FULL 0x40
158 #define ACCELQVAR_CTRL2_INT1_FIFO_TH 0x20
159 #define ACCELQVAR_CTRL2_INT1_FIFO_OVR 0x10
160 #define ACCELQVAR_CTRL2_INT1_DRDY 0x08
166 #define ACCELQVAR_CTRL3_INT2_BOOT 0x80
167 #define ACCELQVAR_CTRL3_INT2_FIFO_FULL 0x40
168 #define ACCELQVAR_CTRL3_INT2_FIFO_TH 0x20
169 #define ACCELQVAR_CTRL3_INT2_FIFO_OVR 0x10
170 #define ACCELQVAR_CTRL3_INT2_DRDY 0x08
171 #define ACCELQVAR_CTRL3_HP_EN 0x04
172 #define ACCELQVAR_CTRL3_ST_SIGN_Y 0x02
173 #define ACCELQVAR_CTRL3_ST_SIGN_X 0x01
179 #define ACCELQVAR_CTRL4_INACT_ODR_25 0xC0
180 #define ACCELQVAR_CTRL4_INACT_ODR_3 0x80
181 #define ACCELQVAR_CTRL4_INACT_ODR1_6 0x40
182 #define ACCELQVAR_CTRL4_INACT_ODR1_STAT 0x00
183 #define ACCELQVAR_CTRL4_BDU 0x20
184 #define ACCELQVAR_CTRL4_EMB_FUNC_EN 0x10
185 #define ACCELQVAR_CTRL4_FIFO_EN 0x08
186 #define ACCELQVAR_CTRL4_SOC 0x02
187 #define ACCELQVAR_CTRL4_BOOT 0x01
193 #define ACCELQVAR_CTRL5_ODR_ONE_SHOT_IFACE 0xF0
194 #define ACCELQVAR_CTRL5_ODR_ONE_SHOT_INT2 0xE0
195 #define ACCELQVAR_CTRL5_ODR_800_HZ 0xB0
196 #define ACCELQVAR_CTRL5_ODR_400_HZ 0xA0
197 #define ACCELQVAR_CTRL5_ODR_200_HZ 0x90
198 #define ACCELQVAR_CTRL5_ODR_100_HZ 0x80
199 #define ACCELQVAR_CTRL5_ODR_50_HZ 0x70
200 #define ACCELQVAR_CTRL5_ODR_25_HZ 0x60
201 #define ACCELQVAR_CTRL5_ODR_12_5_HZ 0x50
202 #define ACCELQVAR_CTRL5_ODR_6_HZ 0x40
203 #define ACCELQVAR_CTRL5_ODR_ULP_25_HZ 0x30
204 #define ACCELQVAR_CTRL5_ODR_ULP_3_HZ 0x20
205 #define ACCELQVAR_CTRL5_ODR_ULP_1_6_HZ 0x10
206 #define ACCELQVAR_CTRL5_ODR_PWR_DOWN 0x00
207 #define ACCELQVAR_CTRL5_BW_ODR_16 0x0C
208 #define ACCELQVAR_CTRL5_BW_ODR_8 0x08
209 #define ACCELQVAR_CTRL5_BW_ODR_4 0x04
210 #define ACCELQVAR_CTRL5_BW_ODR_2 0x00
211 #define ACCELQVAR_CTRL5_FS_16_G 0x03
212 #define ACCELQVAR_CTRL5_FS_8_G 0x02
213 #define ACCELQVAR_CTRL5_FS_4_G 0x01
214 #define ACCELQVAR_CTRL5_FS_2_G 0x00
220 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_EN 0x80
221 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_NOTCH_EN 0x40
222 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_NOTCH_CUTOFF 0x00
223 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_C_ZIN_75_MOHM 0x0C
224 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_C_ZIN_310_MOHM 0x08
225 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_C_ZIN_175_MOHM 0x04
226 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_C_ZIN_520_MOHM 0x00
227 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_GAIN_4 0x03
228 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_GAIN_2 0x02
229 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_GAIN_1 0x01
230 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_GAIN_0_5 0x00
236 #define ACCELQVAR_IF_WAKE_UP_SOFT_PD 0x01
242 #define ACCELQVAR_SENSITIVITY_FS_2G 0.061f
243 #define ACCELQVAR_SENSITIVITY_FS_4G 0.122f
244 #define ACCELQVAR_SENSITIVITY_FS_8G 0.244f
245 #define ACCELQVAR_SENSITIVITY_FS_16G 0.488f
251 #define ACCELQVAR_QVAR_DIVIDER 74.4f
252 #define ACCELQVAR_TEMP_DIVIDER 355.5f
253 #define ACCELQVAR_TEMP_ZERO_VAL 25.0f
260 #define ACCELQVAR_DEVICE_ADDRESS_GND 0x18
261 #define ACCELQVAR_DEVICE_ADDRESS_VCC 0x19
271 #define ACCELQVAR_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
272 #define ACCELQVAR_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
290 #define ACCELQVAR_MAP_MIKROBUS( cfg, mikrobus ) \
291 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
292 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
293 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
294 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
295 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
296 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
297 cfg.it1 = MIKROBUS( mikrobus, MIKROBUS_AN ); \
298 cfg.it2 = MIKROBUS( mikrobus, MIKROBUS_INT )
634 #endif // ACCELQVAR_H
pin_name_t scl
Definition: accelqvar.h:350
err_t accelqvar_generic_write(accelqvar_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
AccelQvar data writing function.
spi_master_t spi
Definition: accelqvar.h:331
float y
Definition: accelqvar.h:377
uint32_t i2c_speed
Definition: accelqvar.h:359
err_t accelqvar_get_axes_data(accelqvar_t *ctx, accelqvar_axes_t *axes)
AccelQvar get the accel sensor axes function.
@ ACCELQVAR_OK
Definition: accelqvar.h:388
pin_name_t it1
Definition: accelqvar.h:356
This file contains SPI specific macros, functions, etc.
digital_in_t it1
Definition: accelqvar.h:327
spi_master_mode_t spi_mode
Definition: accelqvar.h:363
pin_name_t miso
Definition: accelqvar.h:352
uint8_t accelqvar_get_int2(accelqvar_t *ctx)
AccelQvar get interrupt 2 function.
pin_name_t sck
Definition: accelqvar.h:354
accelqvar_master_io_t read_f
Definition: accelqvar.h:338
err_t accelqvar_spi_wake_up(accelqvar_t *ctx)
AccelQvar SPI wake up function.
err_t accelqvar_set_odr(accelqvar_t *ctx, uint8_t odr)
AccelQvar ODR selection function.
float z
Definition: accelqvar.h:378
uint8_t i2c_address
Definition: accelqvar.h:360
@ ACCELQVAR_DRV_SEL_I2C
Definition: accelqvar.h:310
struct accelqvar_s accelqvar_t
AccelQvar Click context object.
err_t accelqvar_en_qvar(accelqvar_t *ctx)
AccelQvar enable QVAR function.
pin_name_t chip_select
Definition: accelqvar.h:334
err_t accelqvar_init(accelqvar_t *ctx, accelqvar_cfg_t *cfg)
AccelQvar initialization function.
err_t accelqvar_set_fsr(accelqvar_t *ctx, uint8_t fsr)
AccelQvar set full scale function.
uint8_t slave_address
Definition: accelqvar.h:333
void accelqvar_cfg_setup(accelqvar_cfg_t *cfg)
AccelQvar configuration object setup function.
AccelQvar Click axes data.
Definition: accelqvar.h:375
float sensitivity
Definition: accelqvar.h:340
spi_master_chip_select_polarity_t cs_polarity
Definition: accelqvar.h:364
uint8_t accelqvar_get_int1(accelqvar_t *ctx)
AccelQvar get interrupt 1 function.
accelqvar_drv_t drv_sel
Definition: accelqvar.h:366
pin_name_t cs
Definition: accelqvar.h:355
accelqvar_master_io_t write_f
Definition: accelqvar.h:337
accelqvar_drv_t
AccelQvar Click driver selector.
Definition: accelqvar.h:308
err_t(* accelqvar_master_io_t)(struct accelqvar_s *, uint8_t, uint8_t *, uint8_t)
Definition: accelqvar.h:319
digital_in_t it2
Definition: accelqvar.h:328
accelqvar_return_value_t
AccelQvar Click return value data.
Definition: accelqvar.h:387
AccelQvar Click context object.
Definition: accelqvar.h:326
AccelQvar Click configuration object.
Definition: accelqvar.h:349
pin_name_t sda
Definition: accelqvar.h:351
pin_name_t mosi
Definition: accelqvar.h:353
err_t accelqvar_generic_read(accelqvar_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
AccelQvar data reading function.
err_t accelqvar_sw_reset(accelqvar_t *ctx)
AccelQvar software reset function.
err_t accelqvar_get_device_id(accelqvar_t *ctx, uint8_t *device_id)
AccelQvar get device ID function.
pin_name_t it2
Definition: accelqvar.h:357
@ ACCELQVAR_ERROR
Definition: accelqvar.h:389
uint32_t spi_speed
Definition: accelqvar.h:362
@ ACCELQVAR_DRV_SEL_SPI
Definition: accelqvar.h:309
float x
Definition: accelqvar.h:376
err_t accelqvar_get_qvar_data(accelqvar_t *ctx, float *qvar)
AccelQvar get QVAR data function.
err_t accelqvar_default_cfg(accelqvar_t *ctx)
AccelQvar default configuration function.
accelqvar_drv_t drv_sel
Definition: accelqvar.h:335
i2c_master_t i2c
Definition: accelqvar.h:330
void accelqvar_drv_interface_sel(accelqvar_cfg_t *cfg, accelqvar_drv_t drv_sel)
AccelQvar driver interface setup function.