【I2C】MPU6050介绍

一、MPU6050简介
  • MPU6050 是一个 6 轴姿态传感器,可以测量芯片自身 X Y Z 轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景
    • 6 轴—— 3 轴加速度、 3 角速度
    • 9 轴—— 3 轴加速度、 3 角速度、 3 轴磁场强度
    • 10 轴—— 3 轴加速度、 3 角速度、 3 轴磁场强度、1个气压强度
  • 3 轴加速度计( Accelerometer ):测量 X Y Z 轴的加速度
  • 3 轴陀螺仪传感器( Gyroscope ):测量 X Y 、Z轴的角速度


二、MPU6050参数
  • 16 ADC 采集传感器的模拟信号,量化范围: -32768~32767
  • 加速度计满量程选择: ±2 ±4 ±8 ±16 g
  • 陀螺仪满量程选择: ±250 ±500 ±1000 ±2000 °/sec
  • 可配置的数字低通滤波器
  • 可配置的时钟源
  • 可配置的采样分频
  • I2C 从机地址: 110100 0 AD0=0 )   //AD0是板子引出来的一个引脚以调节I2C从机地址的最低位
                               110100 1(AD0=1)
  • 在程序中有两种用十六进制表示的方式
    • 方式一:把7位二进制数(110 1000)转换为十六进制 (0x68)作为从机地址
      • 发送第一个字节时先把0x68左移一位以留出最低位填写读写为【R/W】——( 0x68 << 1 ) | 1或者0
    • 方式二:直接把0x68左移一位后的数据 (0xD0)作为从机地址(常用)【将读写位融入到从机地址当中】
      • 发送第一个字节时——1)要写数据,直接把0xD0当作第一个字节
                                                          2)要读数据,把( 0xD0 | 0x01 )即0xD1当作第一个字节

三、硬件电路
  • MPU6050芯片的VDD供电是2.375V-3.46V,属于3.3V供电设备,不能直接接5V
    • 为了扩大供电范围——【3.3V稳压器LDO】,使输入电压可以在3.3V到5V之间,并经过稳压输出3.3V电压给芯片供电
  • VCC、GND——电源供电
  • SCL、SDA——I2C通信引脚(模块已经内置两个4.7K上拉电阻,因此接线时可以直接把SCL和SDA接在GPIO口上)
  • XCL、XDA——主机I2C通信引脚(为了扩展芯片功能,通常用于外接磁力计或者气压计)
  • AD0——从机地址最低位(接0则7位从机地址为1101000;接1则7位从机地址为1101001)
  • INT——中断输出引脚(可以配置芯片内部事件以触发中断引脚的输出)

四、MPU6050框图
  • 芯片内部传感器(灰色部分+一块白色),包括XYZ轴的加速度计,XYZ轴的陀螺仪,另外还有一个温度传感器
    • 传感器本质上相当于可变电阻,通过分压后输出模拟电压,然后通过ADC模数转换,数据存放在数据寄存器中,读取寄存器就能得到传感器测量的值
  • 每个传感器都有自测单元——验证芯片好坏
    • 启动自测后,芯片内部会模拟一个外力施加在传感器上,这个外力导致传感器数据比平时大一些
      • 自测流程:使能自测,读取数据——失能自测,读取数据——两个数据相减得到【自测响应数据】
      • 根据【自测响应数据】是否在芯片手册规定的范围内,从而判断芯片好坏
  • 右边一大块:寄存器和通信接口部分
    • 中断状态寄存器(Interrupt Status Register):控制内部哪些事件到中断引脚的输出
    • 先入先出寄存器(FIFO):对数据流进行缓存
    • 配置寄存器(Config Register):对内部各个电路进行配置
    • 传感器寄存器(Sensor Register):存储各个传感器数据
    • 工厂校准(Factory Calibration):内部传感器进行校准
    • 数字运动处理器(Digital Motion Processor):芯片内部自带的姿态解算的硬件算法
  • 从机I2C和SPI通信接口(Slave I2C and SPI Serial Interface):用于和STM32通信(MPU6000才有SPI)
  • 主机I2C通信接口(Master I2C Serial Interface):用于和MPU6050拓展设备进行通信
    • 接口旁路选择器(Serial Interface Bypass Mux)
                                1)选上面:STM32可以控制所有设备(包括MPU6050及其扩展设备 )
                                2)选下面:STM32控制MPU6050,MPU6050控制其扩展设备