似乎我找不到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
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLxQjN1ATMxkTMzETNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
注:當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(數字低通濾波器)
27.GYRO_CONFIG
28.ACCEL_CONFIG
29.ACCEL_CONFIG_2
DLPF濾波器塊的資料輸出速率可以通過1/(1+SMPLRT_DIV)的因子進一步降低,其中SMPLRT_DIV是8位整數。
36.I2C_MST_CTRL
自己讀英文版的寄存器描述,中文都是手動翻譯的。如有錯誤之處,請大家指正。