天天看點

MPU6500寄存器映射及說明

似乎我找不到MPU6500中文版的寄存器描述,但發現英文版的也不是不能看懂,整理并分享之。

mpu6500_reg.h

寄存器位址宏定義

#ifndef __MPU6500_REG__H
#define __MPU6500_REG__H

/*此六個寄存器中的值表示在制造測試過程中産生的自測試輸出。此值用于檢查最終使用者執行的後續自測試輸出*/
#define MPU6500_SELF_TEST_XG        (0x00)
#define MPU6500_SELF_TEST_YG        (0x01)
#define MPU6500_SELF_TEST_ZG        (0x02)
#define MPU6500_SELF_TEST_XA        (0x0D)
#define MPU6500_SELF_TEST_YA        (0x0E)
#define MPU6500_SELF_TEST_ZA        (0x0F)

/*此六個寄存器用于消除陀螺儀輸出中的直流偏置。在進入傳感器寄存器之前,将此寄存器中的值添加到陀螺儀傳感器值中。*/
#define MPU6500_XG_OFFSET_H         (0x13)
#define MPU6500_XG_OFFSET_L         (0x14)
#define MPU6500_YG_OFFSET_H         (0x15)
#define MPU6500_YG_OFFSET_L         (0x16)
#define MPU6500_ZG_OFFSET_H         (0x17)
#define MPU6500_ZG_OFFSET_L         (0x18)

/*除以内部采樣率(see register CONFIG)生成控制傳感器資料輸出速率的采樣率,FIFO采樣率.此寄存器隻有在FCHOICE=2‘b11(FCHOICE_B寄存器位為2’b00)和(0<DLPF_CFG<7)時才有效
采樣率=内部采樣率/(1+SMPLRT_DIV),内部采樣率=1 kHz*/
#define MPU6500_SMPLRT_DIV          (0x19)

/*四個配置寄存器說明如下文所示*/
#define MPU6500_CONFIG              (0x1A)
#define MPU6500_GYRO_CONFIG         (0x1B)
#define MPU6500_ACCEL_CONFIG        (0x1C)
#define MPU6500_ACCEL_CONFIG_2      (0x1D)

/*低功率加速度計ODR控制寄存器*/
#define MPU6500_LP_ACCEL_ODR        (0x1E)

/*此寄存器儲存x/y/z中斷傳回值*/
#define MPU6500_MOT_THR             (0x1F)

/*FIFO使能寄存器。若置1,則将對應資料以采樣頻率寫入FIFO*/
#define MPU6500_FIFO_EN             (0x23)

/*IIC主裝置控制器,見下文*/
#define MPU6500_I2C_MST_CTRL        (0x24)

/*IIC從裝置相關寄存器*/
#define MPU6500_I2C_SLV0_ADDR       (0x25)
#define MPU6500_I2C_SLV0_REG        (0x26)
#define MPU6500_I2C_SLV0_CTRL       (0x27)
#define MPU6500_I2C_SLV1_ADDR       (0x28)
#define MPU6500_I2C_SLV1_REG        (0x29)
#define MPU6500_I2C_SLV1_CTRL       (0x2A)
#define MPU6500_I2C_SLV2_ADDR       (0x2B)
#define MPU6500_I2C_SLV2_REG        (0x2C)
#define MPU6500_I2C_SLV2_CTRL       (0x2D)
#define MPU6500_I2C_SLV3_ADDR       (0x2E)
#define MPU6500_I2C_SLV3_REG        (0x2F)
#define MPU6500_I2C_SLV3_CTRL       (0x30)
#define MPU6500_I2C_SLV4_ADDR       (0x31)
#define MPU6500_I2C_SLV4_REG        (0x32)
#define MPU6500_I2C_SLV4_DO         (0x33)
#define MPU6500_I2C_SLV4_CTRL       (0x34)
#define MPU6500_I2C_SLV4_DI         (0x35)

/*IIC  主裝置狀态寄存器*/
#define MPU6500_I2C_MST_STATUS      (0x36)
/*三個中斷相關寄存器*/
#define MPU6500_INT_PIN_CFG         (0x37)
#define MPU6500_INT_ENABLE          (0x38)
#define MPU6500_INT_STATUS          (0x3A)

/*這14個寄存器存儲加速度、陀螺儀、溫度的原始資料*/
#define MPU6500_ACCEL_XOUT_H        (0x3B)
#define MPU6500_ACCEL_XOUT_L        (0x3C)
#define MPU6500_ACCEL_YOUT_H        (0x3D)
#define MPU6500_ACCEL_YOUT_L        (0x3E)
#define MPU6500_ACCEL_ZOUT_H        (0x3F)
#define MPU6500_ACCEL_ZOUT_L        (0x40)
#define MPU6500_TEMP_OUT_H          (0x41)
#define MPU6500_TEMP_OUT_L          (0x42)
#define MPU6500_GYRO_XOUT_H         (0x43)
#define MPU6500_GYRO_XOUT_L         (0x44)
#define MPU6500_GYRO_YOUT_H         (0x45)
#define MPU6500_GYRO_YOUT_L         (0x46)
#define MPU6500_GYRO_ZOUT_H         (0x47)
#define MPU6500_GYRO_ZOUT_L         (0x48)

/*這24個寄存器存儲IIC從裝置(0、1、2和3)通過輔助IIC接口,從外部傳感器讀取的資料
從機裝置4讀取的資料存放在I2C_SLV4_DI中(寄存器53)*/
#define MPU6500_EXT_SENS_DATA_00    (0x49)
#define MPU6500_EXT_SENS_DATA_01    (0x4A)
#define MPU6500_EXT_SENS_DATA_02    (0x4B)
#define MPU6500_EXT_SENS_DATA_03    (0x4C)
#define MPU6500_EXT_SENS_DATA_04    (0x4D)
#define MPU6500_EXT_SENS_DATA_05    (0x4E)
#define MPU6500_EXT_SENS_DATA_06    (0x4F)
#define MPU6500_EXT_SENS_DATA_07    (0x50)
#define MPU6500_EXT_SENS_DATA_08    (0x51)
#define MPU6500_EXT_SENS_DATA_09    (0x52)
#define MPU6500_EXT_SENS_DATA_10    (0x53)
#define MPU6500_EXT_SENS_DATA_11    (0x54)
#define MPU6500_EXT_SENS_DATA_12    (0x55)
#define MPU6500_EXT_SENS_DATA_13    (0x56)
#define MPU6500_EXT_SENS_DATA_14    (0x57)
#define MPU6500_EXT_SENS_DATA_15    (0x58)
#define MPU6500_EXT_SENS_DATA_16    (0x59)
#define MPU6500_EXT_SENS_DATA_17    (0x5A)
#define MPU6500_EXT_SENS_DATA_18    (0x5B)
#define MPU6500_EXT_SENS_DATA_19    (0x5C)
#define MPU6500_EXT_SENS_DATA_20    (0x5D)
#define MPU6500_EXT_SENS_DATA_21    (0x5E)
#define MPU6500_EXT_SENS_DATA_22    (0x5F)
#define MPU6500_EXT_SENS_DATA_23    (0x60)

/*IIC從裝置資料輸出寄存器*/
#define MPU6500_I2C_SLV0_DO         (0x63)
#define MPU6500_I2C_SLV1_DO         (0x64)
#define MPU6500_I2C_SLV2_DO         (0x65)
#define MPU6500_I2C_SLV3_DO         (0x66)

#define MPU6500_I2C_MST_DELAY_CTRL  (0x67)
#define MPU6500_SIGNAL_PATH_RESET   (0x68)
#define MPU6500_MOT_DETECT_CTRL     (0x69)
#define MPU6500_USER_CTRL           (0x6A)

/*電源管理寄存器,用于配置MPU6500時鐘源,控制傳感器失能等*/
#define MPU6500_PWR_MGMT_1          (0x6B)
#define MPU6500_PWR_MGMT_2          (0x6C)

/*記錄寫入到FIFO的位元組數*/
#define MPU6500_FIFO_COUNTH         (0x72)
#define MPU6500_FIFO_COUNTL         (0x73)

/*用于從FIFO緩沖區讀寫資料*/
#define MPU6500_FIFO_R_W            (0x74)

/*存儲一個8位資料,用于驗證裝置的标示*/
#define MPU6500_WHO_AM_I            (0x75)	// mpu6500 id = 0x70

/*此六個寄存器用于消除加速度計輸出中的直流偏置。在進入傳感器寄存器之前,将此寄存器中的值添加到加速度計傳感器值中。*/
#define MPU6500_XA_OFFSET_H         (0x77)
#define MPU6500_XA_OFFSET_L         (0x78)
#define MPU6500_YA_OFFSET_H         (0x7A)
#define MPU6500_YA_OFFSET_L         (0x7B)
#define MPU6500_ZA_OFFSET_H         (0x7D)
#define MPU6500_ZA_OFFSET_L         (0x7E)
	
#define MPU6500_ID					(0x70)	
#define MPU_IIC_ADDR				0x68

#endif
           

26.CONFIG

MPU6500寄存器映射及說明

注:當FCHOICE_B[1:0]=2b’00時,DLPF由DLPF_CFG配置。陀螺儀和溫度傳感器根據DLPF_CFG和FCHOICE_B的值進行過濾,如下表所示。請注意,FCHOICE是FCHOICE_B的相反值(例如:FCHOICE=2b’00與FCHOICE_B=2b’11相同)

DLPF: Digital low pass filter(數字低通濾波器)

MPU6500寄存器映射及說明

27.GYRO_CONFIG

MPU6500寄存器映射及說明

28.ACCEL_CONFIG

MPU6500寄存器映射及說明

29.ACCEL_CONFIG_2

MPU6500寄存器映射及說明

DLPF濾波器塊的資料輸出速率可以通過1/(1+SMPLRT_DIV)的因子進一步降低,其中SMPLRT_DIV是8位整數。

MPU6500寄存器映射及說明

36.I2C_MST_CTRL

MPU6500寄存器映射及說明

自己讀英文版的寄存器描述,中文都是手動翻譯的。如有錯誤之處,請大家指正。