#ifndef __bsp_mpu9250_H #define __bsp_mpu9250_H #include "main.h" /* ---- MPU9250 Reg In MPU9250 ---------------------------------------------- */ #define MPU9250_I2C_ADDR ((uint8_t)0xD0) #define MPU9250_Device_ID ((uint8_t)0x71) // In MPU9250 #define MPU9250_SELF_TEST_XG ((uint8_t)0x00) #define MPU9250_SELF_TEST_YG ((uint8_t)0x01) #define MPU9250_SELF_TEST_ZG ((uint8_t)0x02) #define MPU9250_SELF_TEST_XA ((uint8_t)0x0D) #define MPU9250_SELF_TEST_YA ((uint8_t)0x0E) #define MPU9250_SELF_TEST_ZA ((uint8_t)0x0F) #define MPU9250_XG_OFFSET_H ((uint8_t)0x13) #define MPU9250_XG_OFFSET_L ((uint8_t)0x14) #define MPU9250_YG_OFFSET_H ((uint8_t)0x15) #define MPU9250_YG_OFFSET_L ((uint8_t)0x16) #define MPU9250_ZG_OFFSET_H ((uint8_t)0x17) #define MPU9250_ZG_OFFSET_L ((uint8_t)0x18) #define MPU9250_SMPLRT_DIV ((uint8_t)0x19) #define MPU9250_CONFIG ((uint8_t)0x1A) #define MPU9250_GYRO_CONFIG ((uint8_t)0x1B) #define MPU9250_ACCEL_CONFIG ((uint8_t)0x1C) #define MPU9250_ACCEL_CONFIG_2 ((uint8_t)0x1D) #define MPU9250_LP_ACCEL_ODR ((uint8_t)0x1E) #define MPU9250_MOT_THR ((uint8_t)0x1F) #define MPU9250_FIFO_EN ((uint8_t)0x23) #define MPU9250_I2C_MST_CTRL ((uint8_t)0x24) #define MPU9250_I2C_SLV0_ADDR ((uint8_t)0x25) #define MPU9250_I2C_SLV0_REG ((uint8_t)0x26) #define MPU9250_I2C_SLV0_CTRL ((uint8_t)0x27) #define MPU9250_I2C_SLV1_ADDR ((uint8_t)0x28) #define MPU9250_I2C_SLV1_REG ((uint8_t)0x29) #define MPU9250_I2C_SLV1_CTRL ((uint8_t)0x2A) #define MPU9250_I2C_SLV2_ADDR ((uint8_t)0x2B) #define MPU9250_I2C_SLV2_REG ((uint8_t)0x2C) #define MPU9250_I2C_SLV2_CTRL ((uint8_t)0x2D) #define MPU9250_I2C_SLV3_ADDR ((uint8_t)0x2E) #define MPU9250_I2C_SLV3_REG ((uint8_t)0x2F) #define MPU9250_I2C_SLV3_CTRL ((uint8_t)0x30) #define MPU9250_I2C_SLV4_ADDR ((uint8_t)0x31) #define MPU9250_I2C_SLV4_REG ((uint8_t)0x32) #define MPU9250_I2C_SLV4_DO ((uint8_t)0x33) #define MPU9250_I2C_SLV4_CTRL ((uint8_t)0x34) #define MPU9250_I2C_SLV4_DI ((uint8_t)0x35) #define MPU9250_I2C_MST_STATUS ((uint8_t)0x36) #define MPU9250_INT_PIN_CFG ((uint8_t)0x37) #define MPU9250_INT_ENABLE ((uint8_t)0x38) #define MPU9250_INT_STATUS ((uint8_t)0x3A) #define MPU9250_ACCEL_XOUT_H ((uint8_t)0x3B) #define MPU9250_ACCEL_XOUT_L ((uint8_t)0x3C) #define MPU9250_ACCEL_YOUT_H ((uint8_t)0x3D) #define MPU9250_ACCEL_YOUT_L ((uint8_t)0x3E) #define MPU9250_ACCEL_ZOUT_H ((uint8_t)0x3F) #define MPU9250_ACCEL_ZOUT_L ((uint8_t)0x40) #define MPU9250_TEMP_OUT_H ((uint8_t)0x41) #define MPU9250_TEMP_OUT_L ((uint8_t)0x42) #define MPU9250_GYRO_XOUT_H ((uint8_t)0x43) #define MPU9250_GYRO_XOUT_L ((uint8_t)0x44) #define MPU9250_GYRO_YOUT_H ((uint8_t)0x45) #define MPU9250_GYRO_YOUT_L ((uint8_t)0x46) #define MPU9250_GYRO_ZOUT_H ((uint8_t)0x47) #define MPU9250_GYRO_ZOUT_L ((uint8_t)0x48) #define MPU9250_EXT_SENS_DATA_00 ((uint8_t)0x49) #define MPU9250_EXT_SENS_DATA_01 ((uint8_t)0x4A) #define MPU9250_EXT_SENS_DATA_02 ((uint8_t)0x4B) #define MPU9250_EXT_SENS_DATA_03 ((uint8_t)0x4C) #define MPU9250_EXT_SENS_DATA_04 ((uint8_t)0x4D) #define MPU9250_EXT_SENS_DATA_05 ((uint8_t)0x4E) #define MPU9250_EXT_SENS_DATA_06 ((uint8_t)0x4F) #define MPU9250_EXT_SENS_DATA_07 ((uint8_t)0x50) #define MPU9250_EXT_SENS_DATA_08 ((uint8_t)0x51) #define MPU9250_EXT_SENS_DATA_09 ((uint8_t)0x52) #define MPU9250_EXT_SENS_DATA_10 ((uint8_t)0x53) #define MPU9250_EXT_SENS_DATA_11 ((uint8_t)0x54) #define MPU9250_EXT_SENS_DATA_12 ((uint8_t)0x55) #define MPU9250_EXT_SENS_DATA_13 ((uint8_t)0x56) #define MPU9250_EXT_SENS_DATA_14 ((uint8_t)0x57) #define MPU9250_EXT_SENS_DATA_15 ((uint8_t)0x58) #define MPU9250_EXT_SENS_DATA_16 ((uint8_t)0x59) #define MPU9250_EXT_SENS_DATA_17 ((uint8_t)0x5A) #define MPU9250_EXT_SENS_DATA_18 ((uint8_t)0x5B) #define MPU9250_EXT_SENS_DATA_19 ((uint8_t)0x5C) #define MPU9250_EXT_SENS_DATA_20 ((uint8_t)0x5D) #define MPU9250_EXT_SENS_DATA_21 ((uint8_t)0x5E) #define MPU9250_EXT_SENS_DATA_22 ((uint8_t)0x5F) #define MPU9250_EXT_SENS_DATA_23 ((uint8_t)0x60) #define MPU9250_I2C_SLV0_DO ((uint8_t)0x63) #define MPU9250_I2C_SLV1_DO ((uint8_t)0x64) #define MPU9250_I2C_SLV2_DO ((uint8_t)0x65) #define MPU9250_I2C_SLV3_DO ((uint8_t)0x66) #define MPU9250_I2C_MST_DELAY_CTRL ((uint8_t)0x67) #define MPU9250_SIGNAL_PATH_RESET ((uint8_t)0x68) #define MPU9250_MOT_DETECT_CTRL ((uint8_t)0x69) #define MPU9250_USER_CTRL ((uint8_t)0x6A) #define MPU9250_PWR_MGMT_1 ((uint8_t)0x6B) #define MPU9250_PWR_MGMT_2 ((uint8_t)0x6C) #define MPU9250_FIFO_COUNTH ((uint8_t)0x72) #define MPU9250_FIFO_COUNTL ((uint8_t)0x73) #define MPU9250_FIFO_R_W ((uint8_t)0x74) #define MPU9250_WHO_AM_I ((uint8_t)0x75) // ID = 0x71 In MPU9250 #define MPU9250_XA_OFFSET_H ((uint8_t)0x77) #define MPU9250_XA_OFFSET_L ((uint8_t)0x78) #define MPU9250_YA_OFFSET_H ((uint8_t)0x7A) #define MPU9250_YA_OFFSET_L ((uint8_t)0x7B) #define MPU9250_ZA_OFFSET_H ((uint8_t)0x7D) #define MPU9250_ZA_OFFSET_L ((uint8_t)0x7E) /* ---- AK8963 Reg In MPU9250 ----------------------------------------------- */ #define AK8963_I2C_ADDR ((uint8_t)0x18) #define AK8963_Device_ID ((uint8_t)0x48) // Read-only Reg #define AK8963_WIA ((uint8_t)0x00) #define AK8963_INFO ((uint8_t)0x01) #define AK8963_ST1 ((uint8_t)0x02) #define AK8963_HXL ((uint8_t)0x03) #define AK8963_HXH ((uint8_t)0x04) #define AK8963_HYL ((uint8_t)0x05) #define AK8963_HYH ((uint8_t)0x06) #define AK8963_HZL ((uint8_t)0x07) #define AK8963_HZH ((uint8_t)0x08) #define AK8963_ST2 ((uint8_t)0x09) // Write/Read Reg #define AK8963_CNTL1 ((uint8_t)0x0A) #define AK8963_CNTL2 ((uint8_t)0x0B) #define AK8963_ASTC ((uint8_t)0x0C) #define AK8963_TS1 ((uint8_t)0x0D) #define AK8963_TS2 ((uint8_t)0x0E) #define AK8963_I2CDIS ((uint8_t)0x0F) // Read-only Reg ( ROM ) #define AK8963_ASAX ((uint8_t)0x10) #define AK8963_ASAY ((uint8_t)0x11) #define AK8963_ASAZ ((uint8_t)0x12) int MPU9250_init(void); int MPU9250_Read(int16_t* acc,int16_t* gyr,int16_t* mag,int16_t* temperature); #endif