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"
60 #define C6DOFIMU14_REG0_DEVICE_CONFIG 0x11
61 #define C6DOFIMU14_REG0_DRIVE_CONFIG 0x13
62 #define C6DOFIMU14_REG0_INT_CONFIG 0x14
63 #define C6DOFIMU14_REG0_FIFO_CONFIG 0x16
64 #define C6DOFIMU14_REG0_TEMP_DATA_MSB 0x1D
65 #define C6DOFIMU14_REG0_TEMP_DATA_LSB 0x1E
66 #define C6DOFIMU14_REG0_ACCEL_X_MSB 0x1F
67 #define C6DOFIMU14_REG0_ACCEL_X_LSB 0x20
68 #define C6DOFIMU14_REG0_ACCEL_Y_MSB 0x21
69 #define C6DOFIMU14_REG0_ACCEL_Y_LSB 0x22
70 #define C6DOFIMU14_REG0_ACCEL_Z_MSB 0x23
71 #define C6DOFIMU14_REG0_ACCEL_Z_LSB 0x24
72 #define C6DOFIMU14_REG0_GYRO_X_MSB 0x25
73 #define C6DOFIMU14_REG0_GYRO_X_LSB 0x26
74 #define C6DOFIMU14_REG0_GYRO_Y_MSB 0x27
75 #define C6DOFIMU14_REG0_GYRO_Y_LSB 0x28
76 #define C6DOFIMU14_REG0_GYRO_Z_MSB 0x29
77 #define C6DOFIMU14_REG0_GYRO_Z_LSB 0x2A
78 #define C6DOFIMU14_REG0_TMST_FSYNC_MSB 0x2B
79 #define C6DOFIMU14_REG0_TMST_FSYNC_LSB 0x2C
80 #define C6DOFIMU14_REG0_INT_STATUS_1 0x2D
81 #define C6DOFIMU14_REG0_FIFO_COUNT_MSB 0x2E
82 #define C6DOFIMU14_REG0_FIFO_COUNT_LSB 0x2F
83 #define C6DOFIMU14_REG0_FIFO_DATA 0x30
84 #define C6DOFIMU14_REG0_APEX_DATA_LSB 0x31
85 #define C6DOFIMU14_REG0_APEX_DATA_MSB 0x32
86 #define C6DOFIMU14_REG0_APEX_STEP_CADENCE 0x33
87 #define C6DOFIMU14_REG0_APEX_DATA_3 0x34
88 #define C6DOFIMU14_REG0_APEX_DATA_4 0x35
89 #define C6DOFIMU14_REG0_APEX_DATA_5 0x36
90 #define C6DOFIMU14_REG0_INT_STATUS_2 0x37
91 #define C6DOFIMU14_REG0_INT_STATUS_3 0x38
92 #define C6DOFIMU14_REG0_SIGNAL_PATH_RESET 0x4B
93 #define C6DOFIMU14_REG0_INTF_CONFIG_0 0x4C
94 #define C6DOFIMU14_REG0_INTF_CONFIG_1 0x4D
95 #define C6DOFIMU14_REG0_PWR_MGMT_0 0x4E
96 #define C6DOFIMU14_REG0_GYRO_CONFIG_0 0x4F
97 #define C6DOFIMU14_REG0_ACCEL_CONFIG_0 0x50
98 #define C6DOFIMU14_REG0_GYRO_CONFIG_1 0x51
99 #define C6DOFIMU14_REG0_GYRO_ACCEL_CFG_0 0x52
100 #define C6DOFIMU14_REG0_ACCEL_CONFIG_1 0x53
101 #define C6DOFIMU14_REG0_TMST_CONFIG 0x54
102 #define C6DOFIMU14_REG0_APRX_CONFIG_0 0x56
103 #define C6DOFIMU14_REG0_SMD_CONFIG 0x57
104 #define C6DOFIMU14_REG0_FIFO_CONFIG_1 0x5F
105 #define C6DOFIMU14_REG0_FIFO_CONFIG_2 0x60
106 #define C6DOFIMU14_REG0_FIFO_CONFIG_3 0x61
107 #define C6DOFIMU14_REG0_FSYNC_CONFIG 0x62
108 #define C6DOFIMU14_REG0_INT_CONFIG_0 0x63
109 #define C6DOFIMU14_REG0_INT_CONFIG_1 0x64
110 #define C6DOFIMU14_REG0_INT_SOURCE_0 0x65
111 #define C6DOFIMU14_REG0_INT_SOURCE_1 0x66
112 #define C6DOFIMU14_REG0_INT_SOURCE_3 0x68
113 #define C6DOFIMU14_REG0_INT_SOURCE_4 0x69
114 #define C6DOFIMU14_REG0_FIFO_LOST_PKT_0 0x6C
115 #define C6DOFIMU14_REG0_FIFO_LOST_PKT_1 0x6D
116 #define C6DOFIMU14_REG0_SELF_TEST_CONFIG 0x70
117 #define C6DOFIMU14_REG0_WHO_AM_I 0x75
118 #define C6DOFIMU14_REG0_BANK_SEL 0x76
124 #define C6DOFIMU14_REG1_SENSOR_CONFIG_0 0x03
125 #define C6DOFIMU14_REG1_GYRO_CONFIG_2 0x0B
126 #define C6DOFIMU14_REG1_GYRO_CONFIG_3 0x0C
127 #define C6DOFIMU14_REG1_GYRO_CONFIG_4 0x0D
128 #define C6DOFIMU14_REG1_GYRO_CONFIG_5 0x0E
129 #define C6DOFIMU14_REG1_GYRO_CONFIG_6 0x0F
130 #define C6DOFIMU14_REG1_GYRO_CONFIG_7 0x10
131 #define C6DOFIMU14_REG1_GYRO_CONFIG_8 0x11
132 #define C6DOFIMU14_REG1_GYRO_CONFIG_9 0x12
133 #define C6DOFIMU14_REG1_GYRO_CONFIG_10 0x13
134 #define C6DOFIMU14_REG1_XG_ST_DATA 0x5F
135 #define C6DOFIMU14_REG1_YG_ST_DATA 0x60
136 #define C6DOFIMU14_REG1_ZG_ST_DATA 0x61
137 #define C6DOFIMU14_REG1_TMST_VALUE_LSB 0x62
138 #define C6DOFIMU14_REG1_TMST_VALUE_MID 0x63
139 #define C6DOFIMU14_REG1_TMST_VALUE_MSB 0x64
140 #define C6DOFIMU14_REG1_INTF_CONFIG_4 0x7A
141 #define C6DOFIMU14_REG1_INTF_CONFIG_5 0x7B
142 #define C6DOFIMU14_REG1_INTF_CONFIG_6 0x7C
148 #define C6DOFIMU14_REG2_ACCEL_CONFIG_2 0x03
149 #define C6DOFIMU14_REG2_ACCEL_CONFIG_3 0x04
150 #define C6DOFIMU14_REG2_ACCEL_CONFIG_4 0x05
151 #define C6DOFIMU14_REG2_XA_ST_DATA 0x3B
152 #define C6DOFIMU14_REG2_YA_ST_DATA 0x3C
153 #define C6DOFIMU14_REG2_ZA_ST_DATA 0x3D
159 #define C6DOFIMU14_REG4_APEX_CONFIG_1 0x40
160 #define C6DOFIMU14_REG4_APEX_CONFIG_2 0x41
161 #define C6DOFIMU14_REG4_APEX_CONFIG_3 0x42
162 #define C6DOFIMU14_REG4_APEX_CONFIG_4 0x43
163 #define C6DOFIMU14_REG4_APEX_CONFIG_5 0x44
164 #define C6DOFIMU14_REG4_APEX_CONFIG_6 0x45
165 #define C6DOFIMU14_REG4_APEX_CONFIG_7 0x46
166 #define C6DOFIMU14_REG4_APEX_CONFIG_8 0x47
167 #define C6DOFIMU14_REG4_APEX_CONFIG_9 0x48
168 #define C6DOFIMU14_REG4_ACCEL_WOM_X_THR 0x4A
169 #define C6DOFIMU14_REG4_ACCEL_WOM_Y_THR 0x4B
170 #define C6DOFIMU14_REG4_ACCEL_WOM_Z_THR 0x4C
171 #define C6DOFIMU14_REG4_INT_SOURCE_6 0x4D
172 #define C6DOFIMU14_REG4_INT_SOURCE_7 0x4E
173 #define C6DOFIMU14_REG4_INT_SOURCE_8 0x4F
174 #define C6DOFIMU14_REG4_INT_SOURCE_9 0x50
175 #define C6DOFIMU14_REG4_INT_SOURCE_10 0x51
176 #define C6DOFIMU14_REG4_OFFSET_USER_0 0x77
177 #define C6DOFIMU14_REG4_OFFSET_USER_1 0x78
178 #define C6DOFIMU14_REG4_OFFSET_USER_2 0x79
179 #define C6DOFIMU14_REG4_OFFSET_USER_3 0x7A
180 #define C6DOFIMU14_REG4_OFFSET_USER_4 0x7B
181 #define C6DOFIMU14_REG4_OFFSET_USER_5 0x7C
182 #define C6DOFIMU14_REG4_OFFSET_USER_6 0x7D
183 #define C6DOFIMU14_REG4_OFFSET_USER_7 0x7E
184 #define C6DOFIMU14_REG4_OFFSET_USER_8 0x7F
203 #define C6DOFIMU14_SPR_DMP_INIT_EN 0x40
204 #define C6DOFIMU14_SPR_DMP_MEM_RST_EN 0x20
205 #define C6DOFIMU14_SPR_ABORT_AND_RESET 0x08
206 #define C6DOFIMU14_SPR_TMST_STROBE 0x04
207 #define C6DOFIMU14_SPR_FIFO_FLUSH 0x02
213 #define C6DOFIMU14_INTF0_FIFO_HOLD_LAST_DATA_EN 0x80
214 #define C6DOFIMU14_INTF0_FIFO_HOLD_LAST_DATA_DIS 0x00
215 #define C6DOFIMU14_INTF0_FIFO_COUNT_REC_0 0x00
216 #define C6DOFIMU14_INTF0_FIFO_COUNT_REC_1 0x40
217 #define C6DOFIMU14_INTF0_FIFO_COUNT_ENDIAN_0 0x00
218 #define C6DOFIMU14_INTF0_FIFO_COUNT_ENDIAN_1 0x20
219 #define C6DOFIMU14_INTF0_SENSOR_DATA_ENDIAN_0 0x00
220 #define C6DOFIMU14_INTF0_SENSOR_DATA_ENDIAN_1 0x10
221 #define C6DOFIMU14_INTF0_UI_SIFS_CFG_DISABLE_SPI 0x00
222 #define C6DOFIMU14_INTF0_UI_SIFS_CFG_DISABLE_I2C 0x01
228 #define C6DOFIMU14_INTF1_ACLP_CLK_SEL_WAKEUP_CLK 0x00
229 #define C6DOFIMU14_INTF1_ACLP_CLK_SEL_RC_CLK 0x08
230 #define C6DOFIMU14_INTF1_RTC_MODE_NO_INPUT 0x00
231 #define C6DOFIMU14_INTF1_RTC_MODE_INPUT 0x04
232 #define C6DOFIMU14_INTF1_CLKSEL_RC_OS 0x00
233 #define C6DOFIMU14_INTF1_CLKSEL_PLL_RC_OS 0x01
234 #define C6DOFIMU14_INTF1_CLKSEL_DISABLE_ALL_OS 0x11
240 #define C6DOFIMU14_PWR_TEMP_ENABLE 0x00
241 #define C6DOFIMU14_PWR_TEMP_DISABLE 0x20
242 #define C6DOFIMU14_PWR_IDLE_1 0x10
243 #define C6DOFIMU14_PWR_IDLE_0 0x00
244 #define C6DOFIMU14_PWR_GYRO_MODE_OFF 0x00
245 #define C6DOFIMU14_PWR_GYRO_MODE_STAND_BY 0x04
246 #define C6DOFIMU14_PWR_GYRO_MODE_LOW_NOISE 0x0C
247 #define C6DOFIMU14_PWR_ACCEL_MODE_OFF 0x00
248 #define C6DOFIMU14_PWR_ACCEL_MODE_LOW_POWER 0x02
249 #define C6DOFIMU14_PWR_ACCEL_MODE_LOW_NOISE 0x03
255 #define C6DOFIMU14_GCFG0_FS_SEL_2000DPS 0x00
256 #define C6DOFIMU14_GCFG0_FS_SEL_1000DPS 0x20
257 #define C6DOFIMU14_GCFG0_FS_SEL_500DPS 0x40
258 #define C6DOFIMU14_GCFG0_FS_SEL_250DPS 0x60
259 #define C6DOFIMU14_GCFG0_FS_SEL_125DPS 0x80
260 #define C6DOFIMU14_GCFG0_FS_SEL_62p5DPS 0xA0
261 #define C6DOFIMU14_GCFG0_FS_SEL_31p25DPS 0xC0
262 #define C6DOFIMU14_GCFG0_FS_SEL_15p625DPS 0xE0
263 #define C6DOFIMU14_GCFG0_ODR_32KHZ 0x01
264 #define C6DOFIMU14_GCFG0_ODR_16KHZ 0x02
265 #define C6DOFIMU14_GCFG0_ODR_8KHZ 0x03
266 #define C6DOFIMU14_GCFG0_ODR_4KHZ 0x04
267 #define C6DOFIMU14_GCFG0_ODR_2KHZ 0x05
268 #define C6DOFIMU14_GCFG0_ODR_1KHZ 0x06
269 #define C6DOFIMU14_GCFG0_ODR_200HZ 0x07
270 #define C6DOFIMU14_GCFG0_ODR_100HZ 0x08
271 #define C6DOFIMU14_GCFG0_ODR_50HZ 0x09
272 #define C6DOFIMU14_GCFG0_ODR_25HZ 0x0A
273 #define C6DOFIMU14_GCFG0_ODR_12p5HZ 0x0B
274 #define C6DOFIMU14_GCFG0_ODR_500HZ 0x0F
280 #define C6DOFIMU14_ACFG0_FS_SEL_16G 0x00
281 #define C6DOFIMU14_ACFG0_FS_SEL_8G 0x20
282 #define C6DOFIMU14_ACFG0_FS_SEL_4G 0x40
283 #define C6DOFIMU14_ACFG0_FS_SEL_2G 0x60
284 #define C6DOFIMU14_ACFG0_ODR_32KHZ 0x01
285 #define C6DOFIMU14_ACFG0_ODR_16KHZ 0x02
286 #define C6DOFIMU14_ACFG0_ODR_8KHZ 0x03
287 #define C6DOFIMU14_ACFG0_ODR_4KHZ 0x04
288 #define C6DOFIMU14_ACFG0_ODR_2KHZ 0x05
289 #define C6DOFIMU14_ACFG0_ODR_1KHZ 0x06
290 #define C6DOFIMU14_ACFG0_ODR_200HZ 0x07
291 #define C6DOFIMU14_ACFG0_ODR_100HZ 0x08
292 #define C6DOFIMU14_ACFG0_ODR_50HZ 0x09
293 #define C6DOFIMU14_ACFG0_ODR_25HZ 0x0A
294 #define C6DOFIMU14_ACFG0_ODR_12p5HZ 0x0B
295 #define C6DOFIMU14_ACFG0_ODR_6p25HZ 0x0C
296 #define C6DOFIMU14_ACFG0_ODR_3p125HZ 0x0D
297 #define C6DOFIMU14_ACFG0_ODR_1p562HZ 0x0E
298 #define C6DOFIMU14_ACFG0_ODR_500HZ 0x0F
304 #define C6DOFIMU14_GCFG1_FILT_BW_4000HZ 0x00
305 #define C6DOFIMU14_GCFG1_FILT_BW_170HZ 0x20
306 #define C6DOFIMU14_GCFG1_FILT_BW_82HZ 0x40
307 #define C6DOFIMU14_GCFG1_FILT_BW_40HZ 0x60
308 #define C6DOFIMU14_GCFG1_FILT_BW_20HZ 0x80
309 #define C6DOFIMU14_GCFG1_FILT_BW_10HZ 0xA0
310 #define C6DOFIMU14_GCFG1_FILT_BW_5HZ 0xC0
311 #define C6DOFIMU14_GCFG1_UI_FILT_ORD_1ST_OTHER 0x00
312 #define C6DOFIMU14_GCFG1_UI_FILT_ORD_2ND_OTHER 0x04
313 #define C6DOFIMU14_GCFG1_UI_FILT_ORD_3RD_OTHER 0x08
314 #define C6DOFIMU14_GCFG1_DEC2_M2_ORD_3RD_OTHER 0x02
320 #define C6DOFIMU14_GACFG0_AC_UI_BW_ODR_2 0x00
321 #define C6DOFIMU14_GACFG0_AC_UI_BW_ODR_4 0x10
322 #define C6DOFIMU14_GACFG0_AC_UI_BW_ODR_5 0x20
323 #define C6DOFIMU14_GACFG0_AC_UI_BW_ODR_8 0x30
324 #define C6DOFIMU14_GACFG0_AC_UI_BW_ODR_10 0x40
325 #define C6DOFIMU14_GACFG0_AC_UI_BW_ODR_16 0x50
326 #define C6DOFIMU14_GACFG0_AC_UI_BW_ODR_20 0x60
327 #define C6DOFIMU14_GACFG0_AC_UI_BW_ODR_40 0x70
328 #define C6DOFIMU14_GACFG0_GY_UI_BW_ODR_2 0x00
329 #define C6DOFIMU14_GACFG0_GY_UI_BW_ODR_4 0x01
330 #define C6DOFIMU14_GACFG0_GY_UI_BW_ODR_5 0x02
331 #define C6DOFIMU14_GACFG0_GY_UI_BW_ODR_8 0x03
332 #define C6DOFIMU14_GACFG0_GY_UI_BW_ODR_10 0x04
333 #define C6DOFIMU14_GACFG0_GY_UI_BW_ODR_16 0x05
334 #define C6DOFIMU14_GACFG0_GY_UI_BW_ODR_20 0x06
335 #define C6DOFIMU14_GACFG0_GY_UI_BW_ODR_40 0x07
341 #define C6DOFIMU14_ACFG1_UI_FILT_ORD_1ST_OTHER 0x00
342 #define C6DOFIMU14_ACFG1_UI_FILT_ORD_2ND_OTHER 0x04
343 #define C6DOFIMU14_ACFG1_UI_FILT_ORD_3RD_OTHER 0x08
344 #define C6DOFIMU14_ACFG1_DEC2_M2_ORD_3RD_OTHER 0x02
350 #define C6DOFIMU14_TMSTCFG_TO_REGS_EN 0x10
351 #define C6DOFIMU14_TMSTCFG_TO_REGS_DIS 0x00
352 #define C6DOFIMU14_TMSTCFG_RES_0 0x00
353 #define C6DOFIMU14_TMSTCFG_RES_1 0x08
354 #define C6DOFIMU14_TMSTCFG_DELTA_EN 0x04
355 #define C6DOFIMU14_TMSTCFG_DELTA_DIS 0x00
356 #define C6DOFIMU14_TMSTCFG_FSYNC_EN 0x02
357 #define C6DOFIMU14_TMSTCFG_FSYNC_DIS 0x00
358 #define C6DOFIMU14_TMSTCFG_TMST_ENABLE 0x01
359 #define C6DOFIMU14_TMSTCFG_TMST_DISABLE 0x00
365 #define C6DOFIMU14_APEXCFG0_DMP_NOT_ACTIVE 0x00
366 #define C6DOFIMU14_APEXCFG0_DMP_ACTIVE 0x80
367 #define C6DOFIMU14_APEXCFG0_TAP_ENABLE 0x40
368 #define C6DOFIMU14_APEXCFG0_TAP_DISABLE 0x00
369 #define C6DOFIMU14_APEXCFG0_PED_ENABLE 0x20
370 #define C6DOFIMU14_APEXCFG0_PED_DISABLE 0x00
371 #define C6DOFIMU14_APEXCFG0_TILT_ENABLE 0x10
372 #define C6DOFIMU14_APEXCFG0_TILT_DISABLE 0x00
373 #define C6DOFIMU14_APEXCFG0_R2W_EMABLE 0x08
374 #define C6DOFIMU14_APEXCFG0_R2W_DISABLE 0x00
375 #define C6DOFIMU14_APEXCFG0_DMP_ODR_25HZ 0x00
376 #define C6DOFIMU14_APEXCFG0_DMP_ODR_50HZ 0x03
382 #define C6DOFIMU14_SMDCFG_WOM_INT_MODE_0 0x00
383 #define C6DOFIMU14_SMDCFG_WOM_INT_MODE_1 0x08
384 #define C6DOFIMU14_SMDCFG_WOM_MODE_0 0x00
385 #define C6DOFIMU14_SMDCFG_WOM_MODE_1 0x04
386 #define C6DOFIMU14_SMDCFG_SMD_MODE_DISABLE 0x00
387 #define C6DOFIMU14_SMDCFG_SMD_MODE_SHORT 0x02
388 #define C6DOFIMU14_SMDCFG_SMD_MODE_LONG 0x03
394 #define C6DOFIMU14_ISRC0_UI_FSYNC_INT1_EN 0x40
395 #define C6DOFIMU14_ISRC0_UI_FSYNC_INT1_DIS 0x00
396 #define C6DOFIMU14_ISRC0_PLL_RDY_INT1_EN 0x20
397 #define C6DOFIMU14_ISRC0_PLL_RDY_INT1_DIS 0x00
398 #define C6DOFIMU14_ISRC0_RESET_DONE_INT1_EN 0x10
399 #define C6DOFIMU14_ISRC0_RESET_DONE_INT1_DIS 0x00
400 #define C6DOFIMU14_ISRC0_UI_DRDY_INT1_EN 0x08
401 #define C6DOFIMU14_ISRC0_UI_DRDY_INT1_DIS 0x00
402 #define C6DOFIMU14_ISRC0_FIFO_THS_INT1_EN 0x04
403 #define C6DOFIMU14_ISRC0_FIFO_THS_INT1_DIS 0x00
404 #define C6DOFIMU14_ISRC0_FIFO_FULL_INT1_EN 0x02
405 #define C6DOFIMU14_ISRC0_FIFO_FULL_INT1_DIS 0x00
406 #define C6DOFIMU14_ISRC0_UI_AGC_RDY_INT1_EN 0x01
407 #define C6DOFIMU14_ISRC0_UI_AGC_RDY_INT1_DIS 0x00
413 #define C6DOFIMU14_DEF_WHO_AM_I 0x47
419 #define C6DOFIMU14_BANK_0 0x00
420 #define C6DOFIMU14_BANK_1 0x01
421 #define C6DOFIMU14_BANK_2 0x02
422 #define C6DOFIMU14_BANK_3 0x03
423 #define C6DOFIMU14_BANK_4 0x04
429 #define C6DOFIMU14_SENSOR_CFG_GYRO_Z_EN 0x00
430 #define C6DOFIMU14_SENSOR_CFG_GYRO_Z_DIS 0x20
431 #define C6DOFIMU14_SENSOR_CFG_GYRO_Y_EN 0x00
432 #define C6DOFIMU14_SENSOR_CFG_GYRO_Y_DIS 0x10
433 #define C6DOFIMU14_SENSOR_CFG_GYRO_X_EN 0x00
434 #define C6DOFIMU14_SENSOR_CFG_GYRO_X_DIS 0x08
435 #define C6DOFIMU14_SENSOR_CFG_ACCEL_Z_EN 0x00
436 #define C6DOFIMU14_SENSOR_CFG_ACCEL_Z_DIS 0x04
437 #define C6DOFIMU14_SENSOR_CFG_ACCEL_Y_EN 0x00
438 #define C6DOFIMU14_SENSOR_CFG_ACCEL_Y_DIS 0x02
439 #define C6DOFIMU14_SENSOR_CFG_ACCEL_X_EN 0x00
440 #define C6DOFIMU14_SENSOR_CFG_ACCEL_X_DIS 0x01
446 #define C6DOFIMU14_APEX_CFG1_LOW_ENERGY_SEL 0xA0
447 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_0SEC 0x00
448 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_4SEC 0x01
449 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_8SEC 0x02
450 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_12SEC 0x03
451 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_16SEC 0x04
452 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_20SEC 0x05
453 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_24SEC 0x06
454 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_28SEC 0x07
455 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_32SEC 0x08
456 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_36SEC 0x09
457 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_40SEC 0x0A
458 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_44SEC 0x0B
459 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_48SEC 0x0C
460 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_52SEC 0x0D
461 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_56SEC 0x0E
462 #define C6DOFIMU14_APEX_CFG1_TIME_SEL_60SEC 0x0F
468 #define C6DOFIMU14_APEX_CFG2_PED_AMP_TH_SEL 0x80
469 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_0 0x00
470 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_1 0x01
471 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_2 0x02
472 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_3 0x03
473 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_4 0x04
474 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_5 0x05
475 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_6 0x06
476 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_7 0x07
477 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_8 0x08
478 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_9 0x09
479 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_10 0x0A
480 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_11 0x0B
481 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_12 0x0C
482 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_13 0x0D
483 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_14 0x0E
484 #define C6DOFIMU14_APEX_CFG2_PED_CNT_SEL_15 0x0F
490 #define C6DOFIMU14_APEX_CFG3_STEP_DET_SEL_0 0x00
491 #define C6DOFIMU14_APEX_CFG3_STEP_DET_SEL_1 0x20
492 #define C6DOFIMU14_APEX_CFG3_STEP_DET_SEL_2 0x40
493 #define C6DOFIMU14_APEX_CFG3_STEP_DET_SEL_3 0x60
494 #define C6DOFIMU14_APEX_CFG3_STEP_DET_SEL_4 0x80
495 #define C6DOFIMU14_APEX_CFG3_STEP_DET_SEL_5 0xA0
496 #define C6DOFIMU14_APEX_CFG3_STEP_DET_SEL_6 0xC0
497 #define C6DOFIMU14_APEX_CFG3_STEP_DET_SEL_7 0xE0
498 #define C6DOFIMU14_APEX_CFG3_TIMER_SEL_0 0x00
499 #define C6DOFIMU14_APEX_CFG3_TIMER_SEL_1 0x04
500 #define C6DOFIMU14_APEX_CFG3_TIMER_SEL_2 0x08
501 #define C6DOFIMU14_APEX_CFG3_TIMER_SEL_3 0x0C
502 #define C6DOFIMU14_APEX_CFG3_TIMER_SEL_4 0x10
503 #define C6DOFIMU14_APEX_CFG3_TIMER_SEL_5 0x14
504 #define C6DOFIMU14_APEX_CFG3_TIMER_SEL_6 0x18
505 #define C6DOFIMU14_APEX_CFG3_TIMER_SEL_7 0x1C
506 #define C6DOFIMU14_APEX_CFG3_HI_EN_TH_SEL 0x01
512 #define C6DOFIMU14_APEX_CFG4_TILT_WAIT_SEL_0S 0x00
513 #define C6DOFIMU14_APEX_CFG4_TILT_WAIT_SEL_2S 0x40
514 #define C6DOFIMU14_APEX_CFG4_TILT_WAIT_SEL_4S 0x80
515 #define C6DOFIMU14_APEX_CFG4_TILT_WAIT_SEL_6S 0xC0
516 #define C6DOFIMU14_APEX_CFG4_TILT_SLEEP_TIME_1p28SEC 0x00
517 #define C6DOFIMU14_APEX_CFG4_TILT_SLEEP_TIME_2p56SEC 0x08
518 #define C6DOFIMU14_APEX_CFG4_TILT_SLEEP_TIME_3p84SEC 0x10
519 #define C6DOFIMU14_APEX_CFG4_TILT_SLEEP_TIME_5p12SEC 0x18
520 #define C6DOFIMU14_APEX_CFG4_TILT_SLEEP_TIME_6p40SEC 0x20
521 #define C6DOFIMU14_APEX_CFG4_TILT_SLEEP_TIME_7p68SEC 0x28
522 #define C6DOFIMU14_APEX_CFG4_TILT_SLEEP_TIME_8p96SEC 0x30
523 #define C6DOFIMU14_APEX_CFG4_TILT_SLEEP_TIME_10p24SEC 0x38
529 #define C6DOFIMU14_INTSRC6_STEP_DET_INT1_EN 0x20
530 #define C6DOFIMU14_INTSRC6_STEP_DET_INT1_DIS 0x00
531 #define C6DOFIMU14_INTSRC6_STEP_CNT_OFL_INT1_EN 0x10
532 #define C6DOFIMU14_INTSRC6_STEP_CNT_OFL_INT1_DIS 0x00
533 #define C6DOFIMU14_INTSRC6_TILT_DET_INT1_EN 0x08
534 #define C6DOFIMU14_INTSRC6_TILT_DET_INT1_DIS 0x00
535 #define C6DOFIMU14_INTSRC6_WAKE_DET_INT1_EN 0x04
536 #define C6DOFIMU14_INTSRC6_WAKE_DET_INT1_DIS 0x00
537 #define C6DOFIMU14_INTSRC6_SLEEP_DET_INT1_EN 0x02
538 #define C6DOFIMU14_INTSRC6_SLEEP_DET_INT1_DIS 0x00
539 #define C6DOFIMU14_INTSRC6_TAP_DET_INT1_EN 0x01
540 #define C6DOFIMU14_INTSRC6_TAP_DET_INT1_DIS 0x00
546 #define C6DOFIMU14_INTSRC7_STEP_DET_INT2_EN 0x20
547 #define C6DOFIMU14_INTSRC7_STEP_DET_INT2_DIS 0x00
548 #define C6DOFIMU14_INTSRC7_STEP_CNT_OFL_INT2_EN 0x10
549 #define C6DOFIMU14_INTSRC7_STEP_CNT_OFL_INT2_DIS 0x00
550 #define C6DOFIMU14_INTSRC7_TILT_DET_INT2_EN 0x08
551 #define C6DOFIMU14_INTSRC7_TILT_DET_INT2_DIS 0x00
552 #define C6DOFIMU14_INTSRC7_WAKE_DET_INT2_EN 0x04
553 #define C6DOFIMU14_INTSRC7_WAKE_DET_INT2_DIS 0x00
554 #define C6DOFIMU14_INTSRC7_SLEEP_DET_INT2_EN 0x02
555 #define C6DOFIMU14_INTSRC7_SLEEP_DET_INT2_DIS 0x00
556 #define C6DOFIMU14_INTSRC7_TAP_DET_INT2_EN 0x01
557 #define C6DOFIMU14_INTSRC7_TAP_DET_INT2_DIS 0x00
563 #define C6DOFIMU14_DEVCONFIG_SPI_MODE_03 0x00
564 #define C6DOFIMU14_DEVCONFIG_SPI_MODE_12 0x10
565 #define C6DOFIMU14_DEVCONFIG_SOFT_RESET_NORMAL 0x00
566 #define C6DOFIMU14_DEVCONFIG_SOFT_RESET_ENABLE 0x01
572 #define C6DOFIMU14_DRIVECONFIG_MAX_SLEW_RATE 0x55
573 #define C6DOFIMU14_DRIVECONFIG_MIN_SLEW_RATE 0x00
579 #define C6DOFIMU14_FIFOCONFIG_BYPASS_MODE 0x00
580 #define C6DOFIMU14_FIFOCONFIG_STREAM_TO_FIFO_MODE 0x40
581 #define C6DOFIMU14_FIFOCONFIG_STOP_ON_FULL_MODE 0x80
587 #define C6DOFIMU14_FIFOCONFIG1_RESUME_PARTIAL_RD 0x40
588 #define C6DOFIMU14_FIFOCONFIG1_HIRES_EN 0x10
589 #define C6DOFIMU14_FIFOCONFIG1_TMST_FSYNC_EN 0x08
590 #define C6DOFIMU14_FIFOCONFIG1_TEMP_EN 0x04
591 #define C6DOFIMU14_FIFOCONFIG1_GYRO_EN 0x02
592 #define C6DOFIMU14_FIFOCONFIG1_ACCEL_EN 0x01
598 #define C6DOFIMU14_INTSTATUS_UI_FSYNC 0x40
599 #define C6DOFIMU14_INTSTATUS_PLL_RDY 0x20
600 #define C6DOFIMU14_INTSTATUS_RESET_DONE 0x10
601 #define C6DOFIMU14_INTSTATUS_DATA_RDY 0x08
602 #define C6DOFIMU14_INTSTATUS_FIFO_THS 0x04
603 #define C6DOFIMU14_INTSTATUS_FIFO_FULL 0x02
604 #define C6DOFIMU14_INTSTATUS_AGC_RDY 0x01
610 #define C6DOFIMU14_FIFOHEADER_MSG 0x80
611 #define C6DOFIMU14_FIFOHEADER_ACCEL 0x40
612 #define C6DOFIMU14_FIFOHEADER_GYRO 0x20
613 #define C6DOFIMU14_FIFOHEADER_20 0x10
614 #define C6DOFIMU14_FIFOHEADER_TIMESTAMP_ODR 0x08
615 #define C6DOFIMU14_FIFOHEADER_ODR_ACCEL 0x02
616 #define C6DOFIMU14_FIFOHEADER_ODR_GYRO 0x01
622 #define C6DOFIMU14_SPI_READ_MASK 0x80
623 #define C6DOFIMU14_SPI_WRITE_MASK 0x7F
630 #define C6DOFIMU14_SET_DEV_ADDR_GND 0x68
631 #define C6DOFIMU14_SET_DEV_ADDR_VCC 0x69
649 #define C6DOFIMU14_MAP_MIKROBUS( cfg, mikrobus ) \
650 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
651 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
652 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
653 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
654 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
655 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
656 cfg.snc = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
657 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
939 #endif // C6DOFIMU14_H
digital_in_t int_pin
Definition: c6dofimu14.h:699
err_t c6dofimu14_init(c6dofimu14_t *ctx, c6dofimu14_cfg_t *cfg)
6DOF IMU 14 initialization function.
pin_name_t miso
Definition: c6dofimu14.h:721
err_t c6dofimu14_get_accel_axis(c6dofimu14_t *ctx, c6dofimu14_axis_t *axis)
6DOF IMU 14 get accel data function.
void c6dofimu14_cfg_setup(c6dofimu14_cfg_t *cfg)
6DOF IMU 14 configuration object setup function.
spi_master_t spi
Definition: c6dofimu14.h:702
uint32_t i2c_speed
Definition: c6dofimu14.h:728
pin_name_t sck
Definition: c6dofimu14.h:723
err_t c6dofimu14_get_gyro_axis(c6dofimu14_t *ctx, c6dofimu14_axis_t *axis)
6DOF IMU 14 get gyro data function.
struct c6dofimu14_s c6dofimu14_t
6DOF IMU 14 Click context object.
int16_t y
Definition: c6dofimu14.h:686
6DOF IMU 14 Axis structure object.
Definition: c6dofimu14.h:684
err_t c6dofimu14_generic_read(c6dofimu14_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
6DOF IMU 14 data reading function.
pin_name_t scl
Definition: c6dofimu14.h:719
c6dofimu14_drv_t drv_sel
Definition: c6dofimu14.h:735
6DOF IMU 14 Click configuration object.
Definition: c6dofimu14.h:718
uint8_t slave_address
Definition: c6dofimu14.h:704
spi_master_chip_select_polarity_t cs_polarity
Definition: c6dofimu14.h:733
spi_master_mode_t spi_mode
Definition: c6dofimu14.h:732
err_t c6dofimu14_software_reset(c6dofimu14_t *ctx)
6DOF IMU 14 software reset function.
err_t c6dofimu14_generic_write(c6dofimu14_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
6DOF IMU 14 data writing function.
pin_name_t mosi
Definition: c6dofimu14.h:722
c6dofimu14_master_io_t write_f
Definition: c6dofimu14.h:708
uint8_t c6dofimu14_get_int_pin(c6dofimu14_t *ctx)
6DOF IMU 14 get INT pin state function.
pin_name_t int_pin
Definition: c6dofimu14.h:726
void c6dofimu14_drv_interface_selection(c6dofimu14_cfg_t *cfg, c6dofimu14_drv_t drv_sel)
6DOF IMU 14 driver interface setup function.
err_t c6dofimu14_get_temperature(c6dofimu14_t *ctx, float *temp)
6DOF IMU 14 get temperature data function.
pin_name_t chip_select
Definition: c6dofimu14.h:705
pin_name_t snc
Definition: c6dofimu14.h:725
err_t c6dofimu14_default_cfg(c6dofimu14_t *ctx)
6DOF IMU 14 default configuration function.
@ C6DOFIMU14_OK
Definition: c6dofimu14.h:745
c6dofimu14_return_value_t
6DOF IMU 14 Click return value data.
Definition: c6dofimu14.h:744
@ C6DOFIMU14_DRV_SEL_SPI
Definition: c6dofimu14.h:668
c6dofimu14_master_io_t read_f
Definition: c6dofimu14.h:709
i2c_master_t i2c
Definition: c6dofimu14.h:701
@ C6DOFIMU14_DRV_SEL_I2C
Definition: c6dofimu14.h:669
pin_name_t cs
Definition: c6dofimu14.h:724
c6dofimu14_drv_t
6DOF IMU 14 Click driver selector.
Definition: c6dofimu14.h:667
digital_in_t snc
Definition: c6dofimu14.h:698
int16_t x
Definition: c6dofimu14.h:685
err_t c6dofimu14_get_data(c6dofimu14_t *ctx, c6dofimu14_axis_t *acc_axis, c6dofimu14_axis_t *gyro_axis)
6DOF IMU 14 get accel and gyro data function.
pin_name_t sda
Definition: c6dofimu14.h:720
@ C6DOFIMU14_ERROR
Definition: c6dofimu14.h:746
uint8_t c6dofimu14_get_snc_pin(c6dofimu14_t *ctx)
6DOF IMU 14 get SNC pin state function.
c6dofimu14_drv_t drv_sel
Definition: c6dofimu14.h:706
int16_t z
Definition: c6dofimu14.h:687
err_t(* c6dofimu14_master_io_t)(struct c6dofimu14_s *, uint8_t, uint8_t *, uint8_t)
6DOF IMU 14 Click driver interface.
Definition: c6dofimu14.h:677
6DOF IMU 14 Click context object.
Definition: c6dofimu14.h:696
digital_out_t cs
Definition: c6dofimu14.h:697
uint8_t i2c_address
Definition: c6dofimu14.h:729
uint32_t spi_speed
Definition: c6dofimu14.h:731