【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控制其扩展设备