LibDriver MPU9250
Loading...
Searching...
No Matches
driver_mpu9250_fifo_test.c
Go to the documentation of this file.
1
36
38
39static mpu9250_handle_t gs_handle;
40static int16_t gs_accel_raw[80][3];
41static float gs_accel_g[80][3];
42static int16_t gs_gyro_raw[80][3];
43static float gs_gyro_dps[80][3];
44static int16_t gs_mag_raw[80][3];
45static float gs_mag_ut[80][3];
46static uint16_t gs_len;
47
56{
57 if (mpu9250_irq_handler(&gs_handle) != 0)
58 {
59 return 1;
60 }
61 else
62 {
63 return 0;
64 }
65}
66
77uint8_t mpu9250_fifo_test(mpu9250_interface_t interface, mpu9250_address_t addr, uint32_t times)
78{
79 uint8_t res;
80 uint32_t i;
81 mpu9250_info_t info;
82
83 /* link interface function */
96
97 /* get information */
98 res = mpu9250_info(&info);
99 if (res != 0)
100 {
101 mpu9250_interface_debug_print("mpu9250: get info failed.\n");
102
103 return 1;
104 }
105 else
106 {
107 /* print chip info */
108 mpu9250_interface_debug_print("mpu9250: chip is %s.\n", info.chip_name);
109 mpu9250_interface_debug_print("mpu9250: manufacturer is %s.\n", info.manufacturer_name);
110 mpu9250_interface_debug_print("mpu9250: interface is %s.\n", info.interface);
111 mpu9250_interface_debug_print("mpu9250: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
112 mpu9250_interface_debug_print("mpu9250: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
113 mpu9250_interface_debug_print("mpu9250: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
114 mpu9250_interface_debug_print("mpu9250: max current is %0.2fmA.\n", info.max_current_ma);
115 mpu9250_interface_debug_print("mpu9250: max temperature is %0.1fC.\n", info.temperature_max);
116 mpu9250_interface_debug_print("mpu9250: min temperature is %0.1fC.\n", info.temperature_min);
117 }
118
119 /* start fifo test */
120 mpu9250_interface_debug_print("mpu9250: start fifo test.\n");
121
122 /* set the interface */
123 res = mpu9250_set_interface(&gs_handle, interface);
124 if (res != 0)
125 {
126 mpu9250_interface_debug_print("mpu9250: set interface failed.\n");
127
128 return 1;
129 }
130
131 /* set the addr pin */
132 res = mpu9250_set_addr_pin(&gs_handle, addr);
133 if (res != 0)
134 {
135 mpu9250_interface_debug_print("mpu9250: set addr pin failed.\n");
136
137 return 1;
138 }
139
140 /* init */
141 res = mpu9250_init(&gs_handle);
142 if (res != 0)
143 {
144 mpu9250_interface_debug_print("mpu9250: init failed.\n");
145
146 return 1;
147 }
148
149 /* delay 100 ms */
151
152 /* disable sleep */
153 res = mpu9250_set_sleep(&gs_handle, MPU9250_BOOL_FALSE);
154 if (res != 0)
155 {
156 mpu9250_interface_debug_print("mpu9250: set sleep failed.\n");
157 (void)mpu9250_deinit(&gs_handle);
158
159 return 1;
160 }
161
162 /* if spi interface, disable iic interface */
163 if (interface == MPU9250_INTERFACE_SPI)
164 {
165 /* disable iic */
167 if (res != 0)
168 {
169 mpu9250_interface_debug_print("mpu9250: set disable iic slave failed.\n");
170 (void)mpu9250_deinit(&gs_handle);
171
172 return 1;
173 }
174 }
175
176 /* set fifo 1024kb */
177 res = mpu9250_set_fifo_1024kb(&gs_handle);
178 if (res != 0)
179 {
180 mpu9250_interface_debug_print("mpu9250: set fifo 1024kb failed.\n");
181 (void)mpu9250_deinit(&gs_handle);
182
183 return 1;
184 }
185
186 /* set pll */
188 if (res != 0)
189 {
190 mpu9250_interface_debug_print("mpu9250: set clock source failed.\n");
191 (void)mpu9250_deinit(&gs_handle);
192
193 return 1;
194 }
195
196 /* set 50Hz */
197 res = mpu9250_set_sample_rate_divider(&gs_handle, (1000 / 50) - 1);
198 if (res != 0)
199 {
200 mpu9250_interface_debug_print("mpu9250: set sample rate divider failed.\n");
201 (void)mpu9250_deinit(&gs_handle);
202
203 return 1;
204 }
205
206 /* ±2g */
208 if (res != 0)
209 {
210 mpu9250_interface_debug_print("mpu9250: set accelerometer range failed.\n");
211 (void)mpu9250_deinit(&gs_handle);
212
213 return 1;
214 }
215
216 /* ±2000dps */
218 if (res != 0)
219 {
220 mpu9250_interface_debug_print("mpu9250: set gyroscope range failed.\n");
221 (void)mpu9250_deinit(&gs_handle);
222
223 return 1;
224 }
225
226 /* enable temperature sensor */
227 res = mpu9250_set_ptat(&gs_handle, MPU9250_BOOL_TRUE);
228 if (res != 0)
229 {
230 mpu9250_interface_debug_print("mpu9250: set ptat failed.\n");
231 (void)mpu9250_deinit(&gs_handle);
232
233 return 1;
234 }
235
236 /* disable cycle wake up */
238 if (res != 0)
239 {
240 mpu9250_interface_debug_print("mpu9250: set cycle wake up failed.\n");
241 (void)mpu9250_deinit(&gs_handle);
242
243 return 1;
244 }
245
246 /* enable acc x */
248 if (res != 0)
249 {
250 mpu9250_interface_debug_print("mpu9250: set standby mode failed.\n");
251 (void)mpu9250_deinit(&gs_handle);
252
253 return 1;
254 }
255
256 /* enable acc y */
258 if (res != 0)
259 {
260 mpu9250_interface_debug_print("mpu9250: set standby mode failed.\n");
261 (void)mpu9250_deinit(&gs_handle);
262
263 return 1;
264 }
265
266 /* enable acc z */
268 if (res != 0)
269 {
270 mpu9250_interface_debug_print("mpu9250: set standby mode failed.\n");
271 (void)mpu9250_deinit(&gs_handle);
272
273 return 1;
274 }
275
276 /* enable gyro x */
278 if (res != 0)
279 {
280 mpu9250_interface_debug_print("mpu9250: set standby mode failed.\n");
281 (void)mpu9250_deinit(&gs_handle);
282
283 return 1;
284 }
285
286 /* enable gyro y */
288 if (res != 0)
289 {
290 mpu9250_interface_debug_print("mpu9250: set standby mode failed.\n");
291 (void)mpu9250_deinit(&gs_handle);
292
293 return 1;
294 }
295
296 /* enable gyro z */
298 if (res != 0)
299 {
300 mpu9250_interface_debug_print("mpu9250: set standby mode failed.\n");
301 (void)mpu9250_deinit(&gs_handle);
302
303 return 1;
304 }
305
306 /* disable gyroscope x test */
308 if (res != 0)
309 {
310 mpu9250_interface_debug_print("mpu9250: set gyroscope test failed.\n");
311 (void)mpu9250_deinit(&gs_handle);
312
313 return 1;
314 }
315
316 /* disable gyroscope y test */
318 if (res != 0)
319 {
320 mpu9250_interface_debug_print("mpu9250: set gyroscope test failed.\n");
321 (void)mpu9250_deinit(&gs_handle);
322
323 return 1;
324 }
325
326 /* disable gyroscope z test */
328 if (res != 0)
329 {
330 mpu9250_interface_debug_print("mpu9250: set gyroscope test failed.\n");
331 (void)mpu9250_deinit(&gs_handle);
332
333 return 1;
334 }
335
336 /* disable accelerometer x test */
338 if (res != 0)
339 {
340 mpu9250_interface_debug_print("mpu9250: set accelerometer test failed.\n");
341 (void)mpu9250_deinit(&gs_handle);
342
343 return 1;
344 }
345
346 /* disable accelerometer y test */
348 if (res != 0)
349 {
350 mpu9250_interface_debug_print("mpu9250: set accelerometer test failed.\n");
351 (void)mpu9250_deinit(&gs_handle);
352
353 return 1;
354 }
355
356 /* disable accelerometer z test */
358 if (res != 0)
359 {
360 mpu9250_interface_debug_print("mpu9250: set accelerometer test failed.\n");
361 (void)mpu9250_deinit(&gs_handle);
362
363 return 1;
364 }
365
366 /* disable temp fifo */
368 if (res != 0)
369 {
370 mpu9250_interface_debug_print("mpu9250: set fifo enable failed.\n");
371 (void)mpu9250_deinit(&gs_handle);
372
373 return 1;
374 }
375
376 /* enable xg fifo */
378 if (res != 0)
379 {
380 mpu9250_interface_debug_print("mpu9250: set fifo enable failed.\n");
381 (void)mpu9250_deinit(&gs_handle);
382
383 return 1;
384 }
385
386 /* enable yg fifo */
388 if (res != 0)
389 {
390 mpu9250_interface_debug_print("mpu9250: set fifo enable failed.\n");
391 (void)mpu9250_deinit(&gs_handle);
392
393 return 1;
394 }
395
396 /* enable zg fifo */
398 if (res != 0)
399 {
400 mpu9250_interface_debug_print("mpu9250: set fifo enable failed.\n");
401 (void)mpu9250_deinit(&gs_handle);
402
403 return 1;
404 }
405
406 /* enable accel fifo */
408 if (res != 0)
409 {
410 mpu9250_interface_debug_print("mpu9250: set fifo enable failed.\n");
411 (void)mpu9250_deinit(&gs_handle);
412
413 return 1;
414 }
415
416 /* set interrupt level low */
418 if (res != 0)
419 {
420 mpu9250_interface_debug_print("mpu9250: set interrupt level failed.\n");
421 (void)mpu9250_deinit(&gs_handle);
422
423 return 1;
424 }
425
426 /* push-pull */
428 if (res != 0)
429 {
430 mpu9250_interface_debug_print("mpu9250: set interrupt pin type failed.\n");
431 (void)mpu9250_deinit(&gs_handle);
432
433 return 1;
434 }
435
436 /* disable motion */
438 if (res != 0)
439 {
440 mpu9250_interface_debug_print("mpu9250: set interrupt failed.\n");
441 (void)mpu9250_deinit(&gs_handle);
442
443 return 1;
444 }
445
446 /* enable fifo overflow */
448 if (res != 0)
449 {
450 mpu9250_interface_debug_print("mpu9250: set interrupt failed.\n");
451 (void)mpu9250_deinit(&gs_handle);
452
453 return 1;
454 }
455
456 /* disable dmp interrupt */
458 if (res != 0)
459 {
460 mpu9250_interface_debug_print("mpu9250: set interrupt failed.\n");
461 (void)mpu9250_deinit(&gs_handle);
462
463 return 1;
464 }
465
466 /* disable fsync int */
468 if (res != 0)
469 {
470 mpu9250_interface_debug_print("mpu9250: set interrupt failed.\n");
471 (void)mpu9250_deinit(&gs_handle);
472
473 return 1;
474 }
475
476 /* disable data ready */
478 if (res != 0)
479 {
480 mpu9250_interface_debug_print("mpu9250: set interrupt failed.\n");
481 (void)mpu9250_deinit(&gs_handle);
482
483 return 1;
484 }
485
486 /* enable latch */
488 if (res != 0)
489 {
490 mpu9250_interface_debug_print("mpu9250: set interrupt latch failed.\n");
491 (void)mpu9250_deinit(&gs_handle);
492
493 return 1;
494 }
495
496 /* enable interrupt read clear */
498 if (res != 0)
499 {
500 mpu9250_interface_debug_print("mpu9250: set interrupt read clear failed.\n");
501 (void)mpu9250_deinit(&gs_handle);
502
503 return 1;
504 }
505
506 /* disable sync input */
508 if (res != 0)
509 {
510 mpu9250_interface_debug_print("mpu9250: set extern sync failed.\n");
511 (void)mpu9250_deinit(&gs_handle);
512
513 return 1;
514 }
515
516 /* disable fsync interrupt */
518 if (res != 0)
519 {
520 mpu9250_interface_debug_print("mpu9250: set fsync interrupt failed.\n");
521 (void)mpu9250_deinit(&gs_handle);
522
523 return 1;
524 }
525
526 /* fsync interrupt level low */
528 if (res != 0)
529 {
530 mpu9250_interface_debug_print("mpu9250: set fsync interrupt level failed.\n");
531 (void)mpu9250_deinit(&gs_handle);
532
533 return 1;
534 }
535
536 /* disable iic master */
538 if (res != 0)
539 {
540 mpu9250_interface_debug_print("mpu9250: set iic master failed.\n");
541 (void)mpu9250_deinit(&gs_handle);
542
543 return 1;
544 }
545
546 /* disable iic bypass */
548 if (res != 0)
549 {
550 mpu9250_interface_debug_print("mpu9250: set iic bypass failed.\n");
551 (void)mpu9250_deinit(&gs_handle);
552
553 return 1;
554 }
555
556 /* disable gyro standby */
558 if (res != 0)
559 {
560 mpu9250_interface_debug_print("mpu9250: set gyro standby failed.\n");
561 (void)mpu9250_deinit(&gs_handle);
562
563 return 1;
564 }
565
566 /* set the fifo normal mode */
568 if (res != 0)
569 {
570 mpu9250_interface_debug_print("mpu9250: set fifo mode failed.\n");
571 (void)mpu9250_deinit(&gs_handle);
572
573 return 1;
574 }
575
576 /* set gyroscope choice 0 */
577 res = mpu9250_set_gyroscope_choice(&gs_handle, 0);
578 if (res != 0)
579 {
580 mpu9250_interface_debug_print("mpu9250: set gyroscope choice failed.\n");
581 (void)mpu9250_deinit(&gs_handle);
582
583 return 1;
584 }
585
586 /* set low pass filter 3 */
588 if (res != 0)
589 {
590 mpu9250_interface_debug_print("mpu9250: set low pass filter failed.\n");
591 (void)mpu9250_deinit(&gs_handle);
592
593 return 1;
594 }
595
596 /* set accelerometer choice 0 */
597 res = mpu9250_set_accelerometer_choice(&gs_handle, 0);
598 if (res != 0)
599 {
600 mpu9250_interface_debug_print("mpu9250: set accelerometer choice failed.\n");
601 (void)mpu9250_deinit(&gs_handle);
602
603 return 1;
604 }
605
606 /* set accelerometer low pass filter 3 */
608 if (res != 0)
609 {
610 mpu9250_interface_debug_print("mpu9250: set accelerometer low pass filter failed.\n");
611 (void)mpu9250_deinit(&gs_handle);
612
613 return 1;
614 }
615
616 /* set low power accel output rate 62.5Hz */
618 if (res != 0)
619 {
620 mpu9250_interface_debug_print("mpu9250: set low power accel output rate failed.\n");
621 (void)mpu9250_deinit(&gs_handle);
622
623 return 1;
624 }
625
626 /* disable wake on motion */
628 if (res != 0)
629 {
630 mpu9250_interface_debug_print("mpu9250: set wake on motion failed.\n");
631 (void)mpu9250_deinit(&gs_handle);
632
633 return 1;
634 }
635
636 /* enable accel compare with previous sample */
638 if (res != 0)
639 {
640 mpu9250_interface_debug_print("mpu9250: set accel compare with previous sample failed.\n");
641 (void)mpu9250_deinit(&gs_handle);
642
643 return 1;
644 }
645
646 /* if iic interface */
647 if (interface == MPU9250_INTERFACE_IIC)
648 {
649 /* mag init */
650 res = mpu9250_mag_init(&gs_handle);
651 if (res != 0)
652 {
653 mpu9250_interface_debug_print("mpu9250: mag init failed.\n");
654 (void)mpu9250_deinit(&gs_handle);
655
656 return 1;
657 }
658
659 /* 100Hz */
661 if (res != 0)
662 {
663 mpu9250_interface_debug_print("mpu9250: mag set mode failed.\n");
664 (void)mpu9250_mag_deinit(&gs_handle);
665 (void)mpu9250_deinit(&gs_handle);
666
667 return 1;
668 }
669
670 /* set 16 bits */
672 if (res != 0)
673 {
674 mpu9250_interface_debug_print("mpu9250: mag set bits failed.\n");
675 (void)mpu9250_mag_deinit(&gs_handle);
676 (void)mpu9250_deinit(&gs_handle);
677
678 return 1;
679 }
680
681 /* enable iic master */
682 res = mpu9250_set_iic_master(&gs_handle, MPU9250_BOOL_TRUE);
683 if (res != 0)
684 {
685 mpu9250_interface_debug_print("mpu9250: set iic master failed.\n");
686 (void)mpu9250_mag_deinit(&gs_handle);
687 (void)mpu9250_deinit(&gs_handle);
688
689 return 1;
690 }
691
692 /* disable iic bypass */
694 if (res != 0)
695 {
696 mpu9250_interface_debug_print("mpu9250: set iic bypass failed.\n");
697 (void)mpu9250_mag_deinit(&gs_handle);
698 (void)mpu9250_deinit(&gs_handle);
699
700 return 1;
701 }
702
703 /* set iic clock 400KHz */
705 if (res != 0)
706 {
707 mpu9250_interface_debug_print("mpu9250: set iic clock failed.\n");
708 (void)mpu9250_mag_deinit(&gs_handle);
709 (void)mpu9250_deinit(&gs_handle);
710
711 return 1;
712 }
713
714 /* enable iic multi master */
716 if (res != 0)
717 {
718 mpu9250_interface_debug_print("mpu9250: set iic multi master failed.\n");
719 (void)mpu9250_mag_deinit(&gs_handle);
720 (void)mpu9250_deinit(&gs_handle);
721
722 return 1;
723 }
724
725 /* disable iic wait for external sensor */
727 if (res != 0)
728 {
729 mpu9250_interface_debug_print("mpu9250: set iic wait for external sensor failed.\n");
730 (void)mpu9250_mag_deinit(&gs_handle);
731 (void)mpu9250_deinit(&gs_handle);
732
733 return 1;
734 }
735
736 /* set iic restart read mode */
738 if (res != 0)
739 {
740 mpu9250_interface_debug_print("mpu9250: set iic read mode failed.\n");
741 (void)mpu9250_mag_deinit(&gs_handle);
742 (void)mpu9250_deinit(&gs_handle);
743
744 return 1;
745 }
746
747 /* set slave 0 disable delay */
749 if (res != 0)
750 {
751 mpu9250_interface_debug_print("mpu9250: set iic delay enable failed.\n");
752 (void)mpu9250_mag_deinit(&gs_handle);
753 (void)mpu9250_deinit(&gs_handle);
754
755 return 1;
756 }
757
758 /* mag set fifo mode */
759 res = mpu9250_mag_set_fifo_mode(&gs_handle);
760 if (res != 0)
761 {
762 mpu9250_interface_debug_print("mpu9250: mag set fifo mode failed.\n");
763 (void)mpu9250_mag_deinit(&gs_handle);
764 (void)mpu9250_deinit(&gs_handle);
765
766 return 1;
767 }
768 }
769
770 /* enable fifo */
771 res = mpu9250_set_fifo(&gs_handle, MPU9250_BOOL_TRUE);
772 if (res != 0)
773 {
774 mpu9250_interface_debug_print("mpu9250: set fifo failed.\n");
775 if (interface == MPU9250_INTERFACE_IIC)
776 {
777 (void)mpu9250_mag_deinit(&gs_handle);
778 }
779 (void)mpu9250_deinit(&gs_handle);
780
781 return 1;
782 }
783
784 /* force reset the fifo */
785 res = mpu9250_force_fifo_reset(&gs_handle);
786 if (res != 0)
787 {
788 mpu9250_interface_debug_print("mpu9250: force fifo reset failed.\n");
789 if (interface == MPU9250_INTERFACE_IIC)
790 {
791 (void)mpu9250_set_fifo(&gs_handle, MPU9250_BOOL_FALSE);
792 (void)mpu9250_mag_deinit(&gs_handle);
793 }
794 (void)mpu9250_deinit(&gs_handle);
795
796 return 1;
797 }
798
799 /* delay 1000 ms */
801
802 for (i = 0; i < times; i++)
803 {
804 /* read data */
805 gs_len = 80;
806 res = mpu9250_read(&gs_handle, gs_accel_raw, gs_accel_g, gs_gyro_raw, gs_gyro_dps, gs_mag_raw, gs_mag_ut, &gs_len);
807 if (res != 0)
808 {
809 mpu9250_interface_debug_print("mpu9250: read failed.\n");
810 if (interface == MPU9250_INTERFACE_IIC)
811 {
812 (void)mpu9250_set_fifo(&gs_handle, MPU9250_BOOL_FALSE);
813 (void)mpu9250_mag_deinit(&gs_handle);
814 }
815 (void)mpu9250_deinit(&gs_handle);
816
817 return 1;
818 }
819
820 /* output data */
821 mpu9250_interface_debug_print("mpu9250: fifo %d.\n", gs_len);
822 mpu9250_interface_debug_print("mpu9250: acc x[0] is %0.2fg.\n", gs_accel_g[0][0]);
823 mpu9250_interface_debug_print("mpu9250: acc y[0] is %0.2fg.\n", gs_accel_g[0][1]);
824 mpu9250_interface_debug_print("mpu9250: acc z[0] is %0.2fg.\n", gs_accel_g[0][2]);
825 mpu9250_interface_debug_print("mpu9250: gyro x[0] is %0.2fdps.\n", gs_gyro_dps[0][0]);
826 mpu9250_interface_debug_print("mpu9250: gyro y[0] is %0.2fdps.\n", gs_gyro_dps[0][1]);
827 mpu9250_interface_debug_print("mpu9250: gyro z[0] is %0.2fdps.\n", gs_gyro_dps[0][2]);
828 mpu9250_interface_debug_print("mpu9250: mag x[0] is %0.2fuT.\n", gs_mag_ut[0][0]);
829 mpu9250_interface_debug_print("mpu9250: mag y[0] is %0.2fuT.\n", gs_mag_ut[0][1]);
830 mpu9250_interface_debug_print("mpu9250: mag z[0] is %0.2fuT.\n", gs_mag_ut[0][2]);
831
832 /* delay 500 ms */
834 }
835
836 /* finish fifo test */
837 mpu9250_interface_debug_print("mpu9250: finish fifo test.\n");
838 if (interface == MPU9250_INTERFACE_IIC)
839 {
840 (void)mpu9250_set_fifo(&gs_handle, MPU9250_BOOL_FALSE);
841 (void)mpu9250_mag_deinit(&gs_handle);
842 }
843 (void)mpu9250_deinit(&gs_handle);
844
845 return 0;
846}
driver mpu9250 fifo test header file
uint8_t mpu9250_set_accelerometer_low_pass_filter(mpu9250_handle_t *handle, mpu9250_accelerometer_low_pass_filter_t filter)
set the accelerometer low pass filter
uint8_t mpu9250_set_wake_on_motion(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable wake on motion
uint8_t mpu9250_set_accel_compare_with_previous_sample(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable accel compare with previous sample
uint8_t mpu9250_set_fifo_mode(mpu9250_handle_t *handle, mpu9250_fifo_mode mode)
set the fifo mode
uint8_t mpu9250_set_addr_pin(mpu9250_handle_t *handle, mpu9250_address_t addr_pin)
set the chip address pin
uint8_t mpu9250_set_ptat(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable the temperature sensor
uint8_t mpu9250_set_fifo_enable(mpu9250_handle_t *handle, mpu9250_fifo_t fifo, mpu9250_bool_t enable)
enable or disable the fifo function
uint8_t mpu9250_set_standby_mode(mpu9250_handle_t *handle, mpu9250_source_t source, mpu9250_bool_t enable)
set source into standby mode
uint8_t mpu9250_set_iic_wait_for_external_sensor(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable iic wait for external sensor
uint8_t mpu9250_set_cycle_wake_up(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable the cycle wake up mode
uint8_t mpu9250_set_interrupt_latch(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable the interrupt latch
uint8_t mpu9250_set_extern_sync(mpu9250_handle_t *handle, mpu9250_extern_sync_t sync)
set the extern sync type
uint8_t mpu9250_set_gyro_standby(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable the gyro standby
uint8_t mpu9250_set_iic_multi_master(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable iic multi master
uint8_t mpu9250_set_iic_read_mode(mpu9250_handle_t *handle, mpu9250_iic_read_mode_t mode)
set the iic read mode
mpu9250_address_t
mpu9250 address enumeration definition
uint8_t mpu9250_set_fsync_interrupt(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable the fsync interrupt
uint8_t mpu9250_set_iic_bypass(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable the iic bypass
uint8_t mpu9250_info(mpu9250_info_t *info)
get the chip's information
uint8_t mpu9250_set_accelerometer_test(mpu9250_handle_t *handle, mpu9250_axis_t axis, mpu9250_bool_t enable)
set the accelerometer test
uint8_t mpu9250_set_interrupt_level(mpu9250_handle_t *handle, mpu9250_pin_level_t level)
set the interrupt level
uint8_t mpu9250_set_interrupt_read_clear(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable the interrupt reading clear
uint8_t mpu9250_set_interface(mpu9250_handle_t *handle, mpu9250_interface_t interface)
set the chip interface
uint8_t mpu9250_irq_handler(mpu9250_handle_t *handle)
irq handler
uint8_t mpu9250_set_iic_delay_enable(mpu9250_handle_t *handle, mpu9250_iic_delay_t delay, mpu9250_bool_t enable)
enable or disable the iic delay
struct mpu9250_info_s mpu9250_info_t
mpu9250 information structure definition
mpu9250_interface_t
mpu9250 interface enumeration definition
uint8_t mpu9250_set_interrupt(mpu9250_handle_t *handle, mpu9250_interrupt_t type, mpu9250_bool_t enable)
enable or disable the interrupt
uint8_t mpu9250_set_fsync_interrupt_level(mpu9250_handle_t *handle, mpu9250_pin_level_t level)
set the fsync interrupt level
uint8_t mpu9250_set_gyroscope_choice(mpu9250_handle_t *handle, uint8_t choice)
set the gyroscope choice
uint8_t mpu9250_deinit(mpu9250_handle_t *handle)
close the chip
uint8_t mpu9250_read(mpu9250_handle_t *handle, int16_t(*accel_raw)[3], float(*accel_g)[3], int16_t(*gyro_raw)[3], float(*gyro_dps)[3], int16_t(*mag_raw)[3], float(*mag_ut)[3], uint16_t *len)
read the data
struct mpu9250_handle_s mpu9250_handle_t
mpu9250 handle structure definition
uint8_t mpu9250_set_fifo_1024kb(mpu9250_handle_t *handle)
set fifo 1024kb
uint8_t mpu9250_set_low_pass_filter(mpu9250_handle_t *handle, mpu9250_low_pass_filter_t filter)
set the low pass filter
uint8_t mpu9250_set_gyroscope_test(mpu9250_handle_t *handle, mpu9250_axis_t axis, mpu9250_bool_t enable)
set the gyroscope test
uint8_t mpu9250_set_clock_source(mpu9250_handle_t *handle, mpu9250_clock_source_t clock_source)
set the chip clock source
uint8_t mpu9250_set_low_power_accel_output_rate(mpu9250_handle_t *handle, mpu9250_low_power_accel_output_rate_t rate)
set the low power accel output rate
uint8_t mpu9250_set_iic_clock(mpu9250_handle_t *handle, mpu9250_iic_clock_t clk)
set the iic clock
uint8_t mpu9250_set_disable_iic_slave(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable the iic slave mode
uint8_t mpu9250_set_sample_rate_divider(mpu9250_handle_t *handle, uint8_t d)
set the sample rate divider
uint8_t mpu9250_set_fifo(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable fifo
uint8_t mpu9250_init(mpu9250_handle_t *handle)
initialize the chip
uint8_t mpu9250_set_accelerometer_choice(mpu9250_handle_t *handle, uint8_t choice)
set the accelerometer choice
uint8_t mpu9250_set_gyroscope_range(mpu9250_handle_t *handle, mpu9250_gyroscope_range_t range)
set the gyroscope range
uint8_t mpu9250_set_interrupt_pin_type(mpu9250_handle_t *handle, mpu9250_pin_type_t type)
set the interrupt pin type
uint8_t mpu9250_set_iic_master(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable the iic master mode
uint8_t mpu9250_set_accelerometer_range(mpu9250_handle_t *handle, mpu9250_accelerometer_range_t range)
set the accelerometer range
uint8_t mpu9250_set_sleep(mpu9250_handle_t *handle, mpu9250_bool_t enable)
enable or disable the sleep mode
uint8_t mpu9250_force_fifo_reset(mpu9250_handle_t *handle)
force reset the fifo
@ MPU9250_ACCELEROMETER_RANGE_2G
@ MPU9250_PIN_TYPE_PUSH_PULL
@ MPU9250_IIC_DELAY_SLAVE_0
@ MPU9250_GYROSCOPE_RANGE_2000DPS
@ MPU9250_INTERRUPT_MOTION
@ MPU9250_INTERRUPT_DATA_READY
@ MPU9250_INTERRUPT_FSYNC_INT
@ MPU9250_INTERRUPT_DMP
@ MPU9250_INTERRUPT_FIFO_OVERFLOW
@ MPU9250_EXTERN_SYNC_INPUT_DISABLED
@ MPU9250_SOURCE_GYRO_X
@ MPU9250_SOURCE_ACC_Z
@ MPU9250_SOURCE_GYRO_Y
@ MPU9250_SOURCE_GYRO_Z
@ MPU9250_SOURCE_ACC_X
@ MPU9250_SOURCE_ACC_Y
@ MPU9250_INTERFACE_SPI
@ MPU9250_INTERFACE_IIC
@ MPU9250_BOOL_TRUE
@ MPU9250_BOOL_FALSE
@ MPU9250_LOW_PASS_FILTER_3
@ MPU9250_FIFO_MODE_NORMAL
@ MPU9250_LOW_POWER_ACCEL_OUTPUT_RATE_62P50
@ MPU9250_IIC_READ_MODE_RESTART
@ MPU9250_IIC_CLOCK_400_KHZ
@ MPU9250_AXIS_X
@ MPU9250_AXIS_Z
@ MPU9250_AXIS_Y
@ MPU9250_ACCELEROMETER_LOW_PASS_FILTER_3
@ MPU9250_PIN_LEVEL_LOW
@ MPU9250_FIFO_XG
@ MPU9250_FIFO_YG
@ MPU9250_FIFO_ZG
@ MPU9250_FIFO_ACCEL
@ MPU9250_FIFO_TEMP
@ MPU9250_CLOCK_SOURCE_PLL
void mpu9250_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t mpu9250_interface_spi_write(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus write
uint8_t mpu9250_interface_iic_deinit(void)
interface iic bus deinit
uint8_t mpu9250_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t mpu9250_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t mpu9250_interface_iic_init(void)
interface iic bus init
uint8_t mpu9250_interface_spi_read(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
uint8_t mpu9250_interface_spi_init(void)
interface spi bus init
void mpu9250_interface_receive_callback(uint8_t type)
interface receive callback
void mpu9250_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t mpu9250_interface_spi_deinit(void)
interface spi bus deinit
uint8_t mpu9250_mag_set_mode(mpu9250_handle_t *handle, mpu9250_magnetometer_mode_t mode)
magnetometer set the mode
uint8_t mpu9250_mag_set_bits(mpu9250_handle_t *handle, mpu9250_magnetometer_bits_t bits)
magnetometer set the bits
uint8_t mpu9250_mag_init(mpu9250_handle_t *handle)
initialize the magnetometer of mpu9250
uint8_t mpu9250_mag_deinit(mpu9250_handle_t *handle)
magnetometer deinit
uint8_t mpu9250_mag_set_fifo_mode(mpu9250_handle_t *handle)
magnetometer set into fifo mode
@ MPU9250_MAGNETOMETER_BITS_16
@ MPU9250_MAGNETOMETER_MODE_CONTINUOUS2
uint8_t mpu9250_fifo_test_irq_handler(void)
fifo test irq
uint8_t mpu9250_fifo_test(mpu9250_interface_t interface, mpu9250_address_t addr, uint32_t times)
fifo test
uint32_t driver_version
char manufacturer_name[32]