[四轴技术交流] mpu9250数据读取疑问

[复制链接]
10273|7
 楼主| 浮木无文 发表于 2015-4-3 17:15 | 显示全部楼层 |阅读模式
用SPI协议读mpu9250时,发现别人的程序上读取数据时只用了这个函数
  1. MPU9250_ReadRegs(MPU6500_ACCEL_XOUT_H, ReadBuf, 14);
但是这只读到陀螺仪寄存器,并没有读磁力计AK8963,
  1. void IMU_Read( void )
  2. {
  3.   u8 ReadBuf[24] = {0};

  4.   MPU9250_Read(ReadBuf);

  5.   Acc.X = (s16)Byte16(ReadBuf[0],  ReadBuf[1]);   // Acc_X
  6.   Acc.Y = (s16)Byte16(ReadBuf[2],  ReadBuf[3]);   // Acc_Y
  7.   Acc.Z = (s16)Byte16(ReadBuf[4],  ReadBuf[5]);   // Acc_Z
  8.   Gyr.X = (s16)Byte16(ReadBuf[8],  ReadBuf[9]);   // Gyr_X
  9.   Gyr.Y = (s16)Byte16(ReadBuf[10], ReadBuf[11]);  // Gyr_Y
  10.   Gyr.Z = (s16)Byte16(ReadBuf[12], ReadBuf[13]);  // Gyr_Z
  11.   Mag.X = (s16)Byte16(ReadBuf[15], ReadBuf[14]);  // Mag_X
  12.   Mag.Y = (s16)Byte16(ReadBuf[17], ReadBuf[16]);  // Mag_Y
  13.   Mag.Z = (s16)Byte16(ReadBuf[19], ReadBuf[18]);  // Mag_Z
  14. //  Temp  = (s16)Byte16(ReadBuf[6],  ReadBuf[7]);   // Temp

  15.   Acc.TrueX = Acc.X* MPU9250A_4g;      // g/LSB
  16.   Acc.TrueY = Acc.Y* MPU9250A_4g;      // g/LSB
  17.   Acc.TrueZ = Acc.Z* MPU9250A_4g;      // g/LSB
  18.   Gyr.TrueX = Gyr.X* MPU9250G_2000dps; // dps/LSB
  19.   Gyr.TrueY = Gyr.Y* MPU9250G_2000dps; // dps/LSB
  20.   Gyr.TrueZ = Gyr.Z* MPU9250G_2000dps; // dps/LSB
  21.   Mag.TrueX = Mag.X* MPU9250M_4800uT;  // uT/LSB
  22.   Mag.TrueY = Mag.Y* MPU9250M_4800uT;  // uT/LSB
  23.   Mag.TrueZ = Mag.Z* MPU9250M_4800uT;  // uT/LSB
  24. }
而在计算时计算了磁力计,而且mpu6500与AK8963寄存器地址是重叠的,怎么区分;
 楼主| 浮木无文 发表于 2015-4-4 16:24 | 显示全部楼层
用9250和9150哪个更好呢
陆丽华 发表于 2015-4-24 15:47 | 显示全部楼层
楼主你的问题解决没?我现在也是这个问题,SPI可以读取加速度和陀螺仪,但磁强计读取不到。如何区分重叠的地址呢?难道磁强计只能用I2C通信吗?楼主有方法的话 请告之,急!非常感谢。
木乃晗 发表于 2015-10-2 09:52 | 显示全部楼层
我可以读出它的数据,挺稳定的,但不知道怎样使用电子罗盘的数据,大神们是怎样处理的

评论

你好,我也遇到了你这样的问题,大神你后来是怎么处理的?  发表于 2019-4-19 09:38
1030981660 发表于 2015-12-3 22:51 | 显示全部楼层
陆丽华 发表于 2015-4-24 15:47
楼主你的问题解决没?我现在也是这个问题,SPI可以读取加速度和陀螺仪,但磁强计读取不到。如何区分重叠的 ...

您好!请问您还有SPI读取加速度和陀螺仪的代码吗?卡了好几天都没成功,可以给我参考下吗?谢谢!1030981660@qq.com
klchongzi 发表于 2015-12-19 14:41 | 显示全部楼层
也调了好几天,终于搞定了,用内部I2C MASTER 转发,slv4单字节读写AK88963寄存器,用SLV0接收数据到EXT_SENS_DATA_,然后可以随时和加速度陀螺仪数据一起读出
caishichang 发表于 2015-12-28 21:56 | 显示全部楼层
klchongzi 发表于 2015-12-19 14:41
也调了好几天,终于搞定了,用内部I2C MASTER 转发,slv4单字节读写AK88963寄存器,用SLV0接收数据到EXT_SE ...

你好,我想问下,那个电子罗盘的地址是0x0C吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部