IIC直接读MPU6050数据是正确的。
在使用库时,初始化时就出错了。
int mpu_init(void)
{
unsigned char data[6], rev;
/* Reset device. */
data[0] = 0x80;//BIT_RESET;
if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 1, &(data[0])))
return -1;
delay_ms(100);
/* Wake up chip. */
data[0] = 0x00;
if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 1, &(data[0])))
return -1;
#if defined MPU6050
/* Check product revision. */
if (i2c_read(st.hw->addr, st.reg->accel_offs, 6, data))
return -1;
rev = ((data[5] & 0x01) << 2) | ((data[3] & 0x01) << 1) |
(data[1] & 0x01);
if (rev) {
/* Congrats, these parts are better. */
if (rev == 1)
st.chip_cfg.accel_half = 1;
else if (rev == 2)
st.chip_cfg.accel_half = 0;
else {
log_e("Unsupported software product rev %d.\n");
return -1;
}
}
}
我读出来的rcv = 0x07,就成了"Unsupported software product rev "直接返回
不知道问题出在哪里? |