Go to the documentation of this file.
39 #ifdef PREINIT_SUPPORTED
43 #ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49 #include "drv_digital_out.h"
50 #include "drv_digital_in.h"
51 #include "drv_i2c_master.h"
52 #include "drv_spi_master.h"
75 #define ACCELQVAR_REG_PIN_CTRL 0x0C
76 #define ACCELQVAR_REG_WAKE_UP_DUR_EXT 0x0E
77 #define ACCELQVAR_REG_WHO_AM_I 0x0F
78 #define ACCELQVAR_REG_CTRL1 0x10
79 #define ACCELQVAR_REG_CTRL2 0x11
80 #define ACCELQVAR_REG_CTRL3 0x12
81 #define ACCELQVAR_REG_CTRL4 0x13
82 #define ACCELQVAR_REG_CTRL5 0x14
83 #define ACCELQVAR_REG_FIFO_CTRL 0x15
84 #define ACCELQVAR_REG_FIFO_WTM 0x16
85 #define ACCELQVAR_REG_INTERRUPT_CFG 0x17
86 #define ACCELQVAR_REG_SIXD 0x18
87 #define ACCELQVAR_REG_WAKE_UP_THS 0x1C
88 #define ACCELQVAR_REG_WAKE_UP_DUR 0x1D
89 #define ACCELQVAR_REG_FREE_FALL 0x1E
90 #define ACCELQVAR_REG_MD1_CFG 0x1F
91 #define ACCELQVAR_REG_MD2_CFG 0x20
92 #define ACCELQVAR_REG_WAKE_UP_SRC 0x21
93 #define ACCELQVAR_REG_TAP_SRC 0x22
94 #define ACCELQVAR_REG_SIXD_SRC 0x23
95 #define ACCELQVAR_REG_ALL_INT_SRC 0x24
96 #define ACCELQVAR_REG_STATUS 0x25
97 #define ACCELQVAR_REG_FIFO_STATUS1 0x26
98 #define ACCELQVAR_REG_FIFO_STATUS2 0x27
99 #define ACCELQVAR_REG_OUT_X_L 0x28
100 #define ACCELQVAR_REG_OUT_X_H 0x29
101 #define ACCELQVAR_REG_OUT_Y_L 0x2A
102 #define ACCELQVAR_REG_OUT_Y_H 0x2B
103 #define ACCELQVAR_REG_OUT_Z_L 0x2C
104 #define ACCELQVAR_REG_OUT_Z_H 0x2D
105 #define ACCELQVAR_REG_OUT_T_AH_QVAR_L 0x2E
106 #define ACCELQVAR_REG_OUT_T_AH_QVAR_H 0x2F
107 #define ACCELQVAR_REG_AH_QVAR_CFG 0x31
108 #define ACCELQVAR_REG_SELF_TEST 0x32
109 #define ACCELQVAR_REG_I3C_IF_CTRL 0x33
110 #define ACCELQVAR_REG_EMB_FUNC_STATUS_MAINPAGE 0x34
111 #define ACCELQVAR_REG_FSM_STATUS_MAINPAGE 0x35
112 #define ACCELQVAR_REG_MLC_STATUS_MAINPAGE 0x36
113 #define ACCELQVAR_REG_SLEEP 0x3D
114 #define ACCELQVAR_REG_IF_WAKE_UP 0x3E
115 #define ACCELQVAR_REG_FUNC_CFG_ACCESS 0x3F
116 #define ACCELQVAR_REG_FIFO_DATA_OUT_TAG 0x40
117 #define ACCELQVAR_REG_FIFO_DATA_OUT_X_L 0x41
118 #define ACCELQVAR_REG_FIFO_DATA_OUT_X_H 0x42
119 #define ACCELQVAR_REG_FIFO_DATA_OUT_Y_L 0x43
120 #define ACCELQVAR_REG_FIFO_DATA_OUT_Y_H 0x44
121 #define ACCELQVAR_REG_FIFO_DATA_OUT_Z_L 0x45
122 #define ACCELQVAR_REG_FIFO_DATA_OUT_Z_H 0x46
123 #define ACCELQVAR_REG_FIFO_BATCH_DEC 0x47
124 #define ACCELQVAR_REG_TAP_CFG0 0x6F
125 #define ACCELQVAR_REG_TAP_CFG1 0x70
126 #define ACCELQVAR_REG_TAP_CFG2 0x71
127 #define ACCELQVAR_REG_TAP_CFG3 0x72
128 #define ACCELQVAR_REG_TAP_CFG4 0x73
129 #define ACCELQVAR_REG_TAP_CFG5 0x74
130 #define ACCELQVAR_REG_TAP_CFG6 0x75
131 #define ACCELQVAR_REG_TIMESTAMP0 0x7A
132 #define ACCELQVAR_REG_TIMESTAMP1 0x7B
133 #define ACCELQVAR_REG_TIMESTAMP2 0x7C
134 #define ACCELQVAR_REG_TIMESTAMP3 0x7D
152 #define ACCELQVAR_WHO_AM_I 0x47
158 #define ACCELQVAR_CTRL1_INT1_ON_RES 0x40
159 #define ACCELQVAR_CTRL1_SW_RESET 0x20
160 #define ACCELQVAR_CTRL1_IF_ADD_INC 0x10
161 #define ACCELQVAR_CTRL1_DRDY_PULSED 0x08
162 #define ACCELQVAR_CTRL1_WU_X_EN 0x04
163 #define ACCELQVAR_CTRL1_WU_Y_EN 0x02
164 #define ACCELQVAR_CTRL1_WU_Z_EN 0x01
170 #define ACCELQVAR_CTRL2_INT1_BOOT 0x80
171 #define ACCELQVAR_CTRL2_INT1_FIFO_FULL 0x40
172 #define ACCELQVAR_CTRL2_INT1_FIFO_TH 0x20
173 #define ACCELQVAR_CTRL2_INT1_FIFO_OVR 0x10
174 #define ACCELQVAR_CTRL2_INT1_DRDY 0x08
180 #define ACCELQVAR_CTRL3_INT2_BOOT 0x80
181 #define ACCELQVAR_CTRL3_INT2_FIFO_FULL 0x40
182 #define ACCELQVAR_CTRL3_INT2_FIFO_TH 0x20
183 #define ACCELQVAR_CTRL3_INT2_FIFO_OVR 0x10
184 #define ACCELQVAR_CTRL3_INT2_DRDY 0x08
185 #define ACCELQVAR_CTRL3_HP_EN 0x04
186 #define ACCELQVAR_CTRL3_ST_SIGN_Y 0x02
187 #define ACCELQVAR_CTRL3_ST_SIGN_X 0x01
193 #define ACCELQVAR_CTRL4_INACT_ODR_25 0xC0
194 #define ACCELQVAR_CTRL4_INACT_ODR_3 0x80
195 #define ACCELQVAR_CTRL4_INACT_ODR1_6 0x40
196 #define ACCELQVAR_CTRL4_INACT_ODR1_STAT 0x00
197 #define ACCELQVAR_CTRL4_BDU 0x20
198 #define ACCELQVAR_CTRL4_EMB_FUNC_EN 0x10
199 #define ACCELQVAR_CTRL4_FIFO_EN 0x08
200 #define ACCELQVAR_CTRL4_SOC 0x02
201 #define ACCELQVAR_CTRL4_BOOT 0x01
207 #define ACCELQVAR_CTRL5_ODR_ONE_SHOT_IFACE 0xF0
208 #define ACCELQVAR_CTRL5_ODR_ONE_SHOT_INT2 0xE0
209 #define ACCELQVAR_CTRL5_ODR_800_HZ 0xB0
210 #define ACCELQVAR_CTRL5_ODR_400_HZ 0xA0
211 #define ACCELQVAR_CTRL5_ODR_200_HZ 0x90
212 #define ACCELQVAR_CTRL5_ODR_100_HZ 0x80
213 #define ACCELQVAR_CTRL5_ODR_50_HZ 0x70
214 #define ACCELQVAR_CTRL5_ODR_25_HZ 0x60
215 #define ACCELQVAR_CTRL5_ODR_12_5_HZ 0x50
216 #define ACCELQVAR_CTRL5_ODR_6_HZ 0x40
217 #define ACCELQVAR_CTRL5_ODR_ULP_25_HZ 0x30
218 #define ACCELQVAR_CTRL5_ODR_ULP_3_HZ 0x20
219 #define ACCELQVAR_CTRL5_ODR_ULP_1_6_HZ 0x10
220 #define ACCELQVAR_CTRL5_ODR_PWR_DOWN 0x00
221 #define ACCELQVAR_CTRL5_BW_ODR_16 0x0C
222 #define ACCELQVAR_CTRL5_BW_ODR_8 0x08
223 #define ACCELQVAR_CTRL5_BW_ODR_4 0x04
224 #define ACCELQVAR_CTRL5_BW_ODR_2 0x00
225 #define ACCELQVAR_CTRL5_FS_16_G 0x03
226 #define ACCELQVAR_CTRL5_FS_8_G 0x02
227 #define ACCELQVAR_CTRL5_FS_4_G 0x01
228 #define ACCELQVAR_CTRL5_FS_2_G 0x00
234 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_EN 0x80
235 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_NOTCH_EN 0x40
236 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_NOTCH_CUTOFF 0x00
237 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_C_ZIN_75_MOHM 0x0C
238 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_C_ZIN_310_MOHM 0x08
239 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_C_ZIN_175_MOHM 0x04
240 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_C_ZIN_520_MOHM 0x00
241 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_GAIN_4 0x03
242 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_GAIN_2 0x02
243 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_GAIN_1 0x01
244 #define ACCELQVAR_AH_QVAR_CFG_AH_QVAR_GAIN_0_5 0x00
250 #define ACCELQVAR_IF_WAKE_UP_SOFT_PD 0x01
256 #define ACCELQVAR_SENSITIVITY_FS_2G 0.061f
257 #define ACCELQVAR_SENSITIVITY_FS_4G 0.122f
258 #define ACCELQVAR_SENSITIVITY_FS_8G 0.244f
259 #define ACCELQVAR_SENSITIVITY_FS_16G 0.488f
265 #define ACCELQVAR_QVAR_DIVIDER 74.4f
266 #define ACCELQVAR_TEMP_DIVIDER 355.5f
267 #define ACCELQVAR_TEMP_ZERO_VAL 25.0f
274 #define ACCELQVAR_DEVICE_ADDRESS_GND 0x18
275 #define ACCELQVAR_DEVICE_ADDRESS_VCC 0x19
285 #define ACCELQVAR_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
286 #define ACCELQVAR_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
304 #define ACCELQVAR_MAP_MIKROBUS( cfg, mikrobus ) \
305 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
306 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
307 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
308 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
309 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
310 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
311 cfg.it1 = MIKROBUS( mikrobus, MIKROBUS_AN ); \
312 cfg.it2 = MIKROBUS( mikrobus, MIKROBUS_INT )
648 #endif // ACCELQVAR_H
pin_name_t scl
Definition: accelqvar.h:364
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:345
float y
Definition: accelqvar.h:391
uint32_t i2c_speed
Definition: accelqvar.h:373
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:402
pin_name_t it1
Definition: accelqvar.h:370
This file contains SPI specific macros, functions, etc.
digital_in_t it1
Definition: accelqvar.h:341
spi_master_mode_t spi_mode
Definition: accelqvar.h:377
pin_name_t miso
Definition: accelqvar.h:366
uint8_t accelqvar_get_int2(accelqvar_t *ctx)
AccelQvar get interrupt 2 function.
pin_name_t sck
Definition: accelqvar.h:368
accelqvar_master_io_t read_f
Definition: accelqvar.h:352
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:392
uint8_t i2c_address
Definition: accelqvar.h:374
@ ACCELQVAR_DRV_SEL_I2C
Definition: accelqvar.h:324
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:348
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:347
void accelqvar_cfg_setup(accelqvar_cfg_t *cfg)
AccelQvar configuration object setup function.
AccelQvar Click axes data.
Definition: accelqvar.h:389
float sensitivity
Definition: accelqvar.h:354
spi_master_chip_select_polarity_t cs_polarity
Definition: accelqvar.h:378
uint8_t accelqvar_get_int1(accelqvar_t *ctx)
AccelQvar get interrupt 1 function.
accelqvar_drv_t drv_sel
Definition: accelqvar.h:380
pin_name_t cs
Definition: accelqvar.h:369
accelqvar_master_io_t write_f
Definition: accelqvar.h:351
accelqvar_drv_t
AccelQvar Click driver selector.
Definition: accelqvar.h:322
err_t(* accelqvar_master_io_t)(struct accelqvar_s *, uint8_t, uint8_t *, uint8_t)
Definition: accelqvar.h:333
digital_in_t it2
Definition: accelqvar.h:342
accelqvar_return_value_t
AccelQvar Click return value data.
Definition: accelqvar.h:401
AccelQvar Click context object.
Definition: accelqvar.h:340
AccelQvar Click configuration object.
Definition: accelqvar.h:363
pin_name_t sda
Definition: accelqvar.h:365
pin_name_t mosi
Definition: accelqvar.h:367
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:371
@ ACCELQVAR_ERROR
Definition: accelqvar.h:403
uint32_t spi_speed
Definition: accelqvar.h:376
@ ACCELQVAR_DRV_SEL_SPI
Definition: accelqvar.h:323
float x
Definition: accelqvar.h:390
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:349
i2c_master_t i2c
Definition: accelqvar.h:344
void accelqvar_drv_interface_sel(accelqvar_cfg_t *cfg, accelqvar_drv_t drv_sel)
AccelQvar driver interface setup function.