ICM42670 Portable Driver
Public API reference for the ICM-42670-P IMU driver
Loading...
Searching...
No Matches
ICM42670_registermap.h
Go to the documentation of this file.
1
10
#ifndef ICM42670_REGISTERMAP_H
11
#define ICM42670_REGISTERMAP_H
12
13
#ifdef __cplusplus
14
extern
"C"
{
15
#endif
16
17
#include <stdint.h>
18
19
/* Device identity. */
20
#define ICM42670_REG_WHO_AM_I 0x75U
21
#define ICM42670_WHO_AM_I_VALUE 0x67U
22
23
/* User bank 0: basic status and control. */
24
#define ICM42670_REG_MCLK_RDY 0x00U
25
#define ICM42670_REG_DEVICE_CONFIG 0x01U
26
#define ICM42670_REG_SIGNAL_PATH_RESET 0x02U
27
#define ICM42670_REG_DRIVE_CONFIG1 0x03U
28
#define ICM42670_REG_DRIVE_CONFIG2 0x04U
29
#define ICM42670_REG_DRIVE_CONFIG3 0x05U
30
#define ICM42670_REG_INT_CONFIG 0x06U
31
40
#define ICM42670_REG_TEMP_DATA1 0x09U
41
#define ICM42670_REG_TEMP_DATA0 0x0AU
42
#define ICM42670_REG_ACCEL_DATA_X1 0x0BU
43
#define ICM42670_REG_ACCEL_DATA_X0 0x0CU
44
#define ICM42670_REG_ACCEL_DATA_Y1 0x0DU
45
#define ICM42670_REG_ACCEL_DATA_Y0 0x0EU
46
#define ICM42670_REG_ACCEL_DATA_Z1 0x0FU
47
#define ICM42670_REG_ACCEL_DATA_Z0 0x10U
48
#define ICM42670_REG_GYRO_DATA_X1 0x11U
49
#define ICM42670_REG_GYRO_DATA_X0 0x12U
50
#define ICM42670_REG_GYRO_DATA_Y1 0x13U
51
#define ICM42670_REG_GYRO_DATA_Y0 0x14U
52
#define ICM42670_REG_GYRO_DATA_Z1 0x15U
53
#define ICM42670_REG_GYRO_DATA_Z0 0x16U
54
#define ICM42670_REG_TMST_FSYNCH 0x17U
55
#define ICM42670_REG_TMST_FSYNCL 0x18U
56
57
/* User bank 0: power, scale, ODR, and filter configuration. */
58
#define ICM42670_REG_PWR_MGMT0 0x1FU
59
#define ICM42670_REG_GYRO_CONFIG0 0x20U
60
#define ICM42670_REG_ACCEL_CONFIG0 0x21U
61
#define ICM42670_REG_TEMP_CONFIG0 0x22U
62
#define ICM42670_REG_GYRO_CONFIG1 0x23U
63
#define ICM42670_REG_ACCEL_CONFIG1 0x24U
64
65
/* User bank 0: APEX/WOM/FIFO/interrupt basics. */
66
#define ICM42670_REG_APEX_CONFIG0 0x25U
67
#define ICM42670_REG_APEX_CONFIG1 0x26U
68
#define ICM42670_REG_WOM_CONFIG 0x27U
69
#define ICM42670_REG_FIFO_CONFIG1 0x28U
70
#define ICM42670_REG_FIFO_CONFIG2 0x29U
71
#define ICM42670_REG_FIFO_CONFIG3 0x2AU
72
#define ICM42670_REG_INT_SOURCE0 0x2BU
73
#define ICM42670_REG_INT_SOURCE1 0x2CU
74
#define ICM42670_REG_INT_SOURCE3 0x2DU
75
#define ICM42670_REG_INT_SOURCE4 0x2EU
76
#define ICM42670_REG_INTF_CONFIG0 0x35U
77
#define ICM42670_REG_INTF_CONFIG1 0x36U
78
#define ICM42670_REG_INT_STATUS_DRDY 0x39U
79
#define ICM42670_REG_INT_STATUS 0x3AU
80
#define ICM42670_REG_INT_STATUS2 0x3BU
81
#define ICM42670_REG_INT_STATUS3 0x3CU
82
#define ICM42670_REG_FIFO_COUNTH 0x3DU
83
#define ICM42670_REG_FIFO_COUNTL 0x3EU
84
#define ICM42670_REG_FIFO_DATA 0x3FU
85
86
/* User bank 0: indirect MREG access window. */
87
#define ICM42670_REG_BLK_SEL_W 0x79U
88
#define ICM42670_REG_MADDR_W 0x7AU
89
#define ICM42670_REG_M_W 0x7BU
90
#define ICM42670_REG_BLK_SEL_R 0x7CU
91
#define ICM42670_REG_MADDR_R 0x7DU
92
#define ICM42670_REG_M_R 0x7EU
93
94
/* MREG bank identifiers and MREG1 register addresses. */
95
#define ICM42670_MREG1 0x00U
96
#define ICM42670_MREG1_REG_TMST_CONFIG1 0x00U
97
#define ICM42670_MREG1_REG_FIFO_CONFIG5 0x01U
98
#define ICM42670_MREG1_REG_FIFO_CONFIG6 0x02U
99
#define ICM42670_MREG1_REG_FSYNC_CONFIG 0x03U
100
#define ICM42670_MREG1_REG_INT_CONFIG0 0x04U
101
#define ICM42670_MREG1_REG_INT_CONFIG1 0x05U
102
#define ICM42670_MREG1_REG_SENSOR_CONFIG3 0x06U
103
#define ICM42670_MREG1_REG_FDR_CONFIG 0x66U
104
105
/* Useful contiguous burst lengths. */
106
#define ICM42670_TEMP_DATA_LEN 2U
107
#define ICM42670_ACCEL_DATA_LEN 6U
108
#define ICM42670_GYRO_DATA_LEN 6U
109
#define ICM42670_ACCEL_GYRO_TEMP_LEN 14U
110
111
/* MCLK_RDY bits. */
112
#define ICM42670_MCLK_RDY_MASK 0x08U
113
114
/* DEVICE_CONFIG bits. */
115
#define ICM42670_DEVICE_CONFIG_SOFT_RESET 0x01U
116
#define ICM42670_DEVICE_CONFIG_SPI_MODE_0 0x00U
117
#define ICM42670_DEVICE_CONFIG_SPI_MODE_3 0x10U
118
119
/* SIGNAL_PATH_RESET bits. */
120
#define ICM42670_SIGNAL_PATH_FIFO_FLUSH 0x04U
121
122
/* FIFO_CONFIG1 bits. */
123
#define ICM42670_FIFO_CONFIG1_MODE_MASK 0x02U
124
#define ICM42670_FIFO_CONFIG1_MODE_STREAM 0x00U
125
#define ICM42670_FIFO_CONFIG1_MODE_STOP_ON_FULL 0x02U
126
#define ICM42670_FIFO_CONFIG1_BYPASS_MASK 0x01U
127
#define ICM42670_FIFO_CONFIG1_BYPASS_DISABLE 0x00U
128
#define ICM42670_FIFO_CONFIG1_BYPASS_ENABLE 0x01U
129
130
/* FIFO_CONFIG2 and FIFO_CONFIG3 bits. */
131
#define ICM42670_FIFO_CONFIG2_WM_LOW_MASK 0xFFU
132
#define ICM42670_FIFO_CONFIG3_WM_HIGH_MASK 0x0FU
133
#define ICM42670_FIFO_WATERMARK_MAX 0x0FFFU
134
135
/* PWR_MGMT0 field values. */
136
#define ICM42670_PWR_ACCEL_LP_CLK_WUOSC 0x00U
137
#define ICM42670_PWR_ACCEL_LP_CLK_RC 0x80U
138
#define ICM42670_PWR_IDLE 0x10U
139
#define ICM42670_PWR_GYRO_OFF 0x00U
140
#define ICM42670_PWR_GYRO_STANDBY 0x04U
141
#define ICM42670_PWR_GYRO_LN 0x0CU
142
#define ICM42670_PWR_ACCEL_OFF 0x00U
143
#define ICM42670_PWR_ACCEL_LP 0x02U
144
#define ICM42670_PWR_ACCEL_LN 0x03U
145
#define ICM42670_PWR_ACCEL_GYRO_LN \
146
(ICM42670_PWR_GYRO_LN | ICM42670_PWR_ACCEL_LN)
147
148
/* GYRO_CONFIG0 and ACCEL_CONFIG0 field masks. */
149
#define ICM42670_GYRO_CONFIG0_FS_SEL_MASK 0x60U
150
#define ICM42670_GYRO_CONFIG0_ODR_MASK 0x0FU
151
#define ICM42670_ACCEL_CONFIG0_FS_SEL_MASK 0x60U
152
#define ICM42670_ACCEL_CONFIG0_ODR_MASK 0x0FU
153
#define ICM42670_GYRO_CONFIG1_UI_FILT_BW_MASK 0x07U
154
#define ICM42670_ACCEL_CONFIG1_UI_FILT_BW_MASK 0x07U
155
156
/* APEX_CONFIG1 and WOM_CONFIG bits. */
157
#define ICM42670_APEX_CONFIG1_FEATURE_ENABLE_MASK 0x78U
158
#define ICM42670_WOM_CONFIG_WOM_EN 0x01U
159
160
/* INTF_CONFIG0 bits. */
161
#define ICM42670_INTF_CONFIG0_FIFO_COUNT_FORMAT_MASK 0x40U
162
#define ICM42670_INTF_CONFIG0_FIFO_COUNT_FORMAT_BYTES 0x00U
163
#define ICM42670_INTF_CONFIG0_FIFO_COUNT_FORMAT_RECORDS 0x40U
164
#define ICM42670_INTF_CONFIG0_FIFO_COUNT_ENDIAN_MASK 0x20U
165
#define ICM42670_INTF_CONFIG0_SENSOR_DATA_ENDIAN_MASK 0x10U
166
167
/* FIFO packet header bits. */
168
#define ICM42670_FIFO_HEADER_MSG 0x80U
169
#define ICM42670_FIFO_HEADER_ACCEL 0x40U
170
#define ICM42670_FIFO_HEADER_GYRO 0x20U
171
#define ICM42670_FIFO_HEADER_20 0x10U
172
#define ICM42670_FIFO_HEADER_TIMESTAMP_FSYNC_MASK 0x0CU
173
#define ICM42670_FIFO_HEADER_ODR_ACCEL 0x02U
174
#define ICM42670_FIFO_HEADER_ODR_GYRO 0x01U
175
176
/* MREG1 TMST_CONFIG1 bits. */
177
#define ICM42670_TMST_CONFIG1_ON_SREG_EN 0x10U
178
#define ICM42670_TMST_CONFIG1_RES_16US 0x08U
179
#define ICM42670_TMST_CONFIG1_DELTA_EN 0x04U
180
#define ICM42670_TMST_CONFIG1_FSYNC_EN 0x02U
181
#define ICM42670_TMST_CONFIG1_TMST_EN 0x01U
182
183
/* MREG1 FSYNC_CONFIG bits. */
184
#define ICM42670_FSYNC_CONFIG_UI_SEL_MASK 0x70U
185
#define ICM42670_FSYNC_CONFIG_UI_SEL_SHIFT 4U
186
#define ICM42670_FSYNC_CONFIG_UI_FLAG_CLEAR_SEL 0x02U
187
#define ICM42670_FSYNC_CONFIG_POLARITY_FALLING 0x01U
188
189
/* MREG1 FIFO_CONFIG5 bits. */
190
#define ICM42670_FIFO_CONFIG5_WM_GT_TH 0x20U
191
#define ICM42670_FIFO_CONFIG5_RESUME_PARTIAL_RD 0x10U
192
#define ICM42670_FIFO_CONFIG5_HIRES_EN 0x08U
193
#define ICM42670_FIFO_CONFIG5_TMST_FSYNC_EN 0x04U
194
#define ICM42670_FIFO_CONFIG5_GYRO_EN 0x02U
195
#define ICM42670_FIFO_CONFIG5_ACCEL_EN 0x01U
196
197
/* MREG1 FIFO_CONFIG6 bits. */
198
#define ICM42670_FIFO_CONFIG6_EMPTY_INDICATOR_DIS 0x10U
199
#define ICM42670_FIFO_CONFIG6_RCOSC_REQ_ON_FIFO_THS_DIS 0x01U
200
201
/* MREG1 INT_CONFIG0 bits. */
202
#define ICM42670_INT_CONFIG0_UI_DRDY_INT_CLEAR_MASK 0x30U
203
#define ICM42670_INT_CONFIG0_FIFO_THS_INT_CLEAR_MASK 0x0CU
204
#define ICM42670_INT_CONFIG0_FIFO_FULL_INT_CLEAR_MASK 0x03U
205
#define ICM42670_INT_CONFIG0_CLEAR_ON_STATUS_READ 0x00U
206
#define ICM42670_INT_CONFIG0_FIFO_THS_CLEAR_ON_FIFO_READ 0x08U
207
#define ICM42670_INT_CONFIG0_FIFO_FULL_CLEAR_ON_FIFO_READ 0x02U
208
209
/* MREG1 INT_CONFIG1 bits. */
210
#define ICM42670_INT_CONFIG1_TPULSE_DURATION_8US 0x40U
211
#define ICM42670_INT_CONFIG1_ASYNC_RESET 0x10U
212
213
/* MREG1 SENSOR_CONFIG3 bits. */
214
#define ICM42670_SENSOR_CONFIG3_APEX_DISABLE 0x40U
215
216
/* Common config bytes. */
217
#define ICM42670_GYRO_CONFIG0_2000DPS_100HZ \
218
(ICM42670_GYRO_FS_2000_DPS | ICM42670_ODR_100_HZ)
219
#define ICM42670_ACCEL_CONFIG0_16G_100HZ \
220
(ICM42670_ACCEL_FS_16G | ICM42670_ODR_100_HZ)
221
222
/* INT_CONFIG bits. */
223
#define ICM42670_INT_CONFIG_INT2_LATCHED 0x20U
224
#define ICM42670_INT_CONFIG_INT2_PUSH_PULL 0x10U
225
#define ICM42670_INT_CONFIG_INT2_ACTIVE_HIGH 0x08U
226
#define ICM42670_INT_CONFIG_INT1_LATCHED 0x04U
227
#define ICM42670_INT_CONFIG_INT1_PUSH_PULL 0x02U
228
#define ICM42670_INT_CONFIG_INT1_ACTIVE_HIGH 0x01U
229
#define ICM42670_INT_CONFIG_BOTH_LATCHED_PUSH_PULL_ACTIVE_HIGH \
230
(ICM42670_INT_CONFIG_INT2_LATCHED | ICM42670_INT_CONFIG_INT2_PUSH_PULL | \
231
ICM42670_INT_CONFIG_INT2_ACTIVE_HIGH | ICM42670_INT_CONFIG_INT1_LATCHED | \
232
ICM42670_INT_CONFIG_INT1_PUSH_PULL | ICM42670_INT_CONFIG_INT1_ACTIVE_HIGH)
233
234
/* INT_SOURCE0 bits. */
235
#define ICM42670_INT_SOURCE0_FSYNC_INT1_EN 0x40U
236
#define ICM42670_INT_SOURCE0_DRDY_INT1_EN 0x08U
237
#define ICM42670_INT_SOURCE0_FIFO_THS_INT1_EN 0x04U
238
#define ICM42670_INT_SOURCE0_FIFO_FULL_INT1_EN 0x02U
239
240
/* INT_SOURCE3 bits. */
241
#define ICM42670_INT_SOURCE3_FSYNC_INT2_EN 0x40U
242
#define ICM42670_INT_SOURCE3_DRDY_INT2_EN 0x08U
243
#define ICM42670_INT_SOURCE3_FIFO_THS_INT2_EN 0x04U
244
#define ICM42670_INT_SOURCE3_FIFO_FULL_INT2_EN 0x02U
245
246
/* INT_STATUS_DRDY bits. */
247
#define ICM42670_INT_STATUS_DRDY_DATA_RDY 0x01U
248
249
/* INT_STATUS bits. */
250
#define ICM42670_INT_STATUS_ST 0x80U
251
#define ICM42670_INT_STATUS_FSYNC 0x40U
252
#define ICM42670_INT_STATUS_PLL_RDY 0x20U
253
#define ICM42670_INT_STATUS_RESET_DONE 0x10U
254
#define ICM42670_INT_STATUS_FIFO_THS 0x04U
255
#define ICM42670_INT_STATUS_FIFO_FULL 0x02U
256
#define ICM42670_INT_STATUS_AGC_RDY 0x01U
257
258
#ifdef __cplusplus
259
}
260
#endif
261
262
#endif
/* ICM42670_REGISTERMAP_H */
ICM42670_Driver
ICM42670_registermap.h
Generated by
1.9.8