LibDriver MPU9250  1.0.0
MPU9250 full function driver
driver_mpu9250_fifo_test.c
Go to the documentation of this file.
1 
38 
39 static mpu9250_handle_t gs_handle;
40 static int16_t gs_accel_raw[80][3];
41 static float gs_accel_g[80][3];
42 static int16_t gs_gyro_raw[80][3];
43 static float gs_gyro_dps[80][3];
44 static int16_t gs_mag_raw[80][3];
45 static float gs_mag_ut[80][3];
46 static uint16_t gs_len;
56 {
57  if (mpu9250_irq_handler(&gs_handle) != 0)
58  {
59  return 1;
60  }
61  else
62  {
63  return 0;
64  }
65 }
66 
77 uint8_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 */
537  res = mpu9250_set_iic_master(&gs_handle, MPU9250_BOOL_FALSE);
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 */
547  res = mpu9250_set_iic_bypass(&gs_handle, MPU9250_BOOL_FALSE);
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 */
557  res = mpu9250_set_gyro_standby(&gs_handle, MPU9250_BOOL_FALSE);
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 */
693  res = mpu9250_set_iic_bypass(&gs_handle, MPU9250_BOOL_FALSE);
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
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
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
mpu9250 handle structure definition
mpu9250 information structure definition
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]