I2C设备地址关系——以MPU6050举例

转自:I2C设备、读写地址的关系

文章目录

    • 结论
    • MPU6050手册
      • MPU6050的AD0端口接低电平
      • MPU6050的AD0端口接高电平
    • MPU6050相关问题资料整理

结论

I2C设备的写地址 = I2C设备地址 << 1
I2C设备的读地址 = (I2C设备地址 << 1) + 1

MPU6050手册

链接:https://pan.baidu.com/s/1VaL6Fqdudg1G86l1tQTiKA 
提取码:qgdm

MPU6050的AD0端口接低电平

I2C设备地址关系——以MPU6050举例_第1张图片
当MPU6050的AD0端口接地以后,设备地址便是b0110_1000(即0x68

套用结论的式子
MPU6050写地址(0110_1000<<1 ) =1101_0000,即0xD0
MPU6050读地址(0110_1000<<1+1) =1101_0001,即0xD1
MPU6050基本器件读写基本地址便是

#define MPU_WRITE   0XD0//MPU6050的AD0接低电平
#define MPU_READ    0XD1//MPU6050的AD0接低电平

同理

MPU6050的AD0端口接高电平

当MPU6050的AD0端口接地以后,设备地址便是b0110_1001(即0x69
套用结论的式子
MPU6050写地址(0110_1001<<1 ) =1101_0010,即0xD2
MPU6050读地址(0110_1001<<1+1) =1101_0011,即0xD3

#define MPU_WRITE   0XD2//MPU6050的AD0接高电平
#define MPU_READ    0XD3//MPU6050的AD0接高电平

MPU6050相关问题资料整理

  1. HAL库相关代码

  2. MPU6050 读写不正确 读出来总是0Xd1
    答:基将IIC的输出模式设置为开漏输出

  3. 挂载两个MPU6050得到的地址都是0x68
    答:参见寄存器说明手册,如下图。无论AD0引脚电平是什么,器件返回值都是0x68
    I2C设备地址关系——以MPU6050举例_第2张图片

  4. MPU6050可以读取ID值,温度值和原始数据值为零
    一是在它初始化之前没有进行复位MPU6050和延时处理;这个问题添加相应函数即可,一般延时延时100ms
    二是晶振可能没焊好或坏了;这个问题用示波器检查晶振引脚就好
    三是IIC时序没有处理好;
    四是MPU6050已经坏掉了;电路玄学问题

你可能感兴趣的:(I2C设备地址关系——以MPU6050举例)