文章目录
前言
MPU6050作为最常用的6轴运动跟踪器件,其寄存器配置直接影响传感器性能和功能实现。本文将深入解析关键寄存器,并使用逻辑分析仪抓取信号进行分析。
一、MPU6050数据手册分析
1.1 关键参数详解
陀螺仪与加速度计量程:
说明一:
- MPU6050 陀螺仪的可选量程范围直接影响测量的精度、灵敏度和动态范围(±250、±500、±1000、±2000)
- ±250°/s:适合测量缓慢运动(如人体动作)、±2000°/s:适合测量快速旋转(如无人机特技)
- 较小量程噪声更低,信噪比更好、较大量程在高速测量时噪声影响相对较小
更高的量程=更宽的测量范围但更低的精度,更低的量程=更高的精度但更容易饱和。最佳选择取决于具体应用场景的转速范围要求
说明二:
- MPU6050 加速度计的可编程量程范围直接影响测量精度、动态范围和灵敏度(±2g、±4g、±8g、±16g)
- ±2g模式下每g对应16,384 LSB,理论可检测0.06mg变化、±16g模式下每g仅对应2,048 LSB,最小检测约0.5mg
- ±2g:适合微小振动检测(如:计步器)、±16g:适合高冲击环境(如:碰撞检测)
较大的量程会降低信噪比,但可以避免数据饱和;较小的量程提供更高精度,但容易在剧烈运动时溢出。
电压范围:
说明:
- MPU6050的VDD供电电压为2.375~3.46V。
从机地址:
说明:
- MPU6050作为从机时地址可选,根据AD0引脚电平进行确认。
高电平:0x68; 低电平:0x69
默认低电平(0x68)
1.2 协议与寄存器详解
I2C操作的基本规则
信号线 | 主设备控制内容 | 从设备控制内容 | 从设备控制内容 |
---|---|---|---|
SCL | 产生时钟信号 | 时钟拉伸(Clock Stretching) | 上升沿采样数据,下降沿改变数据 |
SDA | 起始/停止条件、地址/数据 | 应答信号(ACK)和数据传输 | 仅在 SCL 低电平时改变 SDA |
I2C通讯开始(S)和结束(P)标志:
当 SCL 线为高电平时,SDA 线由高到低的下降沿,为传输开始标志(S)。直到主设备发出结束信号(P),否则总线状态一直为忙。结束标志(P)规定为,当 SCL 线为高电平时,SDA 线由低到高的上升沿。
I2C应答:
真正的应答信号由从设备发出,在时钟为高时,通过拉低并保持 SDA
的值来实现。
如果从设备忙,它可以使 SCL 保持在低电平,这会强制使主设备进入等待状态。当从设备空闲后,并且释放时钟线,原来的数据传输才会继续。
I2C数据传输:
开始标志(S)发出后,主设备会传送一个 7 位的 Slave 地址,并且后面跟着一个第 8位
,称为 Read/Write 位。R/W 位表示主设备是在接受从设备的数据还是在向其写数据。然后,主设备释放 SDA 线,等待从设备的应答信号(ACK)。每个字节的传输都要跟随有一个应答位。应答产生时,从设备将 SDA 线拉低并且在 SCL 为高电平时保持低。数据传输总是以停止标志(P)结束,然后释放通信线路。然而,主设备也可以产生重复的开始信号去操作另一台从设备,而不发出结束标志。综上可知,所有的 SDA 信号变化都要在 SCL 时钟为低电平时进行,除了开始和结束标志。
说明:
-
第一帧数据帧由7位地址与1位 Read/Write 位拼凑而成。
-
低电平 地址:0x68->写:0xD0 读:0xD1
-
高电平 地址:0x69->写:0xD2 读:0xD3
单字节写入时序:
多字节写入时序
单字节读出时序
多字节读出时序
信号说明
关键寄存器:
1.采样率分频寄存器:
说明:
The Sample Rate is generated by dividing the gyroscope output rate by SMPLRT_DIV:
Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV)
where Gyroscope Output Rate = 8kHz when the DLPF is disabled (DLPF_CFG = 0 or 7), and 1kHz when the DLPF is enabled (see Register 26).
2.陀螺仪配置寄存器:
说明:
Parameters:
XG_ST SET 1 to reset X axis gyroscope
YG_ST Y SET 1 to axis gyroscope
ZG_ST SET 1 to Z axis gyroscope
FS_SEL full scale range of gyroscopes.(± 250 °/s、± 500 °/s、± 1000 °/s、± 2000 °/s)
3.加速度配置寄存器:
说明:
Parameters:
XA_ST SET 1 to reset X- Axis.
YA_ST SET 1 to reset Y- Axis
ZA_ST SET 1 to reset Z- Axis
AFS_SEL full scale range of accelerometers.
4.数据寄存器:
说明:分别是加速度、温度、陀螺仪的16位数据(高8位,低8位)读取
4.电源管理:
说明:Bit6为睡眠位,可搭配使用Zephyr的电源管理模块,实现功耗控制
二、逻辑分析仪抓取分析
第一通道为SCL时钟线,第二通道为SDA数据线。时序类型为:多字节读出时序
,请对照时序图理解通讯帧。
起始帧
说明:
- S->在CLK为高电平时,SDA拉低表示通讯开始
- Address write:D0->从机0x68(7位)+0(写)
- ACK->在时钟为高时,通过拉低并保持 SDA
- Data write->写入数据寄存器初速地址,等待回答
- Sr->重复通讯开始动作
数据段
说明:
- Address read D1->从机0x68(7位)+1(读)
- ACK->在时钟为高时,通过拉低并保持 SDA
- Date->从0x3B开始按高8位,低8位一直往下读
结尾段
说明:
- NACK->在时钟为高时,通过拉高SDA,表示这是最后一帧。
- P->在CLK为高电平时,SDA拉低表示通讯结束
总结
通过上文对寄存器的理解与信号的抓取,能对驱动的编写与实现更加印象深刻。
注意:本文分析为轮训模式,若触发模式为中断模式,请参考并添加中断相关寄存器。
参考资料:
MPU6050中文手册
立创MPU6050商城英文手册