MPU6050 的寄存器
MPU6050 拥有众多寄存器,用于配置传感器、读取数据和控制其行为。理解这些寄存器是使用该芯片的关键。以下是一些最重要和最常用的寄存器及其功能概述。
目录
2.3.2 配置寄存器(SMPLRT_DIV (0x19))
2.3.3 陀螺仪配置寄存器(GYRO_CONFIG (0x1B))
2.3.4 加速度计配置寄存器(ACCEL_CONFIG (0x1C))
概述
MPU6050 拥有众多寄存器,用于配置传感器、读取数据和控制其行为。理解这些寄存器是使用该芯片的关键。以下是一些最重要和最常用的寄存器及其功能概述。
1 核心概念
地址: 每个寄存器都有一个唯一的7位地址(通常用十六进制表示,如
0x6B)。访问: 通过 I2C 总线进行读写访问。写操作用于配置,读操作用于获取数据或状态。
位操作: 寄存器通常包含多个配置位。你需要了解每个位的含义来正确设置或读取。
2 关键寄存器功能介绍
2.1 PWR_MGMT_1 (0x6B)电源管理寄存器

PWR_MGMT_1 (0x6B): 最重要的寄存器之一,其主要功能如下:
控制设备的主要电源状态和时钟源。
BIT6 (DEVICE_RESET): 置1复位整个芯片(复位后自动清零)。
BIT5 (SLEEP): 置1进入低功耗睡眠模式;置0唤醒设备。
BIT3 (CYCLE): 置1进入循环模式(低功耗周期唤醒采样)。
BIT[2:0] (CLKSEL): 选择内部时钟源。
000= 内部8MHz振荡器(默认)。
001= PLL with X axis gyroscope reference(推荐)。
010= PLL with Y axis gyroscope reference。
011= PLL with Z axis gyroscope reference。
100= PLL with external 32.768kHz reference。
101= PLL with external 19.2MHz reference。
110= 保留。
111= 停止时钟,保持时序发生器复位。
2.2 PWR_MGMT_2 (0x6C)电源管理寄存器

其主要用于控制控制加速度计和陀螺仪各个轴的待机模式,唤醒方式,其各个bit的意义如下:
控制加速度计和陀螺仪各个轴的待机模式。
BIT[5:4] (LP_WAKE_CTRL): 循环唤醒频率设置(当CYCLE=1时)。
BIT[2:0] (STBY_XA, STBY_YA, STBY_ZA): 置1使对应加速度计轴进入待机。
BIT[5:3] (STBY_XG, STBY_YG, STBY_ZG): 置1使对应陀螺仪轴进入待机。
2.3 配置寄存器
2.3.1 配置寄存器(CONFIG (0x1A))

其主要用于配置数字低通滤波器(DLPF)和外部帧同步(FSYNC)。各个bit的功能如下:
BIT[2:0] (DLPF_CFG): 设置数字低通滤波器带宽。 这个设置直接影响采样率(SMPLRT_DIV)和输出数据速率。
000= 加速度计260Hz,陀螺仪256Hz (Fs=8kHz)
001= 加速度184Hz,陀螺188Hz (Fs=1kHz)
010= 加速度94Hz,陀螺98Hz (Fs=1kHz)
011= 加速度44Hz,陀螺42Hz (Fs=1kHz)
100= 加速度21Hz,陀螺20Hz (Fs=1kHz)
101= 加速度10Hz,陀螺10Hz (Fs=1kHz)
110= 加速度5Hz,陀螺5Hz (Fs=1kHz)
111= 禁用DLPF(使用原始传感器输出)。
BIT[5:3] (EXT_SYNC_SET): 选择哪个信号输入到FSYNC引脚用于帧同步(通常不用,设为0)。
2.3.2 配置寄存器(SMPLRT_DIV (0x19))

其主要用于配置采样分频器。其使用方法如下:
采样率分频器。与
DLPF_CFG配合决定最终输出数据速率(ODR)。值范围:0-255。
ODR = Gyroscope Output Rate / (1 + SMPLRT_DIV)
Gyroscope Output Rate由DLPF_CFG决定(通常是1kHz或8kHz)。例如:
DLPF_CFG=001(Gyro ODR=1kHz),SMPLRT_DIV=9->ODR = 1000Hz / (1+9) = 100Hz。
2.3.3 陀螺仪配置寄存器(GYRO_CONFIG (0x1B))

其主要用于:配置陀螺仪的自检和量程(Full Scale Range - FSR)
BIT[7:5] (XG_ST, YG_ST, ZG_ST): 置1启用对应轴的自检(产生特定输出)。
BIT[4:3] (FS_SEL): 设置陀螺仪量程。
00= ±250 °/s
01= ±500 °/s
10= ±1000 °/s
11= ±2000 °/s (默认值)量程越大,灵敏度越低(LSB/(°/s)值越大),能测量的最大角速度越大。
2.3.4 加速度计配置寄存器(ACCEL_CONFIG (0x1C))

该寄存器用于配置:加速度计的自检和量程(Full Scale Range - FSR)。
BIT[7:5] (XA_ST, YA_ST, ZA_ST): 置1启用对应轴的自检。
BIT[4:3] (AFS_SEL): 设置加速度计量程。
00= ±2 g
01= ±4 g
10= ±8 g
11= ±16 g (默认值)量程越大,灵敏度越低(LSB/g值越大),能测量的最大加速度越大。
2.4 数据输出寄存器 (只读)



这些寄存器存储最新的传感器数据采样值。读取时通常从第一个寄存器地址开始连续读取多个字节。
ACCEL_XOUT_H(0x3B) &ACCEL_XOUT_L(0x3C): 加速度计 X 轴数据 (高8位 / 低8位)。
ACCEL_YOUT_H(0x3D) &ACCEL_YOUT_L(0x3E): 加速度计 Y 轴数据。
ACCEL_ZOUT_H(0x3F) &ACCEL_ZOUT_L(0x40): 加速度计 Z 轴数据。
TEMP_OUT_H(0x41) &TEMP_OUT_L(0x42): 温度传感器数据。
Temperature (°C) = (TEMP_OUT / 340.0) + 36.53
GYRO_XOUT_H(0x43) &GYRO_XOUT_L(0x44): 陀螺仪 X 轴数据。
GYRO_YOUT_H(0x45) &GYRO_YOUT_L(0x46): 陀螺仪 Y 轴数据。
GYRO_ZOUT_H(0x47) &GYRO_ZOUT_L(0x48): 陀螺仪 Z 轴数据。
读取顺序:
通常从
0x3B开始连续读取14个字节 (AXH, AXL, AYH, AYL, AZH, AZL, TH, TL, GXH, GXL, GYH, GYL, GZH, GZL)。
2.4 中断寄存器
1)INT_ENABLE (0x38): 使能特定的中断源

BIT0 (DATA_RDY_EN): 置1使能数据就绪中断(当有新数据可用时触发)。...其他中断源(如运动检测、自由落体等)。
2) INT_STATUS (0x3A): 读取当前中断状态(哪个中断被触发)

BIT0 (DATA_RDY_INT): 置1表示数据就绪中断已发生。
3) INT_PIN_CFG (0x37): 配置中断引脚(INT)的行为。

BIT7 (ACTL): 置1使中断引脚低电平有效(默认高电平有效)。
BIT6 (OPEN): 置1配置中断引脚为开漏输出(默认推挽)。
BIT5 (LATCH_INT_EN): 置1使中断信号锁存(需要读取INT_STATUS清除);置0为脉冲(50us)。
BIT4 (INT_RD_CLEAR): 置1表示读取INT_STATUS寄存器会自动清除所有中断标志(与锁存模式配合)。
2.5 其他重要寄存器
1) WHO_AM_I (0x75)

只读寄存器,包含设备ID(对于MPU6050通常是
0x68)。用于检查I2C通信是否正常。
2) USER_CTRL (0x6A): 用户控制功能

BIT7 (DMP_EN): 置1使能DMP(数字运动处理器)。
BIT6 (FIFO_EN): 置1使能FIFO缓冲区。
BIT5 (I2C_MST_EN): 置1使能MPU6050作为I2C主机(连接其他I2C设备,如磁力计HMC5883L/AK8963)。
BIT1 (I2C_IF_DIS): 置1禁用辅助I2C总线(如果只想用主I2C接口)。
BIT0 (SIG_COND_RESET): 置1复位所有信号路径和FIFO。
3) FIFO_EN (0x23):

控制哪些数据流(加速度计、陀螺仪、温度、辅助I2C)被写入FIFO缓冲区。
4) I2C_SLV* (0x25 - 0x40):

一组寄存器,用于配置MPU6050作为I2C主机时如何与辅助I2C设备(如磁力计)通信(设置从机地址、寄存器、读写操作等)。
5) Registers 73 to 96 – External Sensor Data : 扩展Sensor的数据寄存器

3 基本使用流程
-
初始化I2C总线。
-
检查
WHO_AM_I寄存器(0x75) 确认设备连接正常(返回0x68)。 -
唤醒设备: 写
PWR_MGMT_1寄存器(0x6B),将SLEEP位(BIT6)清零(通常同时设置CLKSEL为001)。 -
配置量程: 写
GYRO_CONFIG(0x1B)设置陀螺仪量程(FS_SEL)。写ACCEL_CONFIG(0x1C)设置加速度计量程(AFS_SEL)。 -
配置采样率和滤波器: 写
SMPLRT_DIV(0x19)设置分频系数。写CONFIG(0x1A)设置DLPF_CFG。 -
(可选) 配置中断: 如果需要数据就绪中断,配置
INT_PIN_CFG(0x37),使能DATA_RDY_EN位(BIT0)在INT_ENABLE(0x38)中。 -
循环读取数据:
-
轮询
INT_STATUS(0x3A)的DATA_RDY_INT位或等待硬件中断。 -
从
ACCEL_XOUT_H(0x3B)开始连续读取14个字节。 -
将高低字节组合成16位有符号整数。
-
根据配置的量程(
FS_SEL,AFS_SEL)将原始值转换为物理量(°/s, g)。 -
按公式转换温度数据。
-
参数配置范例:

更多推荐





所有评论(0)