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"
76 #define AIRMOTION_DEVICE_CONFIG 0x11
77 #define AIRMOTION_DRIVE_CONFIG 0x13
78 #define AIRMOTION_INT_CONFIG 0x14
79 #define AIRMOTION_FIFO_CONFIG 0x16
80 #define AIRMOTION_TEMP_DATA1 0x1D
81 #define AIRMOTION_TEMP_DATA0 0x1E
82 #define AIRMOTION_ACCEL_DATA_X1 0x1F
83 #define AIRMOTION_ACCEL_DATA_X0 0x20
84 #define AIRMOTION_ACCEL_DATA_Y1 0x21
85 #define AIRMOTION_ACCEL_DATA_Y0 0x22
86 #define AIRMOTION_ACCEL_DATA_Z1 0x23
87 #define AIRMOTION_ACCEL_DATA_Z0 0x24
88 #define AIRMOTION_GYRO_DATA_X1 0x25
89 #define AIRMOTION_GYRO_DATA_X0 0x26
90 #define AIRMOTION_GYRO_DATA_Y1 0x27
91 #define AIRMOTION_GYRO_DATA_Y0 0x28
92 #define AIRMOTION_GYRO_DATA_Z1 0x29
93 #define AIRMOTION_GYRO_DATA_Z0 0x2A
94 #define AIRMOTION_TMST_FSYNCH 0x2B
95 #define AIRMOTION_TMST_FSYNCL 0x2C
96 #define AIRMOTION_INT_STATUS 0x2D
97 #define AIRMOTION_FIFO_COUNTH 0x2E
98 #define AIRMOTION_FIFO_COUNTL 0x2F
99 #define AIRMOTION_FIFO_DATA 0x30
100 #define AIRMOTION_APEX_DATA0 0x31
101 #define AIRMOTION_APEX_DATA1 0x32
102 #define AIRMOTION_APEX_DATA2 0x33
103 #define AIRMOTION_APEX_DATA3 0x34
104 #define AIRMOTION_APEX_DATA4 0x35
105 #define AIRMOTION_APEX_DATA5 0x36
106 #define AIRMOTION_INT_STATUS2 0x37
107 #define AIRMOTION_INT_STATUS3 0x38
108 #define AIRMOTION_SIGNAL_PATH_RESET 0x4B
109 #define AIRMOTION_INTF_CONFIG0 0x4C
110 #define AIRMOTION_INTF_CONFIG1 0x4D
111 #define AIRMOTION_PWR_MGMT0 0x4E
112 #define AIRMOTION_GYRO_CONFIG0 0x4F
113 #define AIRMOTION_ACCEL_CONFIG0 0x50
114 #define AIRMOTION_GYRO_CONFIG1 0x51
115 #define AIRMOTION_GYRO_ACCEL_CONFIG0 0x52
116 #define AIRMOTION_ACCEL_CONFIG1 0x53
117 #define AIRMOTION_TMST_CONFIG 0x54
118 #define AIRMOTION_APEX_CONFIG0 0x56
119 #define AIRMOTION_SMD_CONFIG 0x57
120 #define AIRMOTION_FIFO_CONFIG1 0x5F
121 #define AIRMOTION_FIFO_CONFIG2 0x60
122 #define AIRMOTION_FIFO_CONFIG3 0x61
123 #define AIRMOTION_FSYNC_CONFIG 0x62
124 #define AIRMOTION_INT_CONFIG0 0x63
125 #define AIRMOTION_INT_CONFIG1 0x64
126 #define AIRMOTION_INT_SOURCE0 0x65
127 #define AIRMOTION_INT_SOURCE1 0x66
128 #define AIRMOTION_INT_SOURCE3 0x68
129 #define AIRMOTION_INT_SOURCE4 0x69
130 #define AIRMOTION_FIFO_LOST_PKT0 0x6C
131 #define AIRMOTION_FIFO_LOST_PKT1 0x6D
132 #define AIRMOTION_SELF_TEST_CONFIG 0x70
133 #define AIRMOTION_WHO_AM_I 0x75
134 #define AIRMOTION_REG_BANK_SEL 0x76
140 #define AIRMOTION_SENSOR_CONFIG0 0x03
141 #define AIRMOTION_GYRO_CONFIG_STATIC2 0x0B
142 #define AIRMOTION_GYRO_CONFIG_STATIC3 0x0C
143 #define AIRMOTION_GYRO_CONFIG_STATIC4 0x0D
144 #define AIRMOTION_GYRO_CONFIG_STATIC5 0x0E
145 #define AIRMOTION_GYRO_CONFIG_STATIC6 0x0F
146 #define AIRMOTION_GYRO_CONFIG_STATIC7 0x10
147 #define AIRMOTION_GYRO_CONFIG_STATIC8 0x11
148 #define AIRMOTION_GYRO_CONFIG_STATIC9 0x12
149 #define AIRMOTION_GYRO_CONFIG_STATIC10 0x13
150 #define AIRMOTION_XG_ST_DATA 0x5F
151 #define AIRMOTION_YG_ST_DATA 0x60
152 #define AIRMOTION_ZG_ST_DATA 0x61
153 #define AIRMOTION_TMSTVAL0 0x62
154 #define AIRMOTION_TMSTVAL1 0x63
155 #define AIRMOTION_TMSTVAL2 0x64
156 #define AIRMOTION_INTF_CONFIG4 0x7A
157 #define AIRMOTION_INTF_CONFIG5 0x7B
163 #define AIRMOTION_ACCEL_CONFIG_STATIC2 0x03
164 #define AIRMOTION_ACCEL_CONFIG_STATIC3 0x04
165 #define AIRMOTION_ACCEL_CONFIG_STATIC4 0x05
166 #define AIRMOTION_XA_ST_DATA 0x3B
167 #define AIRMOTION_YA_ST_DATA 0x3C
168 #define AIRMOTION_ZA_ST_DATA 0x3D
174 #define AIRMOTION_APEX_CONFIG1 0x40
175 #define AIRMOTION_APEX_CONFIG2 0x41
176 #define AIRMOTION_APEX_CONFIG3 0x42
177 #define AIRMOTION_APEX_CONFIG4 0x43
178 #define AIRMOTION_APEX_CONFIG5 0x44
179 #define AIRMOTION_APEX_CONFIG6 0x45
180 #define AIRMOTION_APEX_CONFIG7 0x46
181 #define AIRMOTION_APEX_CONFIG8 0x47
182 #define AIRMOTION_APEX_CONFIG9 0x48
183 #define AIRMOTION_ACCEL_WOM_X_THR 0x4A
184 #define AIRMOTION_ACCEL_WOM_Y_THR 0x4B
185 #define AIRMOTION_ACCEL_WOM_Z_THR 0x4C
186 #define AIRMOTION_INT_SOURCE6 0x4D
187 #define AIRMOTION_INT_SOURCE7 0x4E
188 #define AIRMOTION_OFFSET_USER0 0x77
189 #define AIRMOTION_OFFSET_USER1 0x78
190 #define AIRMOTION_OFFSET_USER2 0x79
191 #define AIRMOTION_OFFSET_USER3 0x7A
192 #define AIRMOTION_OFFSET_USER4 0x7B
193 #define AIRMOTION_OFFSET_USER5 0x7C
194 #define AIRMOTION_OFFSET_USER6 0x7D
195 #define AIRMOTION_OFFSET_USER7 0x7E
196 #define AIRMOTION_OFFSET_USER8 0x7F
216 #define AIRMOTION_BANK0_SEL 0x00
217 #define AIRMOTION_BANK1_SEL 0x01
218 #define AIRMOTION_BANK2_SEL 0x02
219 #define AIRMOTION_BANK3_SEL 0x03
220 #define AIRMOTION_BANK4_SEL 0x04
226 #define AIRMOTION_SLEW_RATE_60nS 0x00
227 #define AIRMOTION_SLEW_RATE_36nS 0x01
228 #define AIRMOTION_SLEW_RATE_18nS 0x02
229 #define AIRMOTION_SLEW_RATE_12nS 0x03
230 #define AIRMOTION_SLEW_RATE_6nS 0x04
231 #define AIRMOTION_SLEW_RATE_2nS 0x05
237 #define AIRMOTION_SPI_MODE0_MODE3 0x00
238 #define AIRMOTION_SPI_MODE1_MODE2 0x01
240 #define AIRMOTION_ENABLE_SW_RESET 0x01
246 #define AIRMOTION_DMP_IDEL_FLAG 0x04
247 #define AIRMOTION_ACTIVITY_UNKNOWN 0x00
248 #define AIRMOTION_ACTIVITY_WALK 0x01
249 #define AIRMOTION_ACTIVITY_RUN 0x02
250 #define AIRMOTION_ACTIVITY_MASK 0x03
252 #define AIRMOTION_TAP_NUM_MASK 0x18
253 #define AIRMOTION_TAP_SINGLE 0x08
254 #define AIRMOTION_TAP_DOUBLE 0x10
255 #define AIRMOTION_TAP_AXIS_MASK 0x06
256 #define AIRMOTION_TAP_AXIS_X 0x00
257 #define AIRMOTION_TAP_AXIS_Y 0x02
258 #define AIRMOTION_TAP_AXIS_Z 0x04
259 #define AIRMOTION_TAP_DIR_MASK 0x01
260 #define AIRMOTION_TAP_DIR_POSITIVE 0x00
261 #define AIRMOTION_TAP_DIR_NEGATIVE 0x01
267 #define AIRMOTION_INT_INT2_MODE_PULSED 0x00
268 #define AIRMOTION_INT_INT2_MODE_LATCHED 0x20
269 #define AIRMOTION_INT_INT2_OPEN_DRAIN 0x00
270 #define AIRMOTION_INT_INT2_PUSH_PULL 0x10
271 #define AIRMOTION_INT_INT2_ACTIVE_LOW 0x00
272 #define AIRMOTION_INT_INT2_ACTIVE_HIGH 0x08
273 #define AIRMOTION_INT_INT1_MODE_PULSED 0x00
274 #define AIRMOTION_INT_INT1_MODE_LATCHED 0x04
275 #define AIRMOTION_INT_INT1_OPEN_DRAIN 0x00
276 #define AIRMOTION_INT_INT1_PUSH_PULL 0x02
277 #define AIRMOTION_INT_INT1_ACTIVE_LOW 0x00
278 #define AIRMOTION_INT_INT1_ACTIVE_HIGH 0x01
279 #define AIRMOTION_INT_CONFIG_MASK 0x3F
285 #define AIRMOTION_DRDY_INT_CLR_ON_STATUS_READ 0x00
286 #define AIRMOTION_DRDY_INT_CLR_FIFO_READ 0x20
287 #define AIRMOTION_DRDY_INT_CLR_STATUS_AND_REG 0x30
288 #define AIRMOTION_FIFO_INT_CLR_ON_STATUS_READ 0x00
289 #define AIRMOTION_FIFO_INT_CLR_FIFO_READ 0x80
290 #define AIRMOTION_FIFO_INT_CLR_STATUS_AND_REG 0xc0
291 #define AIRMOTION_FIFO_FULL_CLR_ON_STATUS_READ 0x00
292 #define AIRMOTION_FIFO_FULL_CLR_FIFO_READ 0x02
293 #define AIRMOTION_FIFO_FULL_CLR_STATUS_AND_REG 0x03
299 #define AIRMOTION_INT_TPULSE_100uS 0x00
300 #define AIRMOTION_INT_TPULSE_8uS 0x40
301 #define AIRMOTION_INT_TDEASSERT_DISABLE 0x20
302 #define AIRMOTION_INT_ASYNC_RESET_DISABLE 0x10
303 #define AIRMOTION_INT_ASYNC_RESET_ENABLE 0x00
304 #define AIRMOTION_INT_CONFIG1_MASK 0x70
310 #define AIRMOTION_INT_UI_FSYNC_INT1_EN 0x40
311 #define AIRMOTION_INT_PLL_RDY_INT1_EN 0x20
312 #define AIRMOTION_INT_RESET_DONE_INT1_EN 0x10
313 #define AIRMOTION_INT_UI_DRDY_INT1_EN 0x08
314 #define AIRMOTION_INT_FIFO_THS_INT1_EN 0x04
315 #define AIRMOTION_INT_FIFO_FULL_INT1_EN 0x02
316 #define AIRMOTION_INT_UI_AGC_RDY_INT1_EN 0x01
317 #define AIRMOTION_INT_SOURCE0_MASK 0x7F
323 #define AIRMOTION_SMD_INT1_EN 0x08
324 #define AIRMOTION_WOM_Z_INT1_EN 0x04
325 #define AIRMOTION_WOM_Y_INT1_EN 0x02
326 #define AIRMOTION_WOM_X_INT1_EN 0x01
327 #define AIRMOTION_INT_SOURCE1_MASK 0x0F
333 #define AIRMOTION_INT_UI_FSYNC_INT2_EN 0x40
334 #define AIRMOTION_INT_PLL_RDY_INT2_EN 0x20
335 #define AIRMOTION_INT_RESET_DONE_INT2_EN 0x10
336 #define AIRMOTION_INT_UI_DRDY_INT2_EN 0x08
337 #define AIRMOTION_INT_FIFO_THS_INT2_EN 0x04
338 #define AIRMOTION_INT_FIFO_FULL_INT2_EN 0x02
339 #define AIRMOTION_INT_UI_AGC_RDY_INT2_EN 0x01
340 #define AIRMOTION_INT_SOURCE3_MASK 0x7F
346 #define AIRMOTION_SMD_INT2_EN 0x08
347 #define AIRMOTION_WOM_Z_INT2_EN 0x04
348 #define AIRMOTION_WOM_Y_INT2_EN 0x02
349 #define AIRMOTION_WOM_X_INT2_EN 0x01
350 #define AIRMOTION_INT_SOURCE4_MASK 0x0F
356 #define AIRMOTION_INT_SOURCE6_STEP_DET_INT1_EN 0x20
357 #define AIRMOTION_INT_SOURCE6_STEP_CNT_INT1_EN 0x10
358 #define AIRMOTION_INT_SOURCE6_TILT_DET_INT1_EN 0x08
359 #define AIRMOTION_INT_SOURCE6_TAP_DET_INT1_EN 0x01
360 #define AIRMOTION_INT_SOURCE6_MASK 0x39
366 #define AIRMOTION_INT_SOURCE7_STEP_DET_INT2_EN 0x20
367 #define AIRMOTION_INT_SOURCE7_STEP_CNT_INT2_EN 0x10
368 #define AIRMOTION_INT_SOURCE7_TILT_DET_INT2_EN 0x08
369 #define AIRMOTION_INT_SOURCE7_TAP_DET_INT2_EN 0x01
370 #define AIRMOTION_INT_SOURCE7_MASK 0x39
376 #define AIRMOTION_UI_FSYNC_INT_FLAG 0x40
377 #define AIRMOTION_PLL_DONE_INT_FLAG 0x20
378 #define AIRMOTION_RESET_DONE_INT_FLAG 0x10
379 #define AIRMOTION_DATA_RDY_INT_FLAG 0x08
380 #define AIRMOTION_FIFO_THS_INT_FLAG 0x04
381 #define AIRMOTION_FIFO_FULL_INT_FLAG 0x02
382 #define AIRMOTION_AGC_RDY_INT_FLAG 0x01
388 #define AIRMOTION_SMD_INT_FLAG 0x08
389 #define AIRMOTION_WOM_Z_INT_FLAG 0x04
390 #define AIRMOTION_WOM_Y_INT_FLAG 0x02
391 #define AIRMOTION_WOM_X_INT_FLAG 0x01
397 #define AIRMOTION_STEP_DET_INT_FLAG 0x10
398 #define AIRMOTION_STEP_CNT_OVF_INT_FLAG 0x08
399 #define AIRMOTION_TILT_DET_INT_FLAG 0x04
400 #define AIRMOTION_SLEEP_INT_FLAG 0x02
401 #define AIRMOTION_TAP_DET_INT_FLAG 0x01
407 #define AIRMOTION_FIFO_HLD_LAST_DATA_EN 0x80
408 #define AIRMOTION_FIFO_COUNT_REC 0x40
409 #define AIRMOTION_FIFO_COUNT_ENDIAN 0x20
410 #define AIRMOTION_FIFO_DATA_ENDIAN 0x10
411 #define AIRMOTION_UI_SIFS_CFG_DISABLE_I2C 0x03
412 #define AIRMOTION_UI_SIFS_CFG_DISABLE_SPI 0x02
413 #define AIRMOTION_INTF_CONFIG0_MASK 0xF3
419 #define AIRMOTION_ACCEL_LP_CLK_SEL_WAKE_UP_OSC 0x00
420 #define AIRMOTION_ACCEL_LP_CLK_SEL_RC_OSC 0x08
421 #define AIRMOTION_ACCEL_CLKSEL_RC 0x00
422 #define AIRMOTION_ACCEL_CLKSEL_PLL_OR_RC 0x01
423 #define AIRMOTION_ACCEL_CLKSEL_DISABLE 0x03
429 #define AIRMOTION_SPI_3WIRE 0x00
430 #define AIRMOTION_SPI_4WIRE 0x02
436 #define AIRMOTION_PIN9_INT2 0x00
437 #define AIRMOTION_PIN9_FSYNC 0x01
443 #define AIRMOTION_DMP_INIT_EN 0x40
444 #define AIRMOTION_DMP_MEM_RESET_EN 0x20
445 #define AIRMOTION_ABORT_AND_RESET 0x08
446 #define AIRMOTION_TMST_STROBE 0x04
447 #define AIRMOTION_FIFO_FLUSH 0x02
453 #define AIRMOTION_PWR_TEMP_DIS 0x20
454 #define AIRMOTION_PWR_IDLE_OFF 0x10
455 #define AIRMOTION_PWR_GYRO_MODE_OFF 0x00
456 #define AIRMOTION_PWR_GYRO_STANDBY 0x04
457 #define AIRMOTION_PWR_GYRO_LN_MODE 0x0C
458 #define AIRMOTION_PWR_ACCEL_MODE_OFF 0x00
459 #define AIRMOTION_PWR_ACCEL_LP_MODE 0x02
460 #define AIRMOTION_PWR_ACCEL_LN_MODE 0x03
466 #define AIRMOTION_GYRO_FS_SEL_2000DPS 0x00
467 #define AIRMOTION_GYRO_FS_SEL_1000DPS 0x20
468 #define AIRMOTION_GYRO_FS_SEL_500DPS 0x40
469 #define AIRMOTION_GYRO_FS_SEL_250DPS 0x60
470 #define AIRMOTION_GYRO_FS_SEL_125DPS 0x80
471 #define AIRMOTION_GYRO_FS_SEL_62DPS 0xA0
472 #define AIRMOTION_GYRO_FS_SEL_32DPS 0xC0
473 #define AIRMOTION_GYRO_FS_SEL_15DPS 0xE0
474 #define AIRMOTION_GYRO_FS_SEL_MASK 0xE0
475 #define AIRMOTION_GYRO_ODR_8kHz 0x03
476 #define AIRMOTION_GYRO_ODR_4kHz 0x04
477 #define AIRMOTION_GYRO_ODR_2kHz 0x05
478 #define AIRMOTION_GYRO_ODR_1kHz 0x06
479 #define AIRMOTION_GYRO_ODR_200Hz 0x07
480 #define AIRMOTION_GYRO_ODR_100Hz 0x08
481 #define AIRMOTION_GYRO_ODR_50Hz 0x09
482 #define AIRMOTION_GYRO_ODR_25Hz 0x0A
483 #define AIRMOTION_GYRO_ODR_12Hz 0x0B
484 #define AIRMOTION_GYRO_ODR_500Hz 0x0F
485 #define AIRMOTION_GYRO_ODR_MASK 0x0F
486 #define AIRMOTION_GYRO_ODR_MASK 0x0F
492 #define AIRMOTION_TEMP_FILT_BW_4kHz 0x00
493 #define AIRMOTION_TEMP_FILT_BW_170Hz 0x20
494 #define AIRMOTION_TEMP_FILT_BW_82Hz 0x40
495 #define AIRMOTION_TEMP_FILT_BW_40Hz 0x60
496 #define AIRMOTION_TEMP_FILT_BW_20Hz 0x80
497 #define AIRMOTION_TEMP_FILT_BW_10Hz 0xA0
498 #define AIRMOTION_TEMP_FILT_BW_5Hz_0 0xC0
499 #define AIRMOTION_TEMP_FILT_BW_5Hz_1 0xE0
500 #define AIRMOTION_GYRO_UI_FILT_ORD_1st 0x00
501 #define AIRMOTION_GYRO_UI_FILT_ORD_2nd 0x04
502 #define AIRMOTION_GYRO_UI_FILT_ORD_3rd 0x08
503 #define AIRMOTION_GYRO_UI_FILT_ORD_MASK 0x0C
504 #define AIRMOTION_GYRO_DEC2_M2_ORD_3rd 0x02
505 #define AIRMOTION_GYRO_CONFIG1_MASK 0xEF
511 #define AIRMOTION_ACCEL_FS_SEL_16G 0x00
512 #define AIRMOTION_ACCEL_FS_SEL_8G 0x20
513 #define AIRMOTION_ACCEL_FS_SEL_4G 0x40
514 #define AIRMOTION_ACCEL_FS_SEL_2G 0x60
515 #define AIRMOTION_ACCEL_FS_SEL_MASK 0x60
516 #define AIRMOTION_ACCEL_ODR_8kHz_LN 0x03
517 #define AIRMOTION_ACCEL_ODR_4kHz_LN 0x04
518 #define AIRMOTION_ACCEL_ODR_2kHz_LN 0x05
519 #define AIRMOTION_ACCEL_ODR_1kHz_LN 0x06
520 #define AIRMOTION_ACCEL_ODR_200Hz_LP_LN 0x07
521 #define AIRMOTION_ACCEL_ODR_100Hz_LP_LN 0x08
522 #define AIRMOTION_ACCEL_ODR_50Hz_LP_LN 0x09
523 #define AIRMOTION_ACCEL_ODR_25Hz_LP_LN 0x0A
524 #define AIRMOTION_ACCEL_ODR_12Hz_LP_LN 0x0B
525 #define AIRMOTION_ACCEL_ODR_6Hz_LP 0x0C
526 #define AIRMOTION_ACCEL_ODR_3Hz_LP 0x0D
527 #define AIRMOTION_ACCEL_ODR_1Hz_LP 0x0E
528 #define AIRMOTION_ACCEL_ODR_500Hz_LP_LN 0x0F
529 #define AIRMOTION_ACCEL_ODR_MASK 0x0F
535 #define AIRMOTION_ACCEL_UI_FILT_ORD_1st 0x00
536 #define AIRMOTION_ACCEL_UI_FILT_ORD_2nd 0x08
537 #define AIRMOTION_ACCEL_UI_FILT_ORD_3rd 0x10
538 #define AIRMOTION_ACCEL_UI_FILT_ORD_MASK 0x18
539 #define AIRMOTION_ACCEL_DEC2_M2_ORD_3rd 0x04
545 #define AIRMOTION_TMST_TO_REGS_EN 0x10
546 #define AIRMOTION_TMST_RES 0x08
547 #define AIRMOTION_TMST_DELTA_EN 0x04
548 #define AIRMOTION_TMST_FSYNC_EN 0x02
549 #define AIRMOTION_TMST_EN 0x01
550 #define AIRMOTION_TMST_MASK 0x1F
556 #define AIRMOTION_FIFO_BYPASS 0x00
557 #define AIRMOTION_FIFO_STREAM_TO_FIFO 0x40
558 #define AIRMOTION_FIFO_STOP_ON_FULL 0x80
559 #define AIRMOTION_FIFO_CONFIG_MASK 0xC0
565 #define AIRMOTION_FIFO_RESUME_PARTIAL_RD 0x40
566 #define AIRMOTION_FIFO_WM_GT_TH 0x20
567 #define AIRMOTION_FIFO_TMST_FSYNC_EN 0x08
568 #define AIRMOTION_FIFO_TEMP_EN 0x04
569 #define AIRMOTION_FIFO_GYRO_EN 0x02
570 #define AIRMOTION_FIFO_ACCEL_EN 0x01
576 #define AIRMOTION_DO_NOT_TAG_FSYNC 0x00
577 #define AIRMOTION_FSYNC_TAG_TEMP_OUT_LSB 0x10
578 #define AIRMOTION_FSYNC_GYRO_XOUT_LSB 0x20
579 #define AIRMOTION_FSYNC_GYRO_YOUT_LSB 0x30
580 #define AIRMOTION_FSYNC_GYRO_ZOUT_LSB 0x40
581 #define AIRMOTION_FSYNC_ACCEL_XOUT_LSB 0x50
582 #define AIRMOTION_FSYNC_ACCEL_YOUT_LSB 0x60
583 #define AIRMOTION_FSYNC_ACCEL_ZOUT_LSB 0x70
584 #define AIRMOTION_FSYNC_UI_SEL_MASK 0x70
585 #define AIRMOTION_FSYNC_UI_FLAG_CLEAR_SEL 0x02
586 #define AIRMOTION_FSYNC_POLARITY_RISING_EGDE 0x01
587 #define AIRMOTION_FSYNC_POLARITY_FALLING_EGDE 0x01
593 #define AIRMOTION_DMP_POVER_SAVE_EN 0x80
594 #define AIRMOTION_TAP_ENABLE 0x40
595 #define AIRMOTION_PED_ENABLE 0x20
596 #define AIRMOTION_TILT_ENABLE 0x10
597 #define AIRMOTION_R2W_ENABLE 0x08
598 #define AIRMOTION_DMP_ODR_25Hz 0x00
599 #define AIRMOTION_DMP_ODR_50Hz 0x02
605 #define AIRMOTION_LOW_ENERGY_AMP_TH_SEL 0xA0
606 #define AIRMOTION_DMP_POVER_SAVE_TIME_0S 0x00
607 #define AIRMOTION_DMP_POVER_SAVE_TIME_4S 0x01
608 #define AIRMOTION_DMP_POWER_SAVE_TIME_8S 0x02
609 #define AIRMOTION_DMP_POWER_SAVE_TIME_12S 0x03
610 #define AIRMOTION_DMP_POWER_SAVE_TIME_16S 0x04
611 #define AIRMOTION_DMP_POWER_SAVE_TIME_20S 0x05
612 #define AIRMOTION_DMP_POWER_SAVE_TIME_24S 0x06
613 #define AIRMOTION_DMP_POWER_SAVE_TIME_28S 0x07
614 #define AIRMOTION_DMP_POWER_SAVE_TIME_32S 0x08
615 #define AIRMOTION_DMP_POWER_SAVE_TIME_36S 0x09
616 #define AIRMOTION_DMP_POWER_SAVE_TIME_40S 0x0A
617 #define AIRMOTION_DMP_POWER_SAVE_TIME_44S 0x0B
618 #define AIRMOTION_DMP_POWER_SAVE_TIME_48S 0x0C
619 #define AIRMOTION_DMP_POWER_SAVE_TIME_52S 0x0D
620 #define AIRMOTION_DMP_POWER_SAVE_TIME_56S 0x0E
621 #define AIRMOTION_DMP_POWER_SAVE_TIME_60S 0x0F
627 #define AIRMOTION_PED_AMP_TH_SEL 0x80
628 #define AIRMOTION_PED_STEP_CNT_TH_0_STEPS 0x00
629 #define AIRMOTION_PED_STEP_CNT_TH_1_STEPS 0x01
630 #define AIRMOTION_PED_STEP_CNT_TH_2_STEPS 0x02
631 #define AIRMOTION_PED_STEP_CNT_TH_3_STEPS 0x03
632 #define AIRMOTION_PED_STEP_CNT_TH_4_STEPS 0x04
633 #define AIRMOTION_PED_STEP_CNT_TH_5_STEPS 0x05
634 #define AIRMOTION_PED_STEP_CNT_TH_6_STEPS 0x06
635 #define AIRMOTION_PED_STEP_CNT_TH_7_STEPS 0x07
636 #define AIRMOTION_PED_STEP_CNT_TH_8_STEPS 0x08
637 #define AIRMOTION_PED_STEP_CNT_TH_9_STEPS 0x09
638 #define AIRMOTION_PED_STEP_CNT_TH_10_STEPS 0x0A
639 #define AIRMOTION_PED_STEP_CNT_TH_11_STEPS 0x0B
640 #define AIRMOTION_PED_STEP_CNT_TH_12_STEPS 0x0C
641 #define AIRMOTION_PED_STEP_CNT_TH_13_STEPS 0x0D
642 #define AIRMOTION_PED_STEP_CNT_TH_14_STEPS 0x0E
643 #define AIRMOTION_PED_STEP_CNT_TH_15_STEPS 0x0F
644 #define AIRMOTION_PED_STEP_CNT_TH_MASK 0x0F
650 #define AIRMOTION_PED_STEP_DET_TH_0_STEPS 0x00
651 #define AIRMOTION_PED_STEP_DET_TH_1_STEPS 0x20
652 #define AIRMOTION_PED_STEP_DET_TH_2_STEPS 0x40
653 #define AIRMOTION_PED_STEP_DET_TH_3_STEPS 0x60
654 #define AIRMOTION_PED_STEP_DET_TH_4_STEPS 0x80
655 #define AIRMOTION_PED_STEP_DET_TH_5_STEPS 0xA0
656 #define AIRMOTION_PED_STEP_DET_TH_6_STEPS 0xC0
657 #define AIRMOTION_PED_STEP_DET_TH_7_STEPS 0xE0
658 #define AIRMOTION_PED_SB_TIMER_TH_0_SAMPLES 0x00
659 #define AIRMOTION_PED_SB_TIMER_TH_1_SAMPLES 0x04
660 #define AIRMOTION_PED_SB_TIMER_TH_2_SAMPLES 0x08
661 #define AIRMOTION_PED_SB_TIMER_TH_3_SAMPLES 0x0C
662 #define AIRMOTION_PED_SB_TIMER_TH_4_SAMPLES 0x10
663 #define AIRMOTION_PED_SB_TIMER_TH_5_SAMPLES 0x14
664 #define AIRMOTION_PED_SB_TIMER_TH_6_SAMPLES 0x18
665 #define AIRMOTION_PED_SB_TIMER_TH_7_SAMPLES 0x1C
666 #define AIRMOTION_PED_HI_EN_TH_SEL 0x01
672 #define AIRMOTION_TILT_WAIT_TIME_0S 0x00
673 #define AIRMOTION_TILT_WAIT_TIME_2S 0x40
674 #define AIRMOTION_TILT_WAIT_TIME_4S 0x80
675 #define AIRMOTION_TILT_WAIT_TIME_6S 0xC0
676 #define AIRMOTION_TILT_WAIT_TIME_MASK 0xC0
677 #define AIRMOTION_SLEEP_TIME_OUT_1s28 0x00
678 #define AIRMOTION_SLEEP_TIME_OUT_2s56 0x08
679 #define AIRMOTION_SLEEP_TIME_OUT_3s84 0x10
680 #define AIRMOTION_SLEEP_TIME_OUT_5s12 0x18
681 #define AIRMOTION_SLEEP_TIME_OUT_6s4 0x20
682 #define AIRMOTION_SLEEP_TIME_OUT_7s68 0x28
683 #define AIRMOTION_SLEEP_TIME_OUT_8s96 0x30
684 #define AIRMOTION_SLEEP_TIME_OUT_10s24 0x38
685 #define AIRMOTION_SLEEP_TIME_OUT_MASK 0x38
691 #define AIRMOTION_TAP_MIN_JERK_THR 0x44
692 #define AIRMOTION_TAP_MAX_OEAK_TOL 0x01
698 #define AIRMOTION_TAP_TMAX 0x20
699 #define AIRMOTION_TAP_TAVG 0x08
700 #define AIRMOTION_TAP_TMIN 0x03
706 #define AIRMOTION_SENSITIVITY_MODE_HIGH_PERF 0x00
707 #define AIRMOTION_SENSITIVITY_MODE_SLOW_WALK 0x01
714 #define AIRMOTION_DEVICE_ADDRESS_GND 0x68
715 #define AIRMOTION_DEVICE_ADDRESS_VCC 0x69
725 #define AIRMOTION_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
726 #define AIRMOTION_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
744 #define AIRMOTION_MAP_MIKROBUS( cfg, mikrobus ) \
745 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
746 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
747 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
748 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
749 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
750 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
751 cfg.an = MIKROBUS( mikrobus, MIKROBUS_AN ); \
752 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
1077 uint32_t *tmst_data );
1109 #endif // AIRMOTION_H
digital_in_t an
Definition: airmotion.h:780
pin_name_t miso
Definition: airmotion.h:805
pin_name_t scl
Definition: airmotion.h:803
uint8_t airmotion_get_int1_state(airmotion_t *ctx)
Air Motion read INT1 pin state function.
spi_master_mode_t spi_mode
Definition: airmotion.h:816
@ AIRMOTION_ERROR
Definition: airmotion.h:839
err_t airmotion_default_cfg(airmotion_t *ctx)
Air Motion default configuration function.
err_t airmotion_get_data_from_register(airmotion_t *ctx, float *temperature_data, airmotion_data_t *accel_data, airmotion_data_t *gyro_data, uint32_t *tmst_data)
Air Motion read data function.
airmotion_return_value_t
Air Motion Click return value data.
Definition: airmotion.h:837
@ AIRMOTION_DRV_SEL_SPI
Definition: airmotion.h:763
Definition: airmotion.h:824
uint8_t slave_address
Definition: airmotion.h:786
spi_master_chip_select_polarity_t cs_polarity
Definition: airmotion.h:817
err_t(* airmotion_master_io_t)(struct airmotion_s *, uint8_t, uint8_t *, uint8_t)
Air Motion Click driver interface.
Definition: airmotion.h:772
pin_name_t chip_select
Definition: airmotion.h:787
This file contains SPI specific macros, functions, etc.
uint8_t slew_rate
Definition: airmotion.h:789
airmotion_master_io_t write_f
Definition: airmotion.h:792
err_t airmotion_configure_digital_interface(airmotion_t *ctx, uint8_t slew_rate)
Air Motion configure digital interface function.
airmotion_drv_t drv_sel
Definition: airmotion.h:790
err_t airmotion_set_basic_tap_detection(airmotion_t *ctx)
Air Motion basic tap detection configuration function.
err_t airmotion_set_reg_bank(airmotion_t *ctx, uint8_t bank)
Air Motion set register bank function.
uint8_t i2c_address
Definition: airmotion.h:813
airmotion_master_io_t read_f
Definition: airmotion.h:793
err_t airmotion_init(airmotion_t *ctx, airmotion_cfg_t *cfg)
Air Motion initialization function.
err_t airmotion_generic_write(airmotion_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Air Motion data writing function.
err_t airmotion_read_temperature(airmotion_t *ctx, float *temperature_data)
Air Motion read temperature function.
void airmotion_drv_interface_selection(airmotion_cfg_t *cfg, airmotion_drv_t drv_sel)
Air Motion driver interface setup function.
pin_name_t sck
Definition: airmotion.h:807
Air Motion Click context object.
Definition: airmotion.h:779
int16_t data_x
Definition: airmotion.h:825
err_t airmotion_get_tap_detection(airmotion_t *ctx, uint8_t *tap_num, uint8_t *tap_axis, uint8_t *tap_dir)
Air Motion get tap detection data function.
@ AIRMOTION_DRV_SEL_I2C
Definition: airmotion.h:764
@ AIRMOTION_OK
Definition: airmotion.h:838
struct airmotion_s airmotion_t
Air Motion Click context object.
err_t airmotion_reg_read(airmotion_t *ctx, uint8_t reg_bank, uint8_t reg, uint8_t *data_out, uint8_t len)
Air Motion data reading function.
int16_t data_z
Definition: airmotion.h:827
err_t airmotion_reg_write(airmotion_t *ctx, uint8_t reg_bank, uint8_t reg, uint8_t *data_in, uint8_t len)
Air Motion register data writing function.
pin_name_t mosi
Definition: airmotion.h:806
uint32_t i2c_speed
Definition: airmotion.h:812
uint32_t spi_speed
Definition: airmotion.h:815
airmotion_drv_t
Air Motion Click driver selector.
Definition: airmotion.h:762
digital_in_t int_pin
Definition: airmotion.h:781
pin_name_t sda
Definition: airmotion.h:804
int16_t data_y
Definition: airmotion.h:826
pin_name_t int_pin
Definition: airmotion.h:810
err_t airmotion_sw_reset(airmotion_t *ctx)
Air Motion software reset function.
i2c_master_t i2c
Definition: airmotion.h:783
spi_master_t spi
Definition: airmotion.h:784
void airmotion_cfg_setup(airmotion_cfg_t *cfg)
Air Motion configuration object setup function.
pin_name_t cs
Definition: airmotion.h:808
pin_name_t an
Definition: airmotion.h:809
Air Motion Click configuration object.
Definition: airmotion.h:802
@ AIRMOTION_RESET_ERROR
Definition: airmotion.h:840
err_t airmotion_generic_read(airmotion_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Air Motion data reading function.
spi_master_mode_t spi_mode
Definition: airmotion.h:788
err_t airmotion_read_timestamp(airmotion_t *ctx, uint32_t *tmst_data)
Air Motion read timestamp function.
airmotion_drv_t drv_sel
Definition: airmotion.h:819