最近在调试 MPU6050模块,在F4上还能跑起来,但程序移植到L151上时就报错:Unsupported software product rev 6。找了好多资料也没有具体的解决方案,对比了F4上的程序和L151上的程序,确认没有什么重大区别。
另外,用探索者板子板载的MPU6050启动很快,dmp初始化一下就OK, 但用外置MPU6050模块挂在探索者板子上,有时需要初始化5,6下有时几分钟才通过,就是下面这块代码:
while((mpu_dmp_init()))
{
LCD_ShowString(30,130,200,16,16,"MPU6050 Error");
delay_ms(200);
LCD_Fill(30,130,239,130+16,WHITE);
delay_ms(200);
}
printf("MPU6050 OK\r\n");
这个模块难道对硬件的要求这么高吗?
“Unsupported software product rev 6“ 这个报警在代码:
/* 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);
printf("data: %02x,%02x,%02x,%02x,%02x,%02x\r\n", data[0],data[1],data[2],data[3],data[4],data[5]);
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.\r\n", rev);
return -1;
}
}
I2C读写没有问题,不然前面就报错了。st.reg->accel_offs 在代码中的值为0x06, 在MPU6050的寄存器手册中没有看到这个寄存器?寄存器是从0X0D~0X75啊。
返回的数值为 data: f6,b0,fd,ff,ff,ff, 算出来rev的值就是6.
为什么F4上就行,L151上就不行了?这个Unsupported software product rev 6 是什么鬼?
|