一直比较忙想把自己现在手头做的好的直接移植,发现并不适合。在移植mpu6050时发现,该从设备的iic通信地址有别与现在自己使用的。
经过对比发现,原因在于设计的电路有差异。
首先,针对原理图进行排查时发现,mpu6050的AD0引脚时通过一个10k的电阻拉低了。
而后,在排查mpu的数据手册中发现。
这段的介绍,说明了这个ad0接到gnd原因是将两片mpu6050接后能够通过AD0接GND或者VCC来实现设备地址的不同,这里说明了将地址是7bits长。通过AD0配置为GND时设备地址使用了b1101000,AD0为VCC时地址则为b1101001。这样,系统中就会通过使用两个传感器。
根据iic的通信协议地址的最低一位代表着r/w。0”表示写,“1”表示读。所以I2C设备通常有两个地址,即读地址和写地址。mpu6050在图中AD0配置了GND代表了设备的写地址是0xD0,写地址为0xD1.如果AD0配置为VCC,读写地址为D3和D2.
最近,比较忙想着这个简单,结果跟我的配置完全不一样,其次,给的数据手册不是很完整,还有寄存器的说明没写清楚。这个我会继续找找。现在读到的数据只成功一次就没刷新了。还存在问题。还没找到,暂时不放驱动部分了。只分享避坑经验。