inv_mpu.h
D:/gitt/MicrochipFor32/bsp_MPU6050/inv_mpu.h
浏览该文件的文档.00001 /*
00002 $License:
00003 Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved.
00004 See included License.txt for License information.
00005 $
00006 */
00021 #ifndef _INV_MPU_H_
00022 #define _INV_MPU_H_
00023 #include "main.h"
00024 #include "varint.h"
00025
00026 //定义输出速度
00027 #define DEFAULT_MPU_HZ (100) //100Hz
00028
00029 #define INV_X_GYRO (0x40)
00030 #define INV_Y_GYRO (0x20)
00031 #define INV_Z_GYRO (0x10)
00032 #define INV_XYZ_GYRO (INV_X_GYRO | INV_Y_GYRO | INV_Z_GYRO)
00033 #define INV_XYZ_ACCEL (0x08)
00034 #define INV_XYZ_COMPASS (0x01)
00035
00036 //移植官方MSP430 DMP驱动过来
00037 struct int_param_s {
00038 //#if defined EMPL_TARGET_MSP430 || defined MOTION_DRIVER_TARGET_MSP430
00039 void (*cb)(void);
00040 unsigned short pin;
00041 unsigned char lp_exit;
00042 unsigned char active_low;
00043 //#elif defined EMPL_TARGET_UC3L0
00044 // unsigned long pin;
00045 // void (*cb)(volatile void*);
00046 // void *arg;
00047 //#endif
00048 };
00049
00050 #define MPU_INT_STATUS_DATA_READY (0x0001)
00051 #define MPU_INT_STATUS_DMP (0x0002)
00052 #define MPU_INT_STATUS_PLL_READY (0x0004)
00053 #define MPU_INT_STATUS_I2C_MST (0x0008)
00054 #define MPU_INT_STATUS_FIFO_OVERFLOW (0x0010)
00055 #define MPU_INT_STATUS_ZMOT (0x0020)
00056 #define MPU_INT_STATUS_MOT (0x0040)
00057 #define MPU_INT_STATUS_FREE_FALL (0x0080)
00058 #define MPU_INT_STATUS_DMP_0 (0x0100)
00059 #define MPU_INT_STATUS_DMP_1 (0x0200)
00060 #define MPU_INT_STATUS_DMP_2 (0x0400)
00061 #define MPU_INT_STATUS_DMP_3 (0x0800)
00062 #define MPU_INT_STATUS_DMP_4 (0x1000)
00063 #define MPU_INT_STATUS_DMP_5 (0x2000)
00064
00065 /* Set up APIs */
00066 int mpu_init(void);
00067 int mpu_init_slave(void);
00068 int mpu_set_bypass(unsigned char bypass_on);
00069
00070 /* Configuration APIs */
00071 int mpu_lp_accel_mode(unsigned char rate);
00072 int mpu_lp_motion_interrupt(unsigned short thresh, unsigned char time,
00073 unsigned char lpa_freq);
00074 int mpu_set_int_level(unsigned char active_low);
00075 int mpu_set_int_latched(unsigned char enable);
00076
00077 int mpu_set_dmp_state(unsigned char enable);
00078 int mpu_get_dmp_state(unsigned char *enabled);
00079
00080 int mpu_get_lpf(unsigned short *lpf);
00081 int mpu_set_lpf(unsigned short lpf);
00082
00083 int mpu_get_gyro_fsr(unsigned short *fsr);
00084 int mpu_set_gyro_fsr(unsigned short fsr);
00085
00086 int mpu_get_accel_fsr(unsigned char *fsr);
00087 int mpu_set_accel_fsr(unsigned char fsr);
00088
00089 int mpu_get_compass_fsr(unsigned short *fsr);
00090
00091 int mpu_get_gyro_sens(float *sens);
00092 int mpu_get_accel_sens(unsigned short *sens);
00093
00094 int mpu_get_sample_rate(unsigned short *rate);
00095 int mpu_set_sample_rate(unsigned short rate);
00096 int mpu_get_compass_sample_rate(unsigned short *rate);
00097 int mpu_set_compass_sample_rate(unsigned short rate);
00098
00099 int mpu_get_fifo_config(unsigned char *sensors);
00100 int mpu_configure_fifo(unsigned char sensors);
00101
00102 int mpu_get_power_state(unsigned char *power_on);
00103 int mpu_set_sensors(unsigned char sensors);
00104
00105 int mpu_set_accel_bias(const long *accel_bias);
00106
00107 /* Data getter/setter APIs */
00108 int mpu_get_gyro_reg(short *data, unsigned long *timestamp);
00109 int mpu_get_accel_reg(short *data, unsigned long *timestamp);
00110 int mpu_get_compass_reg(short *data, unsigned long *timestamp);
00111 int mpu_get_temperature(long *data, unsigned long *timestamp);
00112
00113 int mpu_get_int_status(short *status);
00114 int mpu_read_fifo(short *gyro, short *accel, unsigned long *timestamp,
00115 unsigned char *sensors, unsigned char *more);
00116 int mpu_read_fifo_stream(unsigned short length, unsigned char *data,
00117 unsigned char *more);
00118 int mpu_reset_fifo(void);
00119
00120 int mpu_write_mem(unsigned short mem_addr, unsigned short length,
00121 unsigned char *data);
00122 int mpu_read_mem(unsigned short mem_addr, unsigned short length,
00123 unsigned char *data);
00124 int mpu_load_firmware(unsigned short length, const unsigned char *firmware,
00125 unsigned short start_addr, unsigned short sample_rate);
00126
00127 int mpu_reg_dump(void);
00128 int mpu_read_reg(unsigned char reg, unsigned char *data);
00129 int mpu_run_self_test(long *gyro, long *accel);
00130 int mpu_register_tap_cb(void (*func)(unsigned char, unsigned char));
00131 //自行添加的一些函数
00132 void mget_ms(unsigned long *time);
00133 unsigned short inv_row_2_scale(const signed char *row);
00134 unsigned short inv_orientation_matrix_to_scalar(const signed char *mtx);
00135 u8 run_self_test(void);
00136 u8 mpu_dmp_init(void);
00137 u8 mpu_dmp_get_data(float *pitch,float *roll,float *yaw);
00138
00139 #endif /* #ifndef _INV_MPU_H_ */
00140