读取数据要快些读,否则会产生FIFO溢出错误。
在读取数据速度比较慢的场景中的解决办法:
读取FIFO的函数mpu_dmp_get_data
中,调用了函数
int dmp_read_fifo(short *gyro, short *accel, long *quat,
unsigned long *timestamp, short *sensors, unsigned char *more)
该函数的more变量会返回FIFO中剩余的数据包个数。
为了避免FIFO溢出导致的FIFO和DMP复位,可以使用while循环不断读取FIFO中的数据,直到more的值为0,如下:
do {
err = dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors,&more);
//ESP_LOGI("", "more = %d", more);
if(err) {
return err;
}
} while(more);