当我的MPU6050断开连接并复位时,我想处理这种情况。不幸的是,在重新调试后,MPU6050显示俯仰和滚转值为0,并在~1-2s后稳定。我想通过在重置之前写入最后读值来提示DMP。它有任何接口吗?顺便说一句,无论我将LPF配置为5或188 - 'issue'仍然存在。
解决方案
尝试记录从D_0_192
开始的16字节内存(在motion_driver_6.12
的inv_mpu_dmp_motion_driver.c
中定义)。
unsigned short buf[16];
mpu_read_mem(D_0_192, 16, buf);
// your chosen method of logging this buffer
我的mpu_set_dmp_state(1)
后不久是这样的:
3fffdfeb 003eb3b6 000d2278 00002f3c
像这样稳定15秒后:
1e246556 386e559d 01b407b2 004d6ad9
如果使用mpu6050的设备上下颠倒启动,则读数稳定需要大约这么长时间。
读数稳定后,将该值记录为常数,并在DMP设置时将其写回相同的位置:
mpu_write_mem(D_0_192, 16, buf);
<标题>我记录了inv_mpu_dmp_motion_driver.c
中提到的一些DMP的内容,但未引用/未记录的寄存器,认为它们可能在某个地方暴露了DMP状态的这一部分。我是在给mpu_set_dmp_state(1)
打了一个电话后这样做的。
我发现一些值在DMP运行时发生了变化。D_0_192
,我认为是对应于态度的内部状态,可以通过其缓慢的松弛时间来识别。我还没有花时间去解读里面的内容。我只复制了缓冲区并观察了预期的结果——DMP fifo的内容从记录的姿态开始。
免责声明这是未记录的,可能是非常错误的,并且肯定是脆弱的(未经在motion_driver_6.12
中包含的DMP固件blob以外的任何东西上测试)。使用风险自负。