GY-521模块--MPU6050芯片基本学习(一)
学习前沿
今天是好好学习的一天
一、模块介绍
GY-521模块实物:
GY-521模块电路图:
我们可以看到模块一共印出了8个IO口,其中:
- VCC、GND分别接5V电源和地;
- SCL、SDA和XCL、XDA分别是两个IIC通讯总线;(一般我们只用到第一个,具体我们后面在讲)
- AD0是模块IIC 从机地址设置引脚 【ID:0X68(悬空/接 GND); ID:0X69(接 VCC)】
- INT为中断输出引脚;
二、MPU6050
MPU6050 是 InvenSense 公司推出的全球首款整合性 6 轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了安装空间。
MPU6050 内部整合了 3 轴陀螺仪和 3 轴加速度传感器,并且含有一个第二 IIC 接口,
可用于连接外部磁力传感器,并利用自带的数字运动处理器(DMP: Digital Motion Processor)
硬件加速引擎,通过 主 IIC 接口(SCL、SDA),向应用端输出完整的 9 轴融合演算数据。有了 DMP(数字运动处理器;我们后面会提到),我们可以使用 InvenSense 公司提供的运动处理资料库,非常方便的实现姿态解算,降低了运动处理运算对操作系统的负荷,同时大大降低了开发难度。
MPU6050 的特点:
- 以数字形式输出 6 轴或 9 轴(需外接磁传感器)(通过XCL、XDA进行通信)的旋转矩阵、四元数(quaternion)、
欧拉角格式(Euler Angle forma)的融合演算数据(需 DMP 支持) - 具有 131 LSBs/° /sec 敏感度与全格感测范围为±250、±500、±1000 与±2000°
/sec 的 3 轴角速度感测器(陀螺仪) - 集成可程序控制,范围为±2g、±4g、±8g 和±16g 的 3 轴加速度传感器
- 移除加速器与陀螺仪轴间敏感度,降低设定给予的影响与感测器的飘移
- 自带数字运动处理(DMP: Digital Motion Processing)引擎可减少 MCU 复杂的融合演
算数据、感测器同步化、姿势感应等的负荷 - 内建运作时间偏差与磁力感测器校正演算技术,免除了客户须另外进行校正的需求
- 自带一个数字温度传感器(这个功能建议去使用,可以练练手)
- 带数字输入同步引脚(Sync pin)支持视频电子影相稳定技术与 GPS
- 可程序控制的中断(interrupt)(INT接口的功能),支持姿势识别摇摄、画面放大缩小、滚动、快速下降中断、high-G 中断、零动作感应、触击感应、摇动感应功能
- VDD 供电电压为 2.5V±5%、3.0V±5%、3.3V±5%;VLOGIC 可低至 1.8V± 5%
- 陀螺仪工作电流:5mA,陀螺仪待机电流:5uA;加速器工作电流:500uA,加速
器省电模式电流:40uA@10Hz - 自带 1024 字节 FIFO,有助于降低系统功耗
- 高达 400Khz 的 IIC 通信接口
- 超小封装尺寸:4x4x0.9mm(QFN)
MPU6050检测轴示意图:
MPU6050之所以称之为6轴,是因为它能感应 X、Y、Z三个方向的加速度和X、Y、Z方向的角速度
MPU6050地址问题:
我们上面在介绍IO口的时候有提到根据AD0接口的状态,我们可以知道IIC通信的从机地址要么是0x68要么是0x69;然后我们根据模块的原理图得知, AD0是接地的,所以地址应该是0x68。但是我们在看代码的同时我们会发现,代码在写IIC通讯的时候,地址写的是0xD0,这是为什么呢?
我们看MUP6050的使用手册是怎么说的:
地址不包含数据传输的最低位
这表示这里的IIC地址(0x68和0x69), 只有前7位数有效。而最后一位是由我们自己根据读写来自己定义的(其中地址最后一位为0的话代表写,1则代表读)。
地址 | 二进制 |
---|---|
0x68 | 0110 1000 |
0xD0 | 1101 0000 |
0xD1 | 1101 0001 |
其实0xD0就是0x68补齐了最后一位数后得到的地址值。
三、献上驱动代码
链接: GY-521驱动(可移植STM32).