STM32通过IIC读取MPU6050原始数据过程详解

STM32通过IIC读取MPU6050数据过程详解

一:硬件介绍
在这里插入图片描述

在这里插入图片描述此款MPU6050是通过IIC来与MCU通信的,它有两个IIC接口,第一个是主IIC,通过SCL和SDA两条线与MCU通信;第二个辅助IIC通道,通过AUX_CL和AUX_DA连接外部从设备,比如磁传感器,这样就可以组成一个九轴传感器。VLOGIC 是 IO 口电压,该引脚最低可以到 1.8V,我们一般直接接 VDD 即可。AD0 是从 IIC 接口(接 MCU)的地址控制引脚,该引脚控制IIC 地址的最低位。如果接 GND,则 MPU6050 的 IIC 地址是:0X68,如果接 VDD,则是0X69,注意:这里的地址是不包含数据传输的最低位的(最低位用来表示读写)!!

这里是 ATK-MPU6050 模块与MiniSTM32F103 开发板的连接。ATK-MPU6050 模块原理图如下图所示:
在这里插入图片描述从上图可知,ATK-MPU6050 模块,通过 P1 排针与外部连接,引出了 VCC、GND、IIC_SDA、IIC_SCL、MPU_INT 和MPU_AD0 等信号,其中,IIC_SDA 和 IIC_SCL 带了 4.7K上拉电阻,外部可以不用再加上拉电阻了,另外 MPU_AD0 自带了 10K 下拉电阻,当 AD0悬空时,默认 IIC 地址为(0X68)
引脚说明:
在这里插入图片描述

二:相关寄存器介绍

1:电源管理寄存器(0x6B)
在这里插入图片描述
该寄存器的地址为0x6B,其中DEVICE_RESET 位用来控制复位,设置为 1,复位 MPU6050,复位结束后,MPU硬件自动清零该位。SLEEEP 位用于控制 MPU6050 的工作模式,复位后,该位为 1,即进入了睡眠模式(低功耗),所以我们要清零该位,以进入正常工作模式。TEMP_DIS 用于设置是否使能温度传感器,设置为 0,则使能。最后 CLKSEL[2:0]用于选择系统时钟源,选择关系如表 1.1.1 所示:
在这里插入图片描述在这里插入图片描述默认是使用内部 8M RC 晶振的,精度不高,所以我们一般选择 X/Y/Z 轴陀螺作为参考的 PLL 作为时钟源,一般设置 CLKSEL=001 即可.

2:陀螺仪配置寄存器(0x1B)
在这里插入图片描述该寄存器地址为:0X1B, 其中FS_SEL[1:0]这两个位用于设置陀螺仪的满量程范围:0,±250°/S;1,±500°/S;2,±1000°/S;3,±2000°/S;我们一般设置为 3,即±2000°/S,因为陀螺仪的 ADC 为 16 位分辨率,所以得到灵敏度为:65536/4000=16.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值