Driver for MPU9250 with SPI .

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers MPU9250RegisterMap.h Source File

MPU9250RegisterMap.h

00001 #ifndef MPU9250REGISTERMAP_H
00002 #define MPU9250REGISTERMAP_H
00003 #include <cmath>
00004 #include "mbed.h"
00005 // MPU9250 with SPI interface library Ver. 0.98
00006 // Made by HeeJae Park 
00007 // 2019.05.27
00008 //Magnetometer Registers ================================
00009 #define AK8963_WHO_AM_I  0x00 // should return 0x48
00010 #define AK8963_INFO      0x01
00011 #define AK8963_ST1       0x02  // data ready status bit 0
00012 #define AK8963_XOUT_L    0x03  // data
00013 #define AK8963_XOUT_H    0x04
00014 #define AK8963_YOUT_L    0x05
00015 #define AK8963_YOUT_H    0x06
00016 #define AK8963_ZOUT_L    0x07
00017 #define AK8963_ZOUT_H    0x08
00018 #define AK8963_ST2       0x09  // Data overflow bit 3 and data read error status bit 2
00019 #define AK8963_CNTL      0x0A  // Power down (0000), single-measurement (0001), self-test (1000) and Fuse ROM (1111) modes on bits 3:0
00020 #define AK8963_CNTL2      0x0B 
00021 #define AK8963_ASTC      0x0C  // Self test control
00022 #define AK8963_I2CDIS    0x0F  // I2C disable
00023 #define AK8963_ASAX      0x10  // Fuse ROM x-axis sensitivity adjustment value
00024 #define AK8963_ASAY      0x11  // Fuse ROM y-axis sensitivity adjustment value
00025 #define AK8963_ASAZ      0x12  // Fuse ROM z-axis sensitivity adjustment value
00026 //IMU Registers ==========================================
00027 #define SELF_TEST_X_GYRO 0x00
00028 #define SELF_TEST_Y_GYRO 0x01
00029 #define SELF_TEST_Z_GYRO 0x02
00030 #define SELF_TEST_X_ACCEL 0x0D
00031 #define SELF_TEST_Y_ACCEL 0x0E
00032 #define SELF_TEST_Z_ACCEL 0x0F
00033 #define SELF_TEST_A      0x10
00034 #define XG_OFFSET_H      0x13  // User-defined trim values for gyroscope
00035 #define XG_OFFSET_L      0x14
00036 #define YG_OFFSET_H      0x15
00037 #define YG_OFFSET_L      0x16
00038 #define ZG_OFFSET_H      0x17
00039 #define ZG_OFFSET_L      0x18
00040 #define SMPLRT_DIV       0x19
00041 #define MPU_CONFIG       0x1A
00042 #define GYRO_CONFIG      0x1B
00043 #define ACCEL_CONFIG     0x1C
00044 #define ACCEL_CONFIG2    0x1D
00045 #define LP_ACCEL_ODR     0x1E
00046 #define WOM_THR          0x1F
00047 #define MOT_DUR          0x20  // Duration counter threshold for motion interrupt generation, 1 kHz rate, LSB = 1 ms
00048 #define ZMOT_THR         0x21  // Zero-motion detection threshold bits [7:0]
00049 #define ZRMOT_DUR        0x22  // Duration counter threshold for zero motion interrupt generation, 16 Hz rate, LSB = 64 ms
00050 #define FIFO_EN          0x23
00051 #define I2C_MST_CTRL     0x24
00052 #define I2C_SLV0_ADDR    0x25
00053 #define I2C_SLV0_REG     0x26
00054 #define I2C_SLV0_CTRL    0x27
00055 #define I2C_SLV1_ADDR    0x28
00056 #define I2C_SLV1_REG     0x29
00057 #define I2C_SLV1_CTRL    0x2A
00058 #define I2C_SLV2_ADDR    0x2B
00059 #define I2C_SLV2_REG     0x2C
00060 #define I2C_SLV2_CTRL    0x2D
00061 #define I2C_SLV3_ADDR    0x2E
00062 #define I2C_SLV3_REG     0x2F
00063 #define I2C_SLV3_CTRL    0x30
00064 #define I2C_SLV4_ADDR    0x31
00065 #define I2C_SLV4_REG     0x32
00066 #define I2C_SLV4_DO      0x33
00067 #define I2C_SLV4_CTRL    0x34
00068 #define I2C_SLV4_DI      0x35
00069 #define I2C_MST_STATUS   0x36
00070 #define INT_PIN_CFG      0x37
00071 #define INT_ENABLE       0x38
00072 #define DMP_INT_STATUS   0x39  // Check DMP interrupt
00073 #define INT_STATUS       0x3A
00074 #define ACCEL_XOUT_H     0x3B
00075 #define ACCEL_XOUT_L     0x3C
00076 #define ACCEL_YOUT_H     0x3D
00077 #define ACCEL_YOUT_L     0x3E
00078 #define ACCEL_ZOUT_H     0x3F
00079 #define ACCEL_ZOUT_L     0x40
00080 #define TEMP_OUT_H       0x41
00081 #define TEMP_OUT_L       0x42
00082 #define GYRO_XOUT_H      0x43
00083 #define GYRO_XOUT_L      0x44
00084 #define GYRO_YOUT_H      0x45
00085 #define GYRO_YOUT_L      0x46
00086 #define GYRO_ZOUT_H      0x47
00087 #define GYRO_ZOUT_L      0x48
00088 #define EXT_SENS_DATA_00 0x49
00089 #define EXT_SENS_DATA_01 0x4A
00090 #define EXT_SENS_DATA_02 0x4B
00091 #define EXT_SENS_DATA_03 0x4C
00092 #define EXT_SENS_DATA_04 0x4D
00093 #define EXT_SENS_DATA_05 0x4E
00094 #define EXT_SENS_DATA_06 0x4F
00095 #define EXT_SENS_DATA_07 0x50
00096 #define EXT_SENS_DATA_08 0x51
00097 #define EXT_SENS_DATA_09 0x52
00098 #define EXT_SENS_DATA_10 0x53
00099 #define EXT_SENS_DATA_11 0x54
00100 #define EXT_SENS_DATA_12 0x55
00101 #define EXT_SENS_DATA_13 0x56
00102 #define EXT_SENS_DATA_14 0x57
00103 #define EXT_SENS_DATA_15 0x58
00104 #define EXT_SENS_DATA_16 0x59
00105 #define EXT_SENS_DATA_17 0x5A
00106 #define EXT_SENS_DATA_18 0x5B
00107 #define EXT_SENS_DATA_19 0x5C
00108 #define EXT_SENS_DATA_20 0x5D
00109 #define EXT_SENS_DATA_21 0x5E
00110 #define EXT_SENS_DATA_22 0x5F
00111 #define EXT_SENS_DATA_23 0x60
00112 #define MOT_DETECT_STATUS 0x61
00113 #define I2C_SLV0_DO      0x63
00114 #define I2C_SLV1_DO      0x64
00115 #define I2C_SLV2_DO      0x65
00116 #define I2C_SLV3_DO      0x66
00117 #define I2C_MST_DELAY_CTRL 0x67
00118 #define SIGNAL_PATH_RESET  0x68
00119 #define MOT_DETECT_CTRL  0x69
00120 #define USER_CTRL        0x6A  // Bit 7 enable DMP, bit 3 reset DMP
00121 #define PWR_MGMT_1       0x6B // Device defaults to the SLEEP mode
00122 #define PWR_MGMT_2       0x6C
00123 #define DMP_BANK         0x6D  // Activates a specific bank in the DMP
00124 #define DMP_RW_PNT       0x6E  // Set read/write pointer to a specific start address in specified DMP bank
00125 #define DMP_REG          0x6F  // Register in DMP from which to read or to which to write
00126 #define DMP_REG_1        0x70
00127 #define DMP_REG_2        0x71
00128 #define FIFO_COUNTH      0x72
00129 #define FIFO_COUNTL      0x73
00130 #define FIFO_R_W         0x74
00131 #define WHO_AM_I_MPU9250 0x75 // Should return 0x71
00132 #define XA_OFFSET_H      0x77
00133 #define XA_OFFSET_L      0x78
00134 #define YA_OFFSET_H      0x7A
00135 #define YA_OFFSET_L      0x7B
00136 #define ZA_OFFSET_H      0x7D
00137 #define ZA_OFFSET_L      0x7E
00138 // ===================  Importat values
00139 #define AK8963_I2C_ADDR  0x0C
00140 #define AK8963_RESET     0x01// @ CNTL2
00141 #define MPU9250_WHOAMI_DEFAULT_VALUE 0x71 // 고유번호
00142 #define AK8963_WHOAMI_DEFAULT_VALUE 0x48
00143 #define SPI_LS_CLOCK    15000000  // 1 MHz
00144 #define SPI_HS_CLOCK    15000000 // 15 MHz
00145 #define I2C_READ_FLAG    0x80 // for all I2C
00146 #define SPI_READ         0x80 //SPI READ
00147 #define I2C_MST_EN      0x20 // @ USER_CTRL
00148 #define I2C_MST_CLK      0x0D // @I2C_MST_CTRL  400KHz 
00149 #define I2C_SLV0_EN     0x80  //  @I2C_SLV0_CTRL   slave 0 enable
00150 #define CLOCK_SEL_PLL    0x01 // @ PWR_MGMNT_1
00151 #define PWR_RESET       0x80 //  @ PWR_MGMNT_1
00152 #define SEN_ENABLE      0x00  // @ PWR_MGMNT_2
00153 // some conversion
00154 #ifndef M_PI
00155 #define M_PI 3.14159265358979323846
00156 #endif
00157 #define DEG_TO_RAD    ( M_PI /180)
00158 #define RAD_TO_DEG    (180/M_PI)
00159 #define TWO_PI         (2*M_PI)  
00160 // complementary filter
00161 
00162 
00163 
00164 #endif // MPU9250REGISTERMAP_H