结论
I2C设备的写地址 = I2C设备地址 << 1
I2C设备的读地址 = (I2C设备地址 << 1) + 1
MPU6050手册
链接:https://pan.baidu.com/s/1VaL6Fqdudg1G86l1tQTiKA
提取码:qgdm
MPU6050的AD0端口接低电平
当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相关问题资料整理
-
MPU6050 读写不正确 读出来总是0Xd1
答:基将IIC的输出模式设置为开漏输出
-
挂载两个MPU6050得到的地址都是0x68
答:参见寄存器说明手册,如下图。无论AD0引脚电平是什么,器件返回值都是0x68
-
MPU6050可以读取ID值,温度值和原始数据值为零
一是在它初始化之前没有进行复位MPU6050和延时处理;这个问题添加相应函数即可,一般延时延时100ms
二是晶振可能没焊好或坏了;这个问题用示波器检查晶振引脚就好
三是IIC时序没有处理好;
四是MPU6050已经坏掉了;电路玄学问题