c6dofimu14 2.0.0.0
c6dofimu14.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef C6DOFIMU14_H
29#define C6DOFIMU14_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
35#include "drv_digital_out.h"
36#include "drv_digital_in.h"
37#include "drv_i2c_master.h"
38#include "drv_spi_master.h"
39
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
119
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
143
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
154
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
185
186 // c6dofimu14_reg
188
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
208
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
223
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
235
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
250
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
275
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
299
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
315
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
336
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
345
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
360
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
377
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
389
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
408
413#define C6DOFIMU14_DEF_WHO_AM_I 0x47
414
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
424
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
441
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
463
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
485
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
507
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
524
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
541
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
558
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
567
572#define C6DOFIMU14_DRIVECONFIG_MAX_SLEW_RATE 0x55
573#define C6DOFIMU14_DRIVECONFIG_MIN_SLEW_RATE 0x00
574
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
582
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
593
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
605
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
617
622#define C6DOFIMU14_SPI_READ_MASK 0x80
623#define C6DOFIMU14_SPI_WRITE_MASK 0x7F
624
630#define C6DOFIMU14_SET_DEV_ADDR_GND 0x68
631#define C6DOFIMU14_SET_DEV_ADDR_VCC 0x69
632 // c6dofimu14_set
634
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 )
658 // c6dofimu14_map // c6dofimu14
661
666typedef enum
667{
672
677typedef err_t ( *c6dofimu14_master_io_t )( struct c6dofimu14_s*, uint8_t, uint8_t*, uint8_t );
683typedef struct
684{
685 int16_t x;
686 int16_t y;
687 int16_t z;
688
690
695typedef struct c6dofimu14_s
696{
697 digital_out_t cs;
698 digital_in_t snc;
699 digital_in_t int_pin;
701 i2c_master_t i2c;
702 spi_master_t spi;
705 pin_name_t chip_select;
712
717typedef struct
718{
719 pin_name_t scl;
720 pin_name_t sda;
721 pin_name_t miso;
722 pin_name_t mosi;
723 pin_name_t sck;
724 pin_name_t cs;
725 pin_name_t snc;
726 pin_name_t int_pin;
728 uint32_t i2c_speed;
729 uint8_t i2c_address;
731 uint32_t spi_speed;
732 spi_master_mode_t spi_mode;
733 spi_master_chip_select_polarity_t cs_polarity;
738
743typedef enum
744{
747
749
766
782
798
813
829err_t c6dofimu14_generic_write ( c6dofimu14_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
830
846err_t c6dofimu14_generic_read ( c6dofimu14_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
847
856
865
878
893
906err_t c6dofimu14_get_temperature ( c6dofimu14_t *ctx, float *temp );
907
921
935
936#ifdef __cplusplus
937}
938#endif
939#endif // C6DOFIMU14_H
940 // c6dofimu14
942
943// ------------------------------------------------------------------------ END
struct c6dofimu14_s c6dofimu14_t
6DOF IMU 14 Click context object.
c6dofimu14_drv_t
6DOF IMU 14 Click driver selector.
Definition: c6dofimu14.h:667
@ C6DOFIMU14_DRV_SEL_I2C
Definition: c6dofimu14.h:669
@ C6DOFIMU14_DRV_SEL_SPI
Definition: c6dofimu14.h:668
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
c6dofimu14_return_value_t
6DOF IMU 14 Click return value data.
Definition: c6dofimu14.h:744
@ C6DOFIMU14_OK
Definition: c6dofimu14.h:745
@ C6DOFIMU14_ERROR
Definition: c6dofimu14.h:746
err_t c6dofimu14_default_cfg(c6dofimu14_t *ctx)
6DOF IMU 14 default configuration function.
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.
uint8_t c6dofimu14_get_int_pin(c6dofimu14_t *ctx)
6DOF IMU 14 get INT pin state function.
err_t c6dofimu14_generic_read(c6dofimu14_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
6DOF IMU 14 data reading function.
err_t c6dofimu14_init(c6dofimu14_t *ctx, c6dofimu14_cfg_t *cfg)
6DOF IMU 14 initialization function.
uint8_t c6dofimu14_get_snc_pin(c6dofimu14_t *ctx)
6DOF IMU 14 get SNC pin state function.
err_t c6dofimu14_get_temperature(c6dofimu14_t *ctx, float *temp)
6DOF IMU 14 get temperature data function.
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.
err_t c6dofimu14_get_accel_axis(c6dofimu14_t *ctx, c6dofimu14_axis_t *axis)
6DOF IMU 14 get accel data function.
err_t c6dofimu14_get_gyro_axis(c6dofimu14_t *ctx, c6dofimu14_axis_t *axis)
6DOF IMU 14 get gyro data function.
void c6dofimu14_cfg_setup(c6dofimu14_cfg_t *cfg)
6DOF IMU 14 configuration object setup function.
void c6dofimu14_drv_interface_selection(c6dofimu14_cfg_t *cfg, c6dofimu14_drv_t drv_sel)
6DOF IMU 14 driver interface setup function.
6DOF IMU 14 Axis structure object.
Definition: c6dofimu14.h:684
int16_t z
Definition: c6dofimu14.h:687
int16_t x
Definition: c6dofimu14.h:685
int16_t y
Definition: c6dofimu14.h:686
6DOF IMU 14 Click configuration object.
Definition: c6dofimu14.h:718
c6dofimu14_drv_t drv_sel
Definition: c6dofimu14.h:735
uint32_t i2c_speed
Definition: c6dofimu14.h:728
spi_master_chip_select_polarity_t cs_polarity
Definition: c6dofimu14.h:733
pin_name_t sck
Definition: c6dofimu14.h:723
spi_master_mode_t spi_mode
Definition: c6dofimu14.h:732
pin_name_t mosi
Definition: c6dofimu14.h:722
uint32_t spi_speed
Definition: c6dofimu14.h:731
pin_name_t snc
Definition: c6dofimu14.h:725
pin_name_t scl
Definition: c6dofimu14.h:719
pin_name_t int_pin
Definition: c6dofimu14.h:726
pin_name_t miso
Definition: c6dofimu14.h:721
pin_name_t sda
Definition: c6dofimu14.h:720
pin_name_t cs
Definition: c6dofimu14.h:724
uint8_t i2c_address
Definition: c6dofimu14.h:729
6DOF IMU 14 Click context object.
Definition: c6dofimu14.h:696
digital_out_t cs
Definition: c6dofimu14.h:697
c6dofimu14_drv_t drv_sel
Definition: c6dofimu14.h:706
spi_master_t spi
Definition: c6dofimu14.h:702
c6dofimu14_master_io_t write_f
Definition: c6dofimu14.h:708
c6dofimu14_master_io_t read_f
Definition: c6dofimu14.h:709
digital_in_t snc
Definition: c6dofimu14.h:698
digital_in_t int_pin
Definition: c6dofimu14.h:699
i2c_master_t i2c
Definition: c6dofimu14.h:701
uint8_t slave_address
Definition: c6dofimu14.h:704
pin_name_t chip_select
Definition: c6dofimu14.h:705