【Zephyr开发实践系列】01_深扒MPU6050陀螺仪寄存器


前言

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

    单字节写入时序:
    Si
    多字节写入时序
    M
    单字节读出时序
    在这里插入图片描述
    多字节读出时序
    在这里插入图片描述
    信号说明
    信号

关键寄存器:

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商城英文手册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炸芯片的zero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值