问题出在移植的DMP库里面 在走mpu_dmp_get_data()的时候,里面有个mpu_read_fifo_stream()函数,里面有个if语句是这样的
if (fifo_count > (st.hw->max_fifo >> 1)) {
/* FIFO is 50% full, better check overflow bit. */
if (i2c_read(st.hw->addr, st.reg->int_status, 1, tmp))
return -1;
if (tmp[0] & BIT_FIFO_OVERFLOW) {
mpu_reset_fifo();
return -2;
}
}
问题出在里面第二个if,直接return2了,函数前有这么一段注释
Get one unparsed packet from the FIFO.
* This func
tion should be used if the packet is to be parsed elsewhere.
* @param[in] length Length of one FIFO packet.
* @param[in] data FIFO packet.
* @param[in] more Number of remaining packets.
意思大概是获得一个不符合语法的FIFO包,但我不懂那段if的含义 也不知道怎么改,请大佬讲解
还想问一下 mpu_dmp_get_data()和mpu_mpl_get_data()有什么区别?