Subversion Repositories Projects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2194 - 1
/*
2
MPU6050 lib 0x02
3
 
4
copyright (c) Davide Gironi, 2012
5
 
6
Released under GPLv3.
7
Please refer to LICENSE file for licensing information.
8
*/
9
 
10
 
11
#ifndef MPU6050REGISTERS_H_
12
#define MPU6050REGISTERS_H_
13
 
14
#define MPU6050_RA_XG_OFFS_TC       0x00 //[7] PWR_MODE, [6:1] XG_OFFS_TC, [0] OTP_BNK_VLD
15
#define MPU6050_RA_YG_OFFS_TC       0x01 //[7] PWR_MODE, [6:1] YG_OFFS_TC, [0] OTP_BNK_VLD
16
#define MPU6050_RA_ZG_OFFS_TC       0x02 //[7] PWR_MODE, [6:1] ZG_OFFS_TC, [0] OTP_BNK_VLD
17
#define MPU6050_RA_X_FINE_GAIN      0x03 //[7:0] X_FINE_GAIN
18
#define MPU6050_RA_Y_FINE_GAIN      0x04 //[7:0] Y_FINE_GAIN
19
#define MPU6050_RA_Z_FINE_GAIN      0x05 //[7:0] Z_FINE_GAIN
20
#define MPU6050_RA_XA_OFFS_H        0x06 //[15:0] XA_OFFS
21
#define MPU6050_RA_XA_OFFS_L_TC     0x07
22
#define MPU6050_RA_YA_OFFS_H        0x08 //[15:0] YA_OFFS
23
#define MPU6050_RA_YA_OFFS_L_TC     0x09
24
#define MPU6050_RA_ZA_OFFS_H        0x0A //[15:0] ZA_OFFS
25
#define MPU6050_RA_ZA_OFFS_L_TC     0x0B
26
#define MPU6050_RA_XG_OFFS_USRH     0x13 //[15:0] XG_OFFS_USR
27
#define MPU6050_RA_XG_OFFS_USRL     0x14
28
#define MPU6050_RA_YG_OFFS_USRH     0x15 //[15:0] YG_OFFS_USR
29
#define MPU6050_RA_YG_OFFS_USRL     0x16
30
#define MPU6050_RA_ZG_OFFS_USRH     0x17 //[15:0] ZG_OFFS_USR
31
#define MPU6050_RA_ZG_OFFS_USRL     0x18
32
#define MPU6050_RA_SMPLRT_DIV       0x19
33
#define MPU6050_RA_CONFIG           0x1A
34
#define MPU6050_RA_GYRO_CONFIG      0x1B
35
#define MPU6050_RA_ACCEL_CONFIG     0x1C
36
#define MPU6050_RA_FF_THR           0x1D
37
#define MPU6050_RA_FF_DUR           0x1E
38
#define MPU6050_RA_MOT_THR          0x1F
39
#define MPU6050_RA_MOT_DUR          0x20
40
#define MPU6050_RA_ZRMOT_THR        0x21
41
#define MPU6050_RA_ZRMOT_DUR        0x22
42
#define MPU6050_RA_FIFO_EN          0x23
43
#define MPU6050_RA_I2C_MST_CTRL     0x24
44
#define MPU6050_RA_I2C_SLV0_ADDR    0x25
45
#define MPU6050_RA_I2C_SLV0_REG     0x26
46
#define MPU6050_RA_I2C_SLV0_CTRL    0x27
47
#define MPU6050_RA_I2C_SLV1_ADDR    0x28
48
#define MPU6050_RA_I2C_SLV1_REG     0x29
49
#define MPU6050_RA_I2C_SLV1_CTRL    0x2A
50
#define MPU6050_RA_I2C_SLV2_ADDR    0x2B
51
#define MPU6050_RA_I2C_SLV2_REG     0x2C
52
#define MPU6050_RA_I2C_SLV2_CTRL    0x2D
53
#define MPU6050_RA_I2C_SLV3_ADDR    0x2E
54
#define MPU6050_RA_I2C_SLV3_REG     0x2F
55
#define MPU6050_RA_I2C_SLV3_CTRL    0x30
56
#define MPU6050_RA_I2C_SLV4_ADDR    0x31
57
#define MPU6050_RA_I2C_SLV4_REG     0x32
58
#define MPU6050_RA_I2C_SLV4_DO      0x33
59
#define MPU6050_RA_I2C_SLV4_CTRL    0x34
60
#define MPU6050_RA_I2C_SLV4_DI      0x35
61
#define MPU6050_RA_I2C_MST_STATUS   0x36
62
#define MPU6050_RA_INT_PIN_CFG      0x37
63
#define MPU6050_RA_INT_ENABLE       0x38
64
#define MPU6050_RA_DMP_INT_STATUS   0x39
65
#define MPU6050_RA_INT_STATUS       0x3A
66
#define MPU6050_RA_ACCEL_XOUT_H     0x3B
67
#define MPU6050_RA_ACCEL_XOUT_L     0x3C
68
#define MPU6050_RA_ACCEL_YOUT_H     0x3D
69
#define MPU6050_RA_ACCEL_YOUT_L     0x3E
70
#define MPU6050_RA_ACCEL_ZOUT_H     0x3F
71
#define MPU6050_RA_ACCEL_ZOUT_L     0x40
72
#define MPU6050_RA_TEMP_OUT_H       0x41
73
#define MPU6050_RA_TEMP_OUT_L       0x42
74
#define MPU6050_RA_GYRO_XOUT_H      0x43
75
#define MPU6050_RA_GYRO_XOUT_L      0x44
76
#define MPU6050_RA_GYRO_YOUT_H      0x45
77
#define MPU6050_RA_GYRO_YOUT_L      0x46
78
#define MPU6050_RA_GYRO_ZOUT_H      0x47
79
#define MPU6050_RA_GYRO_ZOUT_L      0x48
80
#define MPU6050_RA_EXT_SENS_DATA_00 0x49
81
#define MPU6050_RA_EXT_SENS_DATA_01 0x4A
82
#define MPU6050_RA_EXT_SENS_DATA_02 0x4B
83
#define MPU6050_RA_EXT_SENS_DATA_03 0x4C
84
#define MPU6050_RA_EXT_SENS_DATA_04 0x4D
85
#define MPU6050_RA_EXT_SENS_DATA_05 0x4E
86
#define MPU6050_RA_EXT_SENS_DATA_06 0x4F
87
#define MPU6050_RA_EXT_SENS_DATA_07 0x50
88
#define MPU6050_RA_EXT_SENS_DATA_08 0x51
89
#define MPU6050_RA_EXT_SENS_DATA_09 0x52
90
#define MPU6050_RA_EXT_SENS_DATA_10 0x53
91
#define MPU6050_RA_EXT_SENS_DATA_11 0x54
92
#define MPU6050_RA_EXT_SENS_DATA_12 0x55
93
#define MPU6050_RA_EXT_SENS_DATA_13 0x56
94
#define MPU6050_RA_EXT_SENS_DATA_14 0x57
95
#define MPU6050_RA_EXT_SENS_DATA_15 0x58
96
#define MPU6050_RA_EXT_SENS_DATA_16 0x59
97
#define MPU6050_RA_EXT_SENS_DATA_17 0x5A
98
#define MPU6050_RA_EXT_SENS_DATA_18 0x5B
99
#define MPU6050_RA_EXT_SENS_DATA_19 0x5C
100
#define MPU6050_RA_EXT_SENS_DATA_20 0x5D
101
#define MPU6050_RA_EXT_SENS_DATA_21 0x5E
102
#define MPU6050_RA_EXT_SENS_DATA_22 0x5F
103
#define MPU6050_RA_EXT_SENS_DATA_23 0x60
104
#define MPU6050_RA_MOT_DETECT_STATUS    0x61
105
#define MPU6050_RA_I2C_SLV0_DO      0x63
106
#define MPU6050_RA_I2C_SLV1_DO      0x64
107
#define MPU6050_RA_I2C_SLV2_DO      0x65
108
#define MPU6050_RA_I2C_SLV3_DO      0x66
109
#define MPU6050_RA_I2C_MST_DELAY_CTRL   0x67
110
#define MPU6050_RA_SIGNAL_PATH_RESET    0x68
111
#define MPU6050_RA_MOT_DETECT_CTRL      0x69
112
#define MPU6050_RA_USER_CTRL        0x6A
113
#define MPU6050_RA_PWR_MGMT_1       0x6B
114
#define MPU6050_RA_PWR_MGMT_2       0x6C
115
#define MPU6050_RA_BANK_SEL         0x6D
116
#define MPU6050_RA_MEM_START_ADDR   0x6E
117
#define MPU6050_RA_MEM_R_W          0x6F
118
#define MPU6050_RA_DMP_CFG_1        0x70
119
#define MPU6050_RA_DMP_CFG_2        0x71
120
#define MPU6050_RA_FIFO_COUNTH      0x72
121
#define MPU6050_RA_FIFO_COUNTL      0x73
122
#define MPU6050_RA_FIFO_R_W         0x74
123
#define MPU6050_RA_WHO_AM_I         0x75
124
 
125
#define MPU6050_TC_PWR_MODE_BIT     7
126
#define MPU6050_TC_OFFSET_BIT       6
127
#define MPU6050_TC_OFFSET_LENGTH    6
128
#define MPU6050_TC_OTP_BNK_VLD_BIT  0
129
 
130
#define MPU6050_VDDIO_LEVEL_VLOGIC  0
131
#define MPU6050_VDDIO_LEVEL_VDD     1
132
 
133
#define MPU6050_CFG_EXT_SYNC_SET_BIT    5
134
#define MPU6050_CFG_EXT_SYNC_SET_LENGTH 3
135
#define MPU6050_CFG_DLPF_CFG_BIT    2
136
#define MPU6050_CFG_DLPF_CFG_LENGTH 3
137
 
138
#define MPU6050_EXT_SYNC_DISABLED       0x0
139
#define MPU6050_EXT_SYNC_TEMP_OUT_L     0x1
140
#define MPU6050_EXT_SYNC_GYRO_XOUT_L    0x2
141
#define MPU6050_EXT_SYNC_GYRO_YOUT_L    0x3
142
#define MPU6050_EXT_SYNC_GYRO_ZOUT_L    0x4
143
#define MPU6050_EXT_SYNC_ACCEL_XOUT_L   0x5
144
#define MPU6050_EXT_SYNC_ACCEL_YOUT_L   0x6
145
#define MPU6050_EXT_SYNC_ACCEL_ZOUT_L   0x7
146
 
147
#define MPU6050_DLPF_BW_256         0x00
148
#define MPU6050_DLPF_BW_188         0x01
149
#define MPU6050_DLPF_BW_98          0x02
150
#define MPU6050_DLPF_BW_42          0x03
151
#define MPU6050_DLPF_BW_20          0x04
152
#define MPU6050_DLPF_BW_10          0x05
153
#define MPU6050_DLPF_BW_5           0x06
154
 
155
#define MPU6050_GCONFIG_FS_SEL_BIT      4
156
#define MPU6050_GCONFIG_FS_SEL_LENGTH   2
157
 
158
#define MPU6050_GYRO_FS_250         0x00
159
#define MPU6050_GYRO_FS_500         0x01
160
#define MPU6050_GYRO_FS_1000        0x02
161
#define MPU6050_GYRO_FS_2000        0x03
162
 
163
#define MPU6050_ACONFIG_XA_ST_BIT           7
164
#define MPU6050_ACONFIG_YA_ST_BIT           6
165
#define MPU6050_ACONFIG_ZA_ST_BIT           5
166
#define MPU6050_ACONFIG_AFS_SEL_BIT         4
167
#define MPU6050_ACONFIG_AFS_SEL_LENGTH      2
168
#define MPU6050_ACONFIG_ACCEL_HPF_BIT       2
169
#define MPU6050_ACONFIG_ACCEL_HPF_LENGTH    3
170
 
171
#define MPU6050_ACCEL_FS_2          0x00
172
#define MPU6050_ACCEL_FS_4          0x01
173
#define MPU6050_ACCEL_FS_8          0x02
174
#define MPU6050_ACCEL_FS_16         0x03
175
 
176
#define MPU6050_DHPF_RESET          0x00
177
#define MPU6050_DHPF_5              0x01
178
#define MPU6050_DHPF_2P5            0x02
179
#define MPU6050_DHPF_1P25           0x03
180
#define MPU6050_DHPF_0P63           0x04
181
#define MPU6050_DHPF_HOLD           0x07
182
 
183
#define MPU6050_TEMP_FIFO_EN_BIT    7
184
#define MPU6050_XG_FIFO_EN_BIT      6
185
#define MPU6050_YG_FIFO_EN_BIT      5
186
#define MPU6050_ZG_FIFO_EN_BIT      4
187
#define MPU6050_ACCEL_FIFO_EN_BIT   3
188
#define MPU6050_SLV2_FIFO_EN_BIT    2
189
#define MPU6050_SLV1_FIFO_EN_BIT    1
190
#define MPU6050_SLV0_FIFO_EN_BIT    0
191
 
192
#define MPU6050_MULT_MST_EN_BIT     7
193
#define MPU6050_WAIT_FOR_ES_BIT     6
194
#define MPU6050_SLV_3_FIFO_EN_BIT   5
195
#define MPU6050_I2C_MST_P_NSR_BIT   4
196
#define MPU6050_I2C_MST_CLK_BIT     3
197
#define MPU6050_I2C_MST_CLK_LENGTH  4
198
 
199
#define MPU6050_CLOCK_DIV_348       0x0
200
#define MPU6050_CLOCK_DIV_333       0x1
201
#define MPU6050_CLOCK_DIV_320       0x2
202
#define MPU6050_CLOCK_DIV_308       0x3
203
#define MPU6050_CLOCK_DIV_296       0x4
204
#define MPU6050_CLOCK_DIV_286       0x5
205
#define MPU6050_CLOCK_DIV_276       0x6
206
#define MPU6050_CLOCK_DIV_267       0x7
207
#define MPU6050_CLOCK_DIV_258       0x8
208
#define MPU6050_CLOCK_DIV_500       0x9
209
#define MPU6050_CLOCK_DIV_471       0xA
210
#define MPU6050_CLOCK_DIV_444       0xB
211
#define MPU6050_CLOCK_DIV_421       0xC
212
#define MPU6050_CLOCK_DIV_400       0xD
213
#define MPU6050_CLOCK_DIV_381       0xE
214
#define MPU6050_CLOCK_DIV_364       0xF
215
 
216
#define MPU6050_I2C_SLV_RW_BIT      7
217
#define MPU6050_I2C_SLV_ADDR_BIT    6
218
#define MPU6050_I2C_SLV_ADDR_LENGTH 7
219
#define MPU6050_I2C_SLV_EN_BIT      7
220
#define MPU6050_I2C_SLV_BYTE_SW_BIT 6
221
#define MPU6050_I2C_SLV_REG_DIS_BIT 5
222
#define MPU6050_I2C_SLV_GRP_BIT     4
223
#define MPU6050_I2C_SLV_LEN_BIT     3
224
#define MPU6050_I2C_SLV_LEN_LENGTH  4
225
 
226
#define MPU6050_I2C_SLV4_RW_BIT         7
227
#define MPU6050_I2C_SLV4_ADDR_BIT       6
228
#define MPU6050_I2C_SLV4_ADDR_LENGTH    7
229
#define MPU6050_I2C_SLV4_EN_BIT         7
230
#define MPU6050_I2C_SLV4_INT_EN_BIT     6
231
#define MPU6050_I2C_SLV4_REG_DIS_BIT    5
232
#define MPU6050_I2C_SLV4_MST_DLY_BIT    4
233
#define MPU6050_I2C_SLV4_MST_DLY_LENGTH 5
234
 
235
#define MPU6050_MST_PASS_THROUGH_BIT    7
236
#define MPU6050_MST_I2C_SLV4_DONE_BIT   6
237
#define MPU6050_MST_I2C_LOST_ARB_BIT    5
238
#define MPU6050_MST_I2C_SLV4_NACK_BIT   4
239
#define MPU6050_MST_I2C_SLV3_NACK_BIT   3
240
#define MPU6050_MST_I2C_SLV2_NACK_BIT   2
241
#define MPU6050_MST_I2C_SLV1_NACK_BIT   1
242
#define MPU6050_MST_I2C_SLV0_NACK_BIT   0
243
 
244
#define MPU6050_INTCFG_INT_LEVEL_BIT        7
245
#define MPU6050_INTCFG_INT_OPEN_BIT         6
246
#define MPU6050_INTCFG_LATCH_INT_EN_BIT     5
247
#define MPU6050_INTCFG_INT_RD_CLEAR_BIT     4
248
#define MPU6050_INTCFG_FSYNC_INT_LEVEL_BIT  3
249
#define MPU6050_INTCFG_FSYNC_INT_EN_BIT     2
250
#define MPU6050_INTCFG_I2C_BYPASS_EN_BIT    1
251
#define MPU6050_INTCFG_CLKOUT_EN_BIT        0
252
 
253
#define MPU6050_INTMODE_ACTIVEHIGH  0x00
254
#define MPU6050_INTMODE_ACTIVELOW   0x01
255
 
256
#define MPU6050_INTDRV_PUSHPULL     0x00
257
#define MPU6050_INTDRV_OPENDRAIN    0x01
258
 
259
#define MPU6050_INTLATCH_50USPULSE  0x00
260
#define MPU6050_INTLATCH_WAITCLEAR  0x01
261
 
262
#define MPU6050_INTCLEAR_STATUSREAD 0x00
263
#define MPU6050_INTCLEAR_ANYREAD    0x01
264
 
265
#define MPU6050_INTERRUPT_FF_BIT            7
266
#define MPU6050_INTERRUPT_MOT_BIT           6
267
#define MPU6050_INTERRUPT_ZMOT_BIT          5
268
#define MPU6050_INTERRUPT_FIFO_OFLOW_BIT    4
269
#define MPU6050_INTERRUPT_I2C_MST_INT_BIT   3
270
#define MPU6050_INTERRUPT_PLL_RDY_INT_BIT   2
271
#define MPU6050_INTERRUPT_DMP_INT_BIT       1
272
#define MPU6050_INTERRUPT_DATA_RDY_BIT      0
273
 
274
// TODO: figure out what these actually do
275
// UMPL source code is not very obivous
276
#define MPU6050_DMPINT_5_BIT            5
277
#define MPU6050_DMPINT_4_BIT            4
278
#define MPU6050_DMPINT_3_BIT            3
279
#define MPU6050_DMPINT_2_BIT            2
280
#define MPU6050_DMPINT_1_BIT            1
281
#define MPU6050_DMPINT_0_BIT            0
282
 
283
#define MPU6050_MOTION_MOT_XNEG_BIT     7
284
#define MPU6050_MOTION_MOT_XPOS_BIT     6
285
#define MPU6050_MOTION_MOT_YNEG_BIT     5
286
#define MPU6050_MOTION_MOT_YPOS_BIT     4
287
#define MPU6050_MOTION_MOT_ZNEG_BIT     3
288
#define MPU6050_MOTION_MOT_ZPOS_BIT     2
289
#define MPU6050_MOTION_MOT_ZRMOT_BIT    0
290
 
291
#define MPU6050_DELAYCTRL_DELAY_ES_SHADOW_BIT   7
292
#define MPU6050_DELAYCTRL_I2C_SLV4_DLY_EN_BIT   4
293
#define MPU6050_DELAYCTRL_I2C_SLV3_DLY_EN_BIT   3
294
#define MPU6050_DELAYCTRL_I2C_SLV2_DLY_EN_BIT   2
295
#define MPU6050_DELAYCTRL_I2C_SLV1_DLY_EN_BIT   1
296
#define MPU6050_DELAYCTRL_I2C_SLV0_DLY_EN_BIT   0
297
 
298
#define MPU6050_PATHRESET_GYRO_RESET_BIT    2
299
#define MPU6050_PATHRESET_ACCEL_RESET_BIT   1
300
#define MPU6050_PATHRESET_TEMP_RESET_BIT    0
301
 
302
#define MPU6050_DETECT_ACCEL_ON_DELAY_BIT       5
303
#define MPU6050_DETECT_ACCEL_ON_DELAY_LENGTH    2
304
#define MPU6050_DETECT_FF_COUNT_BIT             3
305
#define MPU6050_DETECT_FF_COUNT_LENGTH          2
306
#define MPU6050_DETECT_MOT_COUNT_BIT            1
307
#define MPU6050_DETECT_MOT_COUNT_LENGTH         2
308
 
309
#define MPU6050_DETECT_DECREMENT_RESET  0x0
310
#define MPU6050_DETECT_DECREMENT_1      0x1
311
#define MPU6050_DETECT_DECREMENT_2      0x2
312
#define MPU6050_DETECT_DECREMENT_4      0x3
313
 
314
#define MPU6050_USERCTRL_DMP_EN_BIT             7
315
#define MPU6050_USERCTRL_FIFO_EN_BIT            6
316
#define MPU6050_USERCTRL_I2C_MST_EN_BIT         5
317
#define MPU6050_USERCTRL_I2C_IF_DIS_BIT         4
318
#define MPU6050_USERCTRL_DMP_RESET_BIT          3
319
#define MPU6050_USERCTRL_FIFO_RESET_BIT         2
320
#define MPU6050_USERCTRL_I2C_MST_RESET_BIT      1
321
#define MPU6050_USERCTRL_SIG_COND_RESET_BIT     0
322
 
323
#define MPU6050_PWR1_DEVICE_RESET_BIT   7
324
#define MPU6050_PWR1_SLEEP_BIT          6
325
#define MPU6050_PWR1_CYCLE_BIT          5
326
#define MPU6050_PWR1_TEMP_DIS_BIT       3
327
#define MPU6050_PWR1_CLKSEL_BIT         2
328
#define MPU6050_PWR1_CLKSEL_LENGTH      3
329
 
330
#define MPU6050_CLOCK_INTERNAL          0x00
331
#define MPU6050_CLOCK_PLL_XGYRO         0x01
332
#define MPU6050_CLOCK_PLL_YGYRO         0x02
333
#define MPU6050_CLOCK_PLL_ZGYRO         0x03
334
#define MPU6050_CLOCK_PLL_EXT32K        0x04
335
#define MPU6050_CLOCK_PLL_EXT19M        0x05
336
#define MPU6050_CLOCK_KEEP_RESET        0x07
337
 
338
#define MPU6050_PWR2_LP_WAKE_CTRL_BIT       7
339
#define MPU6050_PWR2_LP_WAKE_CTRL_LENGTH    2
340
#define MPU6050_PWR2_STBY_XA_BIT            5
341
#define MPU6050_PWR2_STBY_YA_BIT            4
342
#define MPU6050_PWR2_STBY_ZA_BIT            3
343
#define MPU6050_PWR2_STBY_XG_BIT            2
344
#define MPU6050_PWR2_STBY_YG_BIT            1
345
#define MPU6050_PWR2_STBY_ZG_BIT            0
346
 
347
#define MPU6050_WAKE_FREQ_1P25      0x0
348
#define MPU6050_WAKE_FREQ_2P5       0x1
349
#define MPU6050_WAKE_FREQ_5         0x2
350
#define MPU6050_WAKE_FREQ_10        0x3
351
 
352
#define MPU6050_BANKSEL_PRFTCH_EN_BIT       6
353
#define MPU6050_BANKSEL_CFG_USER_BANK_BIT   5
354
#define MPU6050_BANKSEL_MEM_SEL_BIT         4
355
#define MPU6050_BANKSEL_MEM_SEL_LENGTH      5
356
 
357
#define MPU6050_WHO_AM_I_BIT        6
358
#define MPU6050_WHO_AM_I_LENGTH     6
359
 
360
#define MPU6050_DMP_MEMORY_BANKS        8
361
#define MPU6050_DMP_MEMORY_BANK_SIZE    256
362
#define MPU6050_DMP_MEMORY_CHUNK_SIZE   16
363
 
364
 
365
#endif