硬件乐高的NXT主机,MPU9150模块(淘宝上买的);
软件ROBOT C 3.62,I2C端配置成CUS FAST模式(约为4K速率).
初始化代码:
I2C_Write(S2,3,Adr,MPU9150_PWR_MGMT_1,0x80,0); //RESET唤醒
wait1Msec(100);
I2C_Write(S2,3,Adr,MPU9150_SMPLRT_DIV,0x00,0);
wait1Msec(100);
I2C_Write(S2,3,Adr,MPU9150_CONFIG,0x00,0);
wait1Msec(100);
I2C_Write(S2,3,Adr,MPU9150_GYRO_CONFIG,0x18,0); //gyro 2000
wait1Msec(100);
I2C_Write(S2,3,Adr,MPU9150_ACCEL_CONFIG,0x08,0); //accel 4g
wait1Msec(50);
//以下三行初始化磁力计并找打开进入单次测量模式
I2C_Write(S2,3,Adr,MPU9150_Bypass_Enable_CFG,0x02,0); //Bypass_Enable_CFG enable
wait1Msec(50);
I2C_Write(S2,3,Adr,MPU9150_USER_CTRL,0x00,0); //关闭I2C MASTER模式
wait1Msec(50);
I2C_Write(S2,3,AK8975_I2C_ADDR,AK8975_CNTL,0x01,0); //开启COMPASS :single measurement mode
wait1Msec(100);
}//end off init MPU9150
如果不读磁力计AK8975,完全没有问题,GYRO和ACCEL是和MPU6050一样的,挺好用的!但是我想用MPU9150的磁力计所以才买9150的,每次DEBUG到 I2C_Write(S2,3,AK8975_I2C_ADDR,AK8975_CNTL,0x01,0); 这行时,I2C端口返回的就不是NO-ERR,初始化就失败,已经查了三天了,没有任何进展........
现在怀疑是不是硬件电路上有问题,NXT要求上拉是82K,我的模块只有10K,昨天试了一下换成50K,一样不行!是不是还有其他硬件部份要注意,(但是,其他模块接到NXT上,我从不都不改上拉的,一直很正常)......
走过路过的出出主意吧......三个晚上,为了它,球都没有看........
|