LibDriver MPU6050
Loading...
Searching...
No Matches
driver_mpu6050_dmp_read_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static mpu6050_handle_t gs_handle;
41static int16_t gs_accel_raw[128][3];
42static float gs_accel_g[128][3];
43static int16_t gs_gyro_raw[128][3];
44static float gs_gyro_dps[128][3];
45static int32_t gs_quat[128][4];
46static float gs_pitch[128];
47static float gs_roll[128];
48static float gs_yaw[128];
49
58{
59 if (mpu6050_irq_handler(&gs_handle) != 0)
60 {
61 return 1;
62 }
63 else
64 {
65 return 0;
66 }
67}
68
78uint8_t mpu6050_dmp_read_test(mpu6050_address_t addr, uint32_t times)
79{
80 uint8_t res;
81 uint32_t ms;
82 uint32_t ms_check;
83 uint32_t cnt;
84 uint32_t cnt_check;
85 uint32_t i;
86 uint16_t m;
87 uint16_t m_check;
88 uint8_t c;
89 uint8_t c_check;
90 int32_t gyro_offset_raw[3];
91 int32_t accel_offset_raw[3];
92 int32_t gyro_offset[3];
93 int32_t accel_offset[3];
94 mpu6050_bool_t enable;
95 mpu6050_info_t info;
96 int8_t gyro_orientation[9] = {1, 0, 0,
97 0, 1, 0,
98 0, 0, 1};
99
100 /* link interface function */
109
110 /* get information */
111 res = mpu6050_info(&info);
112 if (res != 0)
113 {
114 mpu6050_interface_debug_print("mpu6050: get info failed.\n");
115
116 return 1;
117 }
118 else
119 {
120 /* print chip info */
121 mpu6050_interface_debug_print("mpu6050: chip is %s.\n", info.chip_name);
122 mpu6050_interface_debug_print("mpu6050: manufacturer is %s.\n", info.manufacturer_name);
123 mpu6050_interface_debug_print("mpu6050: interface is %s.\n", info.interface);
124 mpu6050_interface_debug_print("mpu6050: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
125 mpu6050_interface_debug_print("mpu6050: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
126 mpu6050_interface_debug_print("mpu6050: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
127 mpu6050_interface_debug_print("mpu6050: max current is %0.2fmA.\n", info.max_current_ma);
128 mpu6050_interface_debug_print("mpu6050: max temperature is %0.1fC.\n", info.temperature_max);
129 mpu6050_interface_debug_print("mpu6050: min temperature is %0.1fC.\n", info.temperature_min);
130 }
131
132 /* start dmp read test */
133 mpu6050_interface_debug_print("mpu6050: start dmp read test.\n");
134
135 /* set the addr pin */
136 res = mpu6050_set_addr_pin(&gs_handle, addr);
137 if (res != 0)
138 {
139 mpu6050_interface_debug_print("mpu6050: set addr pin failed.\n");
140
141 return 1;
142 }
143
144 /* init */
145 res = mpu6050_init(&gs_handle);
146 if (res != 0)
147 {
148 mpu6050_interface_debug_print("mpu6050: init failed.\n");
149
150 return 1;
151 }
152
153 /* delay 100 ms */
155
156 /* disable sleep */
157 res = mpu6050_set_sleep(&gs_handle, MPU6050_BOOL_FALSE);
158 if (res != 0)
159 {
160 mpu6050_interface_debug_print("mpu6050: set sleep failed.\n");
161 (void)mpu6050_deinit(&gs_handle);
162
163 return 1;
164 }
165
166 /* run the self test */
167 res = mpu6050_self_test(&gs_handle, gyro_offset_raw, accel_offset_raw);
168 if (res != 0)
169 {
170 mpu6050_interface_debug_print("mpu6050: self test failed.\n");
171 (void)mpu6050_deinit(&gs_handle);
172
173 return 1;
174 }
175
176 /* set pll x */
178 if (res != 0)
179 {
180 mpu6050_interface_debug_print("mpu6050: set clock source failed.\n");
181 (void)mpu6050_deinit(&gs_handle);
182
183 return 1;
184 }
185
186 /* set 200Hz */
187 res = mpu6050_set_sample_rate_divider(&gs_handle, (1000 / 200) - 1);
188 if (res != 0)
189 {
190 mpu6050_interface_debug_print("mpu6050: set sample rate divider failed.\n");
191 (void)mpu6050_deinit(&gs_handle);
192
193 return 1;
194 }
195
196 /* ±2g */
198 if (res != 0)
199 {
200 mpu6050_interface_debug_print("mpu6050: set accelerometer range failed.\n");
201 (void)mpu6050_deinit(&gs_handle);
202
203 return 1;
204 }
205
206 /* ±2000dps */
208 if (res != 0)
209 {
210 mpu6050_interface_debug_print("mpu6050: set gyroscope range failed.\n");
211 (void)mpu6050_deinit(&gs_handle);
212
213 return 1;
214 }
215
216 /* set low pass filter 3 */
218 if (res != 0)
219 {
220 mpu6050_interface_debug_print("mpu6050: set low pass filter failed.\n");
221 (void)mpu6050_deinit(&gs_handle);
222
223 return 1;
224 }
225
226 /* enable temperature sensor */
228 if (res != 0)
229 {
230 mpu6050_interface_debug_print("mpu6050: set temperature sensor failed.\n");
231 (void)mpu6050_deinit(&gs_handle);
232
233 return 1;
234 }
235
236 /* disable cycle wake up */
238 if (res != 0)
239 {
240 mpu6050_interface_debug_print("mpu6050: set cycle wake up failed.\n");
241 (void)mpu6050_deinit(&gs_handle);
242
243 return 1;
244 }
245
246 /* set wake up frequency 1.25Hz */
248 if (res != 0)
249 {
250 mpu6050_interface_debug_print("mpu6050: set wake up frequency failed.\n");
251 (void)mpu6050_deinit(&gs_handle);
252
253 return 1;
254 }
255
256 /* enable acc x */
258 if (res != 0)
259 {
260 mpu6050_interface_debug_print("mpu6050: set standby mode failed.\n");
261 (void)mpu6050_deinit(&gs_handle);
262
263 return 1;
264 }
265
266 /* enable acc y */
268 if (res != 0)
269 {
270 mpu6050_interface_debug_print("mpu6050: set standby mode failed.\n");
271 (void)mpu6050_deinit(&gs_handle);
272
273 return 1;
274 }
275
276 /* enable acc z */
278 if (res != 0)
279 {
280 mpu6050_interface_debug_print("mpu6050: set standby mode failed.\n");
281 (void)mpu6050_deinit(&gs_handle);
282
283 return 1;
284 }
285
286 /* enable gyro x */
288 if (res != 0)
289 {
290 mpu6050_interface_debug_print("mpu6050: set standby mode failed.\n");
291 (void)mpu6050_deinit(&gs_handle);
292
293 return 1;
294 }
295
296 /* enable gyro y */
298 if (res != 0)
299 {
300 mpu6050_interface_debug_print("mpu6050: set standby mode failed.\n");
301 (void)mpu6050_deinit(&gs_handle);
302
303 return 1;
304 }
305
306 /* enable gyro z */
308 if (res != 0)
309 {
310 mpu6050_interface_debug_print("mpu6050: set standby mode failed.\n");
311 (void)mpu6050_deinit(&gs_handle);
312
313 return 1;
314 }
315
316 /* disable gyroscope x test */
318 if (res != 0)
319 {
320 mpu6050_interface_debug_print("mpu6050: set gyroscope test failed.\n");
321 (void)mpu6050_deinit(&gs_handle);
322
323 return 1;
324 }
325
326 /* disable gyroscope y test */
328 if (res != 0)
329 {
330 mpu6050_interface_debug_print("mpu6050: set gyroscope test failed.\n");
331 (void)mpu6050_deinit(&gs_handle);
332
333 return 1;
334 }
335
336 /* disable gyroscope z test */
338 if (res != 0)
339 {
340 mpu6050_interface_debug_print("mpu6050: set gyroscope test failed.\n");
341 (void)mpu6050_deinit(&gs_handle);
342
343 return 1;
344 }
345
346 /* disable accelerometer x test */
348 if (res != 0)
349 {
350 mpu6050_interface_debug_print("mpu6050: set accelerometer test failed.\n");
351 (void)mpu6050_deinit(&gs_handle);
352
353 return 1;
354 }
355
356 /* disable accelerometer y test */
358 if (res != 0)
359 {
360 mpu6050_interface_debug_print("mpu6050: set accelerometer test failed.\n");
361 (void)mpu6050_deinit(&gs_handle);
362
363 return 1;
364 }
365
366 /* disable accelerometer z test */
368 if (res != 0)
369 {
370 mpu6050_interface_debug_print("mpu6050: set accelerometer test failed.\n");
371 (void)mpu6050_deinit(&gs_handle);
372
373 return 1;
374 }
375
376 /* disable temp fifo */
378 if (res != 0)
379 {
380 mpu6050_interface_debug_print("mpu6050: set fifo enable failed.\n");
381 (void)mpu6050_deinit(&gs_handle);
382
383 return 1;
384 }
385
386 /* disable xg fifo */
388 if (res != 0)
389 {
390 mpu6050_interface_debug_print("mpu6050: set fifo enable failed.\n");
391 (void)mpu6050_deinit(&gs_handle);
392
393 return 1;
394 }
395
396 /* disable yg fifo */
398 if (res != 0)
399 {
400 mpu6050_interface_debug_print("mpu6050: set fifo enable failed.\n");
401 (void)mpu6050_deinit(&gs_handle);
402
403 return 1;
404 }
405
406 /* disable zg fifo */
408 if (res != 0)
409 {
410 mpu6050_interface_debug_print("mpu6050: set fifo enable failed.\n");
411 (void)mpu6050_deinit(&gs_handle);
412
413 return 1;
414 }
415
416 /* disable accel fifo */
418 if (res != 0)
419 {
420 mpu6050_interface_debug_print("mpu6050: set fifo enable failed.\n");
421 (void)mpu6050_deinit(&gs_handle);
422
423 return 1;
424 }
425
426 /* enable fifo */
427 res = mpu6050_set_fifo(&gs_handle, MPU6050_BOOL_TRUE);
428 if (res != 0)
429 {
430 mpu6050_interface_debug_print("mpu6050: set fifo failed.\n");
431 (void)mpu6050_deinit(&gs_handle);
432
433 return 1;
434 }
435
436 /* set interrupt level low */
438 if (res != 0)
439 {
440 mpu6050_interface_debug_print("mpu6050: set interrupt level failed.\n");
441 (void)mpu6050_deinit(&gs_handle);
442
443 return 1;
444 }
445
446 /* push pull */
448 if (res != 0)
449 {
450 mpu6050_interface_debug_print("mpu6050: set interrupt pin type failed.\n");
451 (void)mpu6050_deinit(&gs_handle);
452
453 return 1;
454 }
455
456 /* disable motion */
458 if (res != 0)
459 {
460 mpu6050_interface_debug_print("mpu6050: set interrupt failed.\n");
461 (void)mpu6050_deinit(&gs_handle);
462
463 return 1;
464 }
465
466 /* enable fifo overflow */
468 if (res != 0)
469 {
470 mpu6050_interface_debug_print("mpu6050: set interrupt failed.\n");
471 (void)mpu6050_deinit(&gs_handle);
472
473 return 1;
474 }
475
476 /* disable dmp interrupt */
478 if (res != 0)
479 {
480 mpu6050_interface_debug_print("mpu6050: set interrupt failed.\n");
481 (void)mpu6050_deinit(&gs_handle);
482
483 return 1;
484 }
485
486 /* disable i2c master */
488 if (res != 0)
489 {
490 mpu6050_interface_debug_print("mpu6050: set interrupt failed.\n");
491 (void)mpu6050_deinit(&gs_handle);
492
493 return 1;
494 }
495
496 /* disable data ready */
498 if (res != 0)
499 {
500 mpu6050_interface_debug_print("mpu6050: set interrupt failed.\n");
501 (void)mpu6050_deinit(&gs_handle);
502
503 return 1;
504 }
505
506 /* enable latch */
508 if (res != 0)
509 {
510 mpu6050_interface_debug_print("mpu6050: set interrupt latch failed.\n");
511 (void)mpu6050_deinit(&gs_handle);
512
513 return 1;
514 }
515
516 /* enable interrupt read clear */
518 if (res != 0)
519 {
520 mpu6050_interface_debug_print("mpu6050: set interrupt read clear failed.\n");
521 (void)mpu6050_deinit(&gs_handle);
522
523 return 1;
524 }
525
526 /* disable sync input */
528 if (res != 0)
529 {
530 mpu6050_interface_debug_print("mpu6050: set extern sync failed.\n");
531 (void)mpu6050_deinit(&gs_handle);
532
533 return 1;
534 }
535
536 /* disable fsync interrupt */
538 if (res != 0)
539 {
540 mpu6050_interface_debug_print("mpu6050: set fsync interrupt failed.\n");
541 (void)mpu6050_deinit(&gs_handle);
542
543 return 1;
544 }
545
546 /* fsync interrupt level low */
548 if (res != 0)
549 {
550 mpu6050_interface_debug_print("mpu6050: set fsync interrupt level failed.\n");
551 (void)mpu6050_deinit(&gs_handle);
552
553 return 1;
554 }
555
556 /* disable iic master */
558 if (res != 0)
559 {
560 mpu6050_interface_debug_print("mpu6050: set iic master failed.\n");
561 (void)mpu6050_deinit(&gs_handle);
562
563 return 1;
564 }
565
566 /* disable iic bypass */
568 if (res != 0)
569 {
570 mpu6050_interface_debug_print("mpu6050: set iic bypass failed.\n");
571 (void)mpu6050_deinit(&gs_handle);
572
573 return 1;
574 }
575
576 /* load dmp firmware */
577 mpu6050_interface_debug_print("mpu6050: load dmp firmware.\n");
578
579 /* dmp load firmware */
580 res = mpu6050_dmp_load_firmware(&gs_handle);
581 if (res != 0)
582 {
583 mpu6050_interface_debug_print("mpu6050: dmp load firmware failed.\n");
584 (void)mpu6050_deinit(&gs_handle);
585
586 return 1;
587 }
588
589 /* load dmp firmware successful */
590 mpu6050_interface_debug_print("mpu6050: load dmp firmware successful .\n");
591
592 /* mpu6050_dmp_set_pedometer_walk_time/mpu6050_dmp_get_pedometer_walk_time test */
593 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_pedometer_walk_time/mpu6050_dmp_get_pedometer_walk_time test.\n");
594
595 ms = 200;
596 res = mpu6050_dmp_set_pedometer_walk_time(&gs_handle, ms);
597 if (res != 0)
598 {
599 mpu6050_interface_debug_print("mpu6050: dmp set pedometer walk time failed.\n");
600 (void)mpu6050_deinit(&gs_handle);
601
602 return 1;
603 }
604 mpu6050_interface_debug_print("mpu6050: dmp set pedometer walk time %d ms.\n", ms);
605 res = mpu6050_dmp_get_pedometer_walk_time(&gs_handle, &ms_check);
606 if (res != 0)
607 {
608 mpu6050_interface_debug_print("mpu6050: dmp get pedometer walk time failed.\n");
609 (void)mpu6050_deinit(&gs_handle);
610
611 return 1;
612 }
613 mpu6050_interface_debug_print("mpu6050: check pedometer walk time %s.\n", ms_check == ms ? "ok" : "error");
614
615 /* mpu6050_dmp_set_pedometer_step_count/mpu6050_dmp_get_pedometer_step_count test */
616 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_pedometer_step_count/mpu6050_dmp_get_pedometer_step_count test.\n");
617
618 cnt = rand() % 1000;
619 res = mpu6050_dmp_set_pedometer_step_count(&gs_handle, cnt);
620 if (res != 0)
621 {
622 mpu6050_interface_debug_print("mpu6050: dmp set pedometer step count failed.\n");
623 (void)mpu6050_deinit(&gs_handle);
624
625 return 1;
626 }
627 mpu6050_interface_debug_print("mpu6050: dmp set pedometer step count %d.\n", cnt);
628 res = mpu6050_dmp_get_pedometer_step_count(&gs_handle, &cnt_check);
629 if (res != 0)
630 {
631 mpu6050_interface_debug_print("mpu6050: dmp get pedometer step count failed.\n");
632 (void)mpu6050_deinit(&gs_handle);
633
634 return 1;
635 }
636 mpu6050_interface_debug_print("mpu6050: check pedometer step count %s.\n", cnt_check == cnt ? "ok" : "error");
637
638 /* mpu6050_dmp_set_shake_reject_timeout/mpu6050_dmp_get_shake_reject_timeout test */
639 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_shake_reject_timeout/mpu6050_dmp_get_shake_reject_timeout test.\n");
640
641 m = 10;
642 res = mpu6050_dmp_set_shake_reject_timeout(&gs_handle, m);
643 if (res != 0)
644 {
645 mpu6050_interface_debug_print("mpu6050: dmp set shake reject timeout failed.\n");
646 (void)mpu6050_deinit(&gs_handle);
647
648 return 1;
649 }
650 mpu6050_interface_debug_print("mpu6050: dmp set shake reject timeout %d ms.\n", m);
651 res = mpu6050_dmp_get_shake_reject_timeout(&gs_handle, &m_check);
652 if (res != 0)
653 {
654 mpu6050_interface_debug_print("mpu6050: dmp get shake reject timeout failed.\n");
655 (void)mpu6050_deinit(&gs_handle);
656
657 return 1;
658 }
659 mpu6050_interface_debug_print("mpu6050: check shake reject timeout %s.\n", m_check == m ? "ok" : "error");
660
661 /* mpu6050_dmp_set_shake_reject_time/mpu6050_dmp_get_shake_reject_time test */
662 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_shake_reject_time/mpu6050_dmp_get_shake_reject_time test.\n");
663
664 m = 40;
665 res = mpu6050_dmp_set_shake_reject_time(&gs_handle, m);
666 if (res != 0)
667 {
668 mpu6050_interface_debug_print("mpu6050: dmp set shake reject time failed.\n");
669 (void)mpu6050_deinit(&gs_handle);
670
671 return 1;
672 }
673 mpu6050_interface_debug_print("mpu6050: dmp set shake reject time %d ms.\n", m);
674 res = mpu6050_dmp_get_shake_reject_time(&gs_handle, &m_check);
675 if (res != 0)
676 {
677 mpu6050_interface_debug_print("mpu6050: dmp get shake reject time failed.\n");
678 (void)mpu6050_deinit(&gs_handle);
679
680 return 1;
681 }
682 mpu6050_interface_debug_print("mpu6050: check shake reject time %s.\n", m_check == m ? "ok" : "error");
683
684 /* mpu6050_dmp_set_shake_reject_thresh/mpu6050_dmp_get_shake_reject_thresh test */
685 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_shake_reject_thresh/mpu6050_dmp_get_shake_reject_thresh test.\n");
686
687 m = 200;
688 res = mpu6050_dmp_set_shake_reject_thresh(&gs_handle, m);
689 if (res != 0)
690 {
691 mpu6050_interface_debug_print("mpu6050: dmp set shake reject thresh failed.\n");
692 (void)mpu6050_deinit(&gs_handle);
693
694 return 1;
695 }
696 mpu6050_interface_debug_print("mpu6050: set shake reject thresh %d dps.\n", m);
697 res = mpu6050_dmp_get_shake_reject_thresh(&gs_handle, &m_check);
698 if (res != 0)
699 {
700 mpu6050_interface_debug_print("mpu6050: dmp get shake reject thresh failed.\n");
701 (void)mpu6050_deinit(&gs_handle);
702
703 return 1;
704 }
705 mpu6050_interface_debug_print("mpu6050: check shake reject thresh %s.\n", m_check == m ? "ok" : "error");
706
707 /* mpu6050_dmp_set_tap_time_multi/mpu6050_dmp_get_tap_time_multi test */
708 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_tap_time_multi/mpu6050_dmp_get_tap_time_multi test.\n");
709
710 m = 500;
711 res = mpu6050_dmp_set_tap_time_multi(&gs_handle, m);
712 if (res != 0)
713 {
714 mpu6050_interface_debug_print("mpu6050: dmp set tap time multi failed.\n");
715 (void)mpu6050_deinit(&gs_handle);
716
717 return 1;
718 }
719 mpu6050_interface_debug_print("mpu6050: dmp set tap time multi %d ms.\n", m);
720 res = mpu6050_dmp_get_tap_time_multi(&gs_handle, &m_check);
721 if (res != 0)
722 {
723 mpu6050_interface_debug_print("mpu6050: dmp get tap time multi failed.\n");
724 (void)mpu6050_deinit(&gs_handle);
725
726 return 1;
727 }
728 mpu6050_interface_debug_print("mpu6050: check tap time multi %s.\n", m_check == m ? "ok" : "error");
729
730 /* mpu6050_dmp_set_tap_time/mpu6050_dmp_get_tap_time test */
731 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_tap_time/mpu6050_dmp_get_tap_time test.\n");
732
733 m = 100;
734 res = mpu6050_dmp_set_tap_time(&gs_handle, m);
735 if (res != 0)
736 {
737 mpu6050_interface_debug_print("mpu6050: dmp set tap time failed.\n");
738 (void)mpu6050_deinit(&gs_handle);
739
740 return 1;
741 }
742 mpu6050_interface_debug_print("mpu6050: dmp set tap time %d ms.\n", m);
743 res = mpu6050_dmp_get_tap_time(&gs_handle, &m_check);
744 if (res != 0)
745 {
746 mpu6050_interface_debug_print("mpu6050: dmp get tap time failed.\n");
747 (void)mpu6050_deinit(&gs_handle);
748
749 return 1;
750 }
751 mpu6050_interface_debug_print("mpu6050: check tap time %s.\n", m_check == m ? "ok" : "error");
752
753 /* mpu6050_dmp_set_min_tap_count/mpu6050_dmp_get_min_tap_count test */
754 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_min_tap_count/mpu6050_dmp_get_min_tap_count test.\n");
755
756 c = 1;
757 res = mpu6050_dmp_set_min_tap_count(&gs_handle, c);
758 if (res != 0)
759 {
760 mpu6050_interface_debug_print("mpu6050: dmp set min tap count failed.\n");
761 (void)mpu6050_deinit(&gs_handle);
762
763 return 1;
764 }
765 mpu6050_interface_debug_print("mpu6050: dmp set min tap count %d.\n", c);
766 res = mpu6050_dmp_get_min_tap_count(&gs_handle, &c_check);
767 if (res != 0)
768 {
769 mpu6050_interface_debug_print("mpu6050: dmp get min tap count failed.\n");
770 (void)mpu6050_deinit(&gs_handle);
771
772 return 1;
773 }
774 mpu6050_interface_debug_print("mpu6050: check min tap count %s.\n", c_check == c ? "ok" : "error");
775
776 /* mpu6050_dmp_set_tap_axes/mpu6050_dmp_get_tap_axes test */
777 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_tap_axes/mpu6050_dmp_get_tap_axes test.\n");
778
779 /* disable axis x */
781 if (res != 0)
782 {
783 mpu6050_interface_debug_print("mpu6050: dmp set tap axes failed.\n");
784 (void)mpu6050_deinit(&gs_handle);
785
786 return 1;
787 }
788 mpu6050_interface_debug_print("mpu6050: disable tap axes x.\n");
789 res = mpu6050_dmp_get_tap_axes(&gs_handle, MPU6050_AXIS_X, &enable);
790 if (res != 0)
791 {
792 mpu6050_interface_debug_print("mpu6050: dmp get tap axes failed.\n");
793 (void)mpu6050_deinit(&gs_handle);
794
795 return 1;
796 }
797 mpu6050_interface_debug_print("mpu6050: check tap axes %s.\n", enable == MPU6050_BOOL_FALSE ? "ok" : "error");
798
799 /* enable axis x */
801 if (res != 0)
802 {
803 mpu6050_interface_debug_print("mpu6050: dmp set tap axes failed.\n");
804 (void)mpu6050_deinit(&gs_handle);
805
806 return 1;
807 }
808 mpu6050_interface_debug_print("mpu6050: enable tap axes x.\n");
809 res = mpu6050_dmp_get_tap_axes(&gs_handle, MPU6050_AXIS_X, &enable);
810 if (res != 0)
811 {
812 mpu6050_interface_debug_print("mpu6050: dmp get tap axes failed.\n");
813 (void)mpu6050_deinit(&gs_handle);
814
815 return 1;
816 }
817 mpu6050_interface_debug_print("mpu6050: check tap axes %s.\n", enable == MPU6050_BOOL_TRUE ? "ok" : "error");
818
819 /* disable axis y */
821 if (res != 0)
822 {
823 mpu6050_interface_debug_print("mpu6050: dmp set tap axes failed.\n");
824 (void)mpu6050_deinit(&gs_handle);
825
826 return 1;
827 }
828 mpu6050_interface_debug_print("mpu6050: disable tap axes y.\n");
829 res = mpu6050_dmp_get_tap_axes(&gs_handle, MPU6050_AXIS_Y, &enable);
830 if (res != 0)
831 {
832 mpu6050_interface_debug_print("mpu6050: dmp get tap axes failed.\n");
833 (void)mpu6050_deinit(&gs_handle);
834
835 return 1;
836 }
837 mpu6050_interface_debug_print("mpu6050: check tap axes %s.\n", enable == MPU6050_BOOL_FALSE ? "ok" : "error");
838
839 /* enable axis y */
841 if (res != 0)
842 {
843 mpu6050_interface_debug_print("mpu6050: dmp set tap axes failed.\n");
844 (void)mpu6050_deinit(&gs_handle);
845
846 return 1;
847 }
848 mpu6050_interface_debug_print("mpu6050: enable tap axes y.\n");
849 res = mpu6050_dmp_get_tap_axes(&gs_handle, MPU6050_AXIS_Y, &enable);
850 if (res != 0)
851 {
852 mpu6050_interface_debug_print("mpu6050: dmp get tap axes failed.\n");
853 (void)mpu6050_deinit(&gs_handle);
854
855 return 1;
856 }
857 mpu6050_interface_debug_print("mpu6050: check tap axes %s.\n", enable == MPU6050_BOOL_TRUE ? "ok" : "error");
858
859 /* disable axis z */
861 if (res != 0)
862 {
863 mpu6050_interface_debug_print("mpu6050: dmp set tap axes failed.\n");
864 (void)mpu6050_deinit(&gs_handle);
865
866 return 1;
867 }
868 mpu6050_interface_debug_print("mpu6050: disable tap axes z.\n");
869 res = mpu6050_dmp_get_tap_axes(&gs_handle, MPU6050_AXIS_Z, &enable);
870 if (res != 0)
871 {
872 mpu6050_interface_debug_print("mpu6050: dmp get tap axes failed.\n");
873 (void)mpu6050_deinit(&gs_handle);
874
875 return 1;
876 }
877 mpu6050_interface_debug_print("mpu6050: check tap axes %s.\n", enable == MPU6050_BOOL_FALSE ? "ok" : "error");
878
879 /* enable axis z */
881 if (res != 0)
882 {
883 mpu6050_interface_debug_print("mpu6050: dmp set tap axes failed.\n");
884 (void)mpu6050_deinit(&gs_handle);
885
886 return 1;
887 }
888 mpu6050_interface_debug_print("mpu6050: enable tap axes z.\n");
889 res = mpu6050_dmp_get_tap_axes(&gs_handle, MPU6050_AXIS_Z, &enable);
890 if (res != 0)
891 {
892 mpu6050_interface_debug_print("mpu6050: dmp get tap axes failed.\n");
893 (void)mpu6050_deinit(&gs_handle);
894
895 return 1;
896 }
897 mpu6050_interface_debug_print("mpu6050: check tap axes %s.\n", enable == MPU6050_BOOL_TRUE ? "ok" : "error");
898
899 /* mpu6050_dmp_set_tap_thresh/mpu6050_dmp_get_tap_thresh test */
900 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_tap_thresh/mpu6050_dmp_get_tap_thresh test.\n");
901
902 /* set tap thresh x */
903 m = 250;
904 res = mpu6050_dmp_set_tap_thresh(&gs_handle, MPU6050_AXIS_X, m);
905 if (res != 0)
906 {
907 mpu6050_interface_debug_print("mpu6050: dmp set tap thresh failed.\n");
908 (void)mpu6050_deinit(&gs_handle);
909
910 return 1;
911 }
912 mpu6050_interface_debug_print("mpu6050: dmp set tap thresh x %d mg/ms.\n", m);
913 res = mpu6050_dmp_get_tap_thresh(&gs_handle, MPU6050_AXIS_X, &m_check);
914 if (res != 0)
915 {
916 mpu6050_interface_debug_print("mpu6050: dmp get tap thresh failed.\n");
917 (void)mpu6050_deinit(&gs_handle);
918
919 return 1;
920 }
921 mpu6050_interface_debug_print("mpu6050: check tap thresh %s.\n", m_check == m ? "ok" : "error");
922
923 /* set tap thresh y */
924 m = 250;
925 res = mpu6050_dmp_set_tap_thresh(&gs_handle, MPU6050_AXIS_Y, m);
926 if (res != 0)
927 {
928 mpu6050_interface_debug_print("mpu6050: dmp set tap thresh failed.\n");
929 (void)mpu6050_deinit(&gs_handle);
930
931 return 1;
932 }
933 mpu6050_interface_debug_print("mpu6050: dmp set tap thresh y %d mg/ms.\n", m);
934 res = mpu6050_dmp_get_tap_thresh(&gs_handle, MPU6050_AXIS_Y, &m_check);
935 if (res != 0)
936 {
937 mpu6050_interface_debug_print("mpu6050: dmp get tap thresh failed.\n");
938 (void)mpu6050_deinit(&gs_handle);
939
940 return 1;
941 }
942 mpu6050_interface_debug_print("mpu6050: check tap thresh %s.\n", m_check == m ? "ok" : "error");
943
944 /* set tap thresh z */
945 m = 250;
946 res = mpu6050_dmp_set_tap_thresh(&gs_handle, MPU6050_AXIS_Z, m);
947 if (res != 0)
948 {
949 mpu6050_interface_debug_print("mpu6050: dmp set tap thresh failed.\n");
950 (void)mpu6050_deinit(&gs_handle);
951
952 return 1;
953 }
954 mpu6050_interface_debug_print("mpu6050: dmp set tap thresh z %d mg/ms.\n", m);
955 res = mpu6050_dmp_get_tap_thresh(&gs_handle, MPU6050_AXIS_Z, &m_check);
956 if (res != 0)
957 {
958 mpu6050_interface_debug_print("mpu6050: dmp get tap thresh failed.\n");
959 (void)mpu6050_deinit(&gs_handle);
960
961 return 1;
962 }
963 mpu6050_interface_debug_print("mpu6050: check tap thresh %s.\n", m_check == m ? "ok" : "error");
964
965 /* mpu6050_dmp_set_fifo_rate/mpu6050_dmp_get_fifo_rate test */
966 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_fifo_rate/mpu6050_dmp_get_fifo_rate test.\n");
967
968 m = 200;
969 res = mpu6050_dmp_set_fifo_rate(&gs_handle, m);
970 if (res != 0)
971 {
972 mpu6050_interface_debug_print("mpu6050: dmp set fifo rate failed.\n");
973 (void)mpu6050_deinit(&gs_handle);
974
975 return 1;
976 }
977 mpu6050_interface_debug_print("mpu6050: dmp set fifo rate %dHz.\n", m);
978 res = mpu6050_dmp_get_fifo_rate(&gs_handle, &m_check);
979 if (res != 0)
980 {
981 mpu6050_interface_debug_print("mpu6050: dmp get fifo rate failed.\n");
982 (void)mpu6050_deinit(&gs_handle);
983
984 return 1;
985 }
986 mpu6050_interface_debug_print("mpu6050: check fifo rate %s.\n", m_check == m ? "ok" : "error");
987
988 /* mpu6050_dmp_set_gyro_calibrate test */
989 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_gyro_calibrate test.\n");
990
991 /* enable gyro calibrate */
993 if (res != 0)
994 {
995 mpu6050_interface_debug_print("mpu6050: dmp set gyro calibrate failed.\n");
996 (void)mpu6050_deinit(&gs_handle);
997
998 return 1;
999 }
1000 mpu6050_interface_debug_print("mpu6050: enable gyro calibrate.\n");
1001
1002 /* disable gyro calibrate */
1004 if (res != 0)
1005 {
1006 mpu6050_interface_debug_print("mpu6050: dmp set gyro calibrate failed.\n");
1007 (void)mpu6050_deinit(&gs_handle);
1008
1009 return 1;
1010 }
1011 mpu6050_interface_debug_print("mpu6050: disable gyro calibrate.\n");
1012
1013 /* mpu6050_dmp_set_3x_quaternion test */
1014 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_3x_quaternion test.\n");
1015
1016 /* enable 3x quaternion */
1018 if (res != 0)
1019 {
1020 mpu6050_interface_debug_print("mpu6050: dmp set 3x quaternion failed.\n");
1021 (void)mpu6050_deinit(&gs_handle);
1022
1023 return 1;
1024 }
1025 mpu6050_interface_debug_print("mpu6050: enable 3x quaternion.\n");
1026
1027 /* disable 3x quaternion */
1029 if (res != 0)
1030 {
1031 mpu6050_interface_debug_print("mpu6050: dmp set 3x quaternion failed.\n");
1032 (void)mpu6050_deinit(&gs_handle);
1033
1034 return 1;
1035 }
1036 mpu6050_interface_debug_print("mpu6050: disable 3x quaternion.\n");
1037
1038 /* mpu6050_dmp_set_6x_quaternion test */
1039 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_6x_quaternion test.\n");
1040
1041 /* enable 6x quaternion */
1043 if (res != 0)
1044 {
1045 mpu6050_interface_debug_print("mpu6050: dmp set 6x quaternion failed.\n");
1046 (void)mpu6050_deinit(&gs_handle);
1047
1048 return 1;
1049 }
1050 mpu6050_interface_debug_print("mpu6050: enable 6x quaternion.\n");
1051
1052 /* disable 6x quaternion */
1054 if (res != 0)
1055 {
1056 mpu6050_interface_debug_print("mpu6050: dmp set 6x quaternion failed.\n");
1057 (void)mpu6050_deinit(&gs_handle);
1058
1059 return 1;
1060 }
1061 mpu6050_interface_debug_print("mpu6050: disable 6x quaternion.\n");
1062
1063 /* mpu6050_dmp_set_interrupt_mode test */
1064 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_interrupt_mode test.\n");
1065
1066 /* gesture mode */
1068 if (res != 0)
1069 {
1070 mpu6050_interface_debug_print("mpu6050: dmp set interrupt mode failed.\n");
1071 (void)mpu6050_deinit(&gs_handle);
1072
1073 return 1;
1074 }
1075 mpu6050_interface_debug_print("mpu6050: dmp set gesture interrupt mode.\n");
1076
1077 /* continuous mode */
1079 if (res != 0)
1080 {
1081 mpu6050_interface_debug_print("mpu6050: dmp set interrupt mode failed.\n");
1082 (void)mpu6050_deinit(&gs_handle);
1083
1084 return 1;
1085 }
1086 mpu6050_interface_debug_print("mpu6050: dmp set gesture continuous mode.\n");
1087
1088 /* mpu6050_dmp_set_orientation test */
1089 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_orientation test.\n");
1090
1091 /* set the dmp orientation */
1092 res = mpu6050_dmp_set_orientation(&gs_handle, gyro_orientation);
1093 if (res != 0)
1094 {
1095 mpu6050_interface_debug_print("mpu6050: dmp set orientation failed.\n");
1096 (void)mpu6050_deinit(&gs_handle);
1097
1098 return 1;
1099 }
1100 mpu6050_interface_debug_print("mpu6050: set the dmp orientation.\n");
1101
1102 /* mpu6050_dmp_set_feature test */
1103 mpu6050_interface_debug_print("mpu6050: mpu6050_dmp_set_feature test.\n");
1104
1105 /* enable feature */
1109 if (res != 0)
1110 {
1111 mpu6050_interface_debug_print("mpu6050: dmp set feature failed.\n");
1112 (void)mpu6050_deinit(&gs_handle);
1113
1114 return 1;
1115 }
1116 mpu6050_interface_debug_print("mpu6050: enable feature 6x quat.\n");
1117 mpu6050_interface_debug_print("mpu6050: enable feature tap.\n");
1118 mpu6050_interface_debug_print("mpu6050: enable feature pedometer.\n");
1119 mpu6050_interface_debug_print("mpu6050: enable feature orient.\n");
1120 mpu6050_interface_debug_print("mpu6050: enable feature send raw accel.\n");
1121 mpu6050_interface_debug_print("mpu6050: enable feature send cal gyro.\n");
1122 mpu6050_interface_debug_print("mpu6050: enable feature gyro cal.\n");
1123
1124 /* dmp set tap callback */
1126 if (res != 0)
1127 {
1128 mpu6050_interface_debug_print("mpu6050: dmp set tap callback failed.\n");
1129 (void)mpu6050_deinit(&gs_handle);
1130
1131 return 1;
1132 }
1133
1134 /* dmp set orient callback */
1136 if (res != 0)
1137 {
1138 mpu6050_interface_debug_print("mpu6050: dmp set orient callback failed.\n");
1139 (void)mpu6050_deinit(&gs_handle);
1140
1141 return 1;
1142 }
1143
1144 /* dmp gyro accel raw offset convert */
1145 res = mpu6050_dmp_gyro_accel_raw_offset_convert(&gs_handle, gyro_offset_raw, accel_offset_raw,
1146 gyro_offset, accel_offset);
1147 if (res != 0)
1148 {
1149 mpu6050_interface_debug_print("mpu6050: dmp gyro accel raw offset convert failed.\n");
1150 (void)mpu6050_deinit(&gs_handle);
1151
1152 return 1;
1153 }
1154
1155 /* dmp set accel bias */
1156 res = mpu6050_dmp_set_accel_bias(&gs_handle, accel_offset);
1157 if (res != 0)
1158 {
1159 mpu6050_interface_debug_print("mpu6050: dmp set accel bias failed.\n");
1160 (void)mpu6050_deinit(&gs_handle);
1161
1162 return 1;
1163 }
1164
1165 /* dmp set gyro bias */
1166 res = mpu6050_dmp_set_gyro_bias(&gs_handle, gyro_offset);
1167 if (res != 0)
1168 {
1169 mpu6050_interface_debug_print("mpu6050: dmp set gyro bias failed.\n");
1170 (void)mpu6050_deinit(&gs_handle);
1171
1172 return 1;
1173 }
1174
1175 /* enable the dmp */
1176 res = mpu6050_dmp_set_enable(&gs_handle, MPU6050_BOOL_TRUE);
1177 if (res != 0)
1178 {
1179 mpu6050_interface_debug_print("mpu6050: dmp set enable failed.\n");
1180 (void)mpu6050_deinit(&gs_handle);
1181
1182 return 1;
1183 }
1184
1185 /* force fifo reset */
1186 res = mpu6050_force_fifo_reset(&gs_handle);
1187 if (res != 0)
1188 {
1189 mpu6050_interface_debug_print("mpu6050: force fifo reset failed.\n");
1190 (void)mpu6050_deinit(&gs_handle);
1191
1192 return 1;
1193 }
1194
1195 /* delay 100 ms */
1197
1198 for (i = 0; i < times; i++)
1199 {
1200 uint16_t l;
1201
1202 /* read the data */
1203 l = 128;
1204 res = mpu6050_dmp_read(&gs_handle,
1205 gs_accel_raw, gs_accel_g,
1206 gs_gyro_raw, gs_gyro_dps,
1207 gs_quat,
1208 gs_pitch, gs_roll, gs_yaw,
1209 &l
1210 );
1211 if (res == 0)
1212 {
1213 /* output data */
1214 mpu6050_interface_debug_print("mpu6050: fifo %d.\n", l);
1215 mpu6050_interface_debug_print("mpu6050: pitch[0] is %0.2fdeg.\n", gs_pitch[0]);
1216 mpu6050_interface_debug_print("mpu6050: roll[0] is %0.2fdeg.\n", gs_roll[0]);
1217 mpu6050_interface_debug_print("mpu6050: yaw[0] is %0.2fdeg.\n", gs_yaw[0]);
1218 mpu6050_interface_debug_print("mpu6050: acc x[0] is %0.2fg.\n", gs_accel_g[0][0]);
1219 mpu6050_interface_debug_print("mpu6050: acc y[0] is %0.2fg.\n", gs_accel_g[0][1]);
1220 mpu6050_interface_debug_print("mpu6050: acc z[0] is %0.2fg.\n", gs_accel_g[0][2]);
1221 mpu6050_interface_debug_print("mpu6050: gyro x[0] is %0.2fdps.\n", gs_gyro_dps[0][0]);
1222 mpu6050_interface_debug_print("mpu6050: gyro y[0] is %0.2fdps.\n", gs_gyro_dps[0][1]);
1223 mpu6050_interface_debug_print("mpu6050: gyro z[0] is %0.2fdps.\n", gs_gyro_dps[0][2]);
1224 }
1226 }
1227
1228 /* finish dmp read test */
1229 mpu6050_interface_debug_print("mpu6050: finish dmp read test.\n");
1230 (void)mpu6050_deinit(&gs_handle);
1231
1232 return 0;
1233}
driver mpu6050 dmp read test header file
struct mpu6050_info_s mpu6050_info_t
mpu6050 information structure definition
uint8_t mpu6050_set_wake_up_frequency(mpu6050_handle_t *handle, mpu6050_wake_up_frequency_t frequency)
set the wake up frequency
uint8_t mpu6050_init(mpu6050_handle_t *handle)
initialize the chip
uint8_t mpu6050_set_accelerometer_range(mpu6050_handle_t *handle, mpu6050_accelerometer_range_t range)
set the accelerometer range
mpu6050_address_t
mpu6050 address enumeration definition
uint8_t mpu6050_set_standby_mode(mpu6050_handle_t *handle, mpu6050_source_t source, mpu6050_bool_t enable)
set source into standby mode
uint8_t mpu6050_self_test(mpu6050_handle_t *handle, int32_t gyro_offset_raw[3], int32_t accel_offset_raw[3])
run the self test
uint8_t mpu6050_set_sample_rate_divider(mpu6050_handle_t *handle, uint8_t d)
set the sample rate divider
uint8_t mpu6050_set_gyroscope_range(mpu6050_handle_t *handle, mpu6050_gyroscope_range_t range)
set the gyroscope range
uint8_t mpu6050_set_addr_pin(mpu6050_handle_t *handle, mpu6050_address_t addr_pin)
set the chip address pin
uint8_t mpu6050_set_interrupt_read_clear(mpu6050_handle_t *handle, mpu6050_bool_t enable)
enable or disable the interrupt reading clear
uint8_t mpu6050_set_fifo_enable(mpu6050_handle_t *handle, mpu6050_fifo_t fifo, mpu6050_bool_t enable)
enable or disable the fifo function
uint8_t mpu6050_set_interrupt(mpu6050_handle_t *handle, mpu6050_interrupt_t type, mpu6050_bool_t enable)
enable or disable the interrupt
uint8_t mpu6050_set_iic_bypass(mpu6050_handle_t *handle, mpu6050_bool_t enable)
enable or disable the iic bypass
uint8_t mpu6050_info(mpu6050_info_t *info)
get the chip's information
uint8_t mpu6050_set_gyroscope_test(mpu6050_handle_t *handle, mpu6050_axis_t axis, mpu6050_bool_t enable)
set the gyroscope test
uint8_t mpu6050_set_cycle_wake_up(mpu6050_handle_t *handle, mpu6050_bool_t enable)
enable or disable the cycle wake up mode
uint8_t mpu6050_set_interrupt_pin_type(mpu6050_handle_t *handle, mpu6050_pin_type_t type)
set the interrupt pin type
uint8_t mpu6050_irq_handler(mpu6050_handle_t *handle)
irq handler
uint8_t mpu6050_set_iic_master(mpu6050_handle_t *handle, mpu6050_bool_t enable)
enable or disable the iic master mode
uint8_t mpu6050_force_fifo_reset(mpu6050_handle_t *handle)
force reset the fifo
uint8_t mpu6050_set_temperature_sensor(mpu6050_handle_t *handle, mpu6050_bool_t enable)
enable or disable the temperature sensor
uint8_t mpu6050_set_interrupt_latch(mpu6050_handle_t *handle, mpu6050_bool_t enable)
enable or disable the interrupt latch
uint8_t mpu6050_set_accelerometer_test(mpu6050_handle_t *handle, mpu6050_axis_t axis, mpu6050_bool_t enable)
set the accelerometer test
uint8_t mpu6050_set_extern_sync(mpu6050_handle_t *handle, mpu6050_extern_sync_t sync)
set the extern sync type
uint8_t mpu6050_set_sleep(mpu6050_handle_t *handle, mpu6050_bool_t enable)
enable or disable the sleep mode
struct mpu6050_handle_s mpu6050_handle_t
mpu6050 handle structure definition
mpu6050_bool_t
mpu6050 bool enumeration definition
uint8_t mpu6050_set_fifo(mpu6050_handle_t *handle, mpu6050_bool_t enable)
enable or disable fifo
uint8_t mpu6050_set_interrupt_level(mpu6050_handle_t *handle, mpu6050_pin_level_t level)
set the interrupt level
uint8_t mpu6050_set_clock_source(mpu6050_handle_t *handle, mpu6050_clock_source_t clock_source)
set the chip clock source
uint8_t mpu6050_set_fsync_interrupt(mpu6050_handle_t *handle, mpu6050_bool_t enable)
enable or disable the fsync interrupt
uint8_t mpu6050_set_low_pass_filter(mpu6050_handle_t *handle, mpu6050_low_pass_filter_t filter)
set the low pass filter
uint8_t mpu6050_deinit(mpu6050_handle_t *handle)
close the chip
uint8_t mpu6050_set_fsync_interrupt_level(mpu6050_handle_t *handle, mpu6050_pin_level_t level)
set the fsync interrupt level
@ MPU6050_PIN_TYPE_PUSH_PULL
@ MPU6050_WAKE_UP_FREQUENCY_1P25_HZ
@ MPU6050_GYROSCOPE_RANGE_2000DPS
@ MPU6050_EXTERN_SYNC_INPUT_DISABLED
@ MPU6050_SOURCE_ACC_Y
@ MPU6050_SOURCE_GYRO_Y
@ MPU6050_SOURCE_ACC_Z
@ MPU6050_SOURCE_ACC_X
@ MPU6050_SOURCE_GYRO_Z
@ MPU6050_SOURCE_GYRO_X
@ MPU6050_FIFO_XG
@ MPU6050_FIFO_ACCEL
@ MPU6050_FIFO_TEMP
@ MPU6050_FIFO_ZG
@ MPU6050_FIFO_YG
@ MPU6050_CLOCK_SOURCE_PLL_X_GYRO
@ MPU6050_PIN_LEVEL_LOW
@ MPU6050_INTERRUPT_DMP
@ MPU6050_INTERRUPT_I2C_MAST
@ MPU6050_INTERRUPT_DATA_READY
@ MPU6050_INTERRUPT_FIFO_OVERFLOW
@ MPU6050_INTERRUPT_MOTION
@ MPU6050_ACCELEROMETER_RANGE_2G
@ MPU6050_BOOL_TRUE
@ MPU6050_BOOL_FALSE
@ MPU6050_LOW_PASS_FILTER_3
@ MPU6050_AXIS_X
@ MPU6050_AXIS_Z
@ MPU6050_AXIS_Y
uint8_t mpu6050_dmp_set_tap_thresh(mpu6050_handle_t *handle, mpu6050_axis_t axis, uint16_t mg_ms)
dmp set the tap thresh
uint8_t mpu6050_dmp_set_gyro_bias(mpu6050_handle_t *handle, int32_t bias[3])
dmp set the gyro bias
uint8_t mpu6050_dmp_set_orientation(mpu6050_handle_t *handle, int8_t mat[9])
dmp set the orientation
uint8_t mpu6050_dmp_get_shake_reject_time(mpu6050_handle_t *handle, uint16_t *ms)
dmp get the shake reject time
uint8_t mpu6050_dmp_get_shake_reject_thresh(mpu6050_handle_t *handle, uint16_t *dps)
dmp get the shake reject thresh
uint8_t mpu6050_dmp_set_enable(mpu6050_handle_t *handle, mpu6050_bool_t enable)
enable or disable the dmp
uint8_t mpu6050_dmp_load_firmware(mpu6050_handle_t *handle)
load the dmp firmware
uint8_t mpu6050_dmp_set_tap_callback(mpu6050_handle_t *handle, void(*callback)(uint8_t count, uint8_t direction))
dmp set the tap callback
uint8_t mpu6050_dmp_set_orient_callback(mpu6050_handle_t *handle, void(*callback)(uint8_t orientation))
dmp set the orient callback
uint8_t mpu6050_dmp_set_shake_reject_timeout(mpu6050_handle_t *handle, uint16_t ms)
dmp set the shake reject timeout
uint8_t mpu6050_dmp_read(mpu6050_handle_t *handle, int16_t(*accel_raw)[3], float(*accel_g)[3], int16_t(*gyro_raw)[3], float(*gyro_dps)[3], int32_t(*quat)[4], float *pitch, float *roll, float *yaw, uint16_t *l)
dmp read the data
uint8_t mpu6050_dmp_set_tap_time_multi(mpu6050_handle_t *handle, uint16_t ms)
dmp set max time between taps to register as a multi tap
uint8_t mpu6050_dmp_set_accel_bias(mpu6050_handle_t *handle, int32_t bias[3])
dmp set the accel bias
uint8_t mpu6050_dmp_get_pedometer_step_count(mpu6050_handle_t *handle, uint32_t *count)
dmp get the pedometer step count
uint8_t mpu6050_dmp_set_pedometer_step_count(mpu6050_handle_t *handle, uint32_t count)
dmp set the pedometer step count
uint8_t mpu6050_dmp_get_tap_axes(mpu6050_handle_t *handle, mpu6050_axis_t axis, mpu6050_bool_t *enable)
dmp get the tap axes status
uint8_t mpu6050_dmp_set_feature(mpu6050_handle_t *handle, uint16_t mask)
dmp enable or disable the dmp feature
uint8_t mpu6050_dmp_gyro_accel_raw_offset_convert(mpu6050_handle_t *handle, int32_t gyro_offset_raw[3], int32_t accel_offset_raw[3], int32_t gyro_offset[3], int32_t accel_offset[3])
dmp gyro accel raw offset convert
uint8_t mpu6050_dmp_get_tap_thresh(mpu6050_handle_t *handle, mpu6050_axis_t axis, uint16_t *mg_ms)
dmp get the tap thresh
uint8_t mpu6050_dmp_set_6x_quaternion(mpu6050_handle_t *handle, mpu6050_bool_t enable)
dmp enable or disable generate 6 axis quaternions from dmp
uint8_t mpu6050_dmp_get_pedometer_walk_time(mpu6050_handle_t *handle, uint32_t *ms)
dmp get the pedometer walk time
uint8_t mpu6050_dmp_set_shake_reject_thresh(mpu6050_handle_t *handle, uint16_t dps)
dmp set the shake reject thresh
uint8_t mpu6050_dmp_get_tap_time(mpu6050_handle_t *handle, uint16_t *ms)
dmp get the tap time
uint8_t mpu6050_dmp_set_fifo_rate(mpu6050_handle_t *handle, uint16_t rate)
dmp set the fifo rate
uint8_t mpu6050_dmp_set_tap_axes(mpu6050_handle_t *handle, mpu6050_axis_t axis, mpu6050_bool_t enable)
dmp enable or disable the tap axes
uint8_t mpu6050_dmp_set_shake_reject_time(mpu6050_handle_t *handle, uint16_t ms)
dmp set the shake reject time
uint8_t mpu6050_dmp_get_fifo_rate(mpu6050_handle_t *handle, uint16_t *rate)
dmp get the fifo rate
uint8_t mpu6050_dmp_set_min_tap_count(mpu6050_handle_t *handle, uint8_t cnt)
dmp set the min tap count
uint8_t mpu6050_dmp_get_shake_reject_timeout(mpu6050_handle_t *handle, uint16_t *ms)
dmp get the shake reject timeout
uint8_t mpu6050_dmp_get_min_tap_count(mpu6050_handle_t *handle, uint8_t *cnt)
dmp get the min tap count
uint8_t mpu6050_dmp_get_tap_time_multi(mpu6050_handle_t *handle, uint16_t *ms)
dmp get max time between taps to register as a multi tap
uint8_t mpu6050_dmp_set_gyro_calibrate(mpu6050_handle_t *handle, mpu6050_bool_t enable)
dmp enable or disable gyro calibrate
uint8_t mpu6050_dmp_set_tap_time(mpu6050_handle_t *handle, uint16_t ms)
dmp set the tap time
uint8_t mpu6050_dmp_set_3x_quaternion(mpu6050_handle_t *handle, mpu6050_bool_t enable)
dmp enable or disable generate 3 axis quaternions from dmp
uint8_t mpu6050_dmp_set_interrupt_mode(mpu6050_handle_t *handle, mpu6050_dmp_interrupt_mode_t mode)
dmp set the interrupt mode
uint8_t mpu6050_dmp_set_pedometer_walk_time(mpu6050_handle_t *handle, uint32_t ms)
dmp set the pedometer walk time
@ MPU6050_DMP_FEATURE_PEDOMETER
@ MPU6050_DMP_FEATURE_TAP
@ MPU6050_DMP_FEATURE_ORIENT
@ MPU6050_DMP_FEATURE_6X_QUAT
@ MPU6050_DMP_FEATURE_GYRO_CAL
@ MPU6050_DMP_FEATURE_SEND_RAW_ACCEL
@ MPU6050_DMP_FEATURE_SEND_CAL_GYRO
@ MPU6050_DMP_INTERRUPT_MODE_CONTINUOUS
@ MPU6050_DMP_INTERRUPT_MODE_GESTURE
void mpu6050_interface_dmp_tap_callback(uint8_t count, uint8_t direction)
interface dmp tap callback
void mpu6050_interface_dmp_orient_callback(uint8_t orientation)
interface dmp orient callback
uint8_t mpu6050_interface_iic_deinit(void)
interface iic bus deinit
uint8_t mpu6050_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void mpu6050_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t mpu6050_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t mpu6050_interface_iic_init(void)
interface iic bus init
void mpu6050_interface_receive_callback(uint8_t type)
interface receive callback
void mpu6050_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t mpu6050_dmp_read_test(mpu6050_address_t addr, uint32_t times)
dmp read test
uint8_t mpu6050_dmp_read_test_irq_handler(void)
dmp read test irq
uint32_t driver_version
char manufacturer_name[32]