while(mpu_dmp_get_data(&pitch,&roll,&yaw)!=0){} 就是上面这么一句话,如果读取失败,马上进行第二次读取,这时候FIFO一般没有溢出,搞定!(因为检测到FIFO溢出后会马上reset一下FIFO)。 最后上一发图: int dmp_read_fifo(short *gyro, short *accel, long *quat, unsigned long *timestamp, short *senso...
网上其他地方的说法是:“ dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors,&more)读取数据的速度要快,如果你读取的速度不够快的话,MPU的FIFO就会溢出,估计会出问题,这也是一直无法读出数据的原因。这样肯定是有问题的,所以使用这一个函数一定要放在一个定时回调函数里面,同时应该加上一些保护措施...
result = mpu_run_self_test(gyro, accel);if (result == 0x7) { /* Test passed. We can ...
执行 if(mpu_read_fifo_stream(dmp.packet_length,fifo_data,more)) 这个判断的时候,fifo数据已经进入...
mpu_read_fifo_stream() --> mpu_reset_fifo() 看到了吧,这里有个50ms的延时,对于实时操作系统来说,50ms的延时就好像是一万年,所以果断把这句代码删掉。我之后也对比过其他stm32厂商的MPU6050初始化代码,都没有这个50ms的延时,可见这是正点原子加进去的。
#include “inv_mpu.h”#include 《string.h》int main(){ short Templ;short Gx,Gy,Gz;short ...
}//找到inv_mpu.c中的:intmpu_read_fifo_stream(unsignedshortlength, unsignedchar*data, unsignedchar*more) { unsignedchartmp[2]; unsignedshortfifo_count;if(!st.chip_cfg.dmp_on)return-1;if(!st.chip_cfg.sensors)return-1;if(i2c_read(st.hw->addr, st.reg->fifo_count_h,2, tmp))return-...
追踪进去显示在函数mpu_read_fifo_stream(unsigned short length, unsigned char *data, unsigned char *...
• int mpu_read_fifo (short gyro, short accel, unsigned long timestamp, un- signed char sensors, unsigned char more) Get one packet from the FIFO. • int mpu_read_fifo_stream (unsigned short length, unsigned char data, unsigned char more) Get one unparsed packet from the FIFO....
DEVICE_RESET位用来控制复位,设置为1,复位MPU6050,复位结束后,MPU硬件自动清零该位;SLEEEP位用于控制MPU6050的工作模式,复位后,该位为1,即进入了 20、睡眠模式(低功耗),所以我们要清零该位,以进入正常工作模式;TEMP_DIS用于设置是否使能温度传感器,设置为0,则使能;CLKSEL2:0用于选择系统时钟源,选择关系如表 5.2.4...