1

当我的 MPU6050 断开并重置时,我想处理案例。不幸的是,在重新初始化 MPU6050 后,俯仰和横滚值显示为 0,并在大约 1-2 秒后以正确的值稳定下来。我想通过在重置之前写入最后读取的值来提示 DMP。它有任何接口吗?顺便说一句,无论我将 LPF 配置为 5 还是 188 - '问题' 仍然存在。

4

1 回答 1

0

解决方案

D_0_192尝试记录从(定义在inv_mpu_dmp_motion_driver.c)开始的 16 字节内存motion_driver_6.12

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);

方法

我记录了一些 DMP 提到但未引用/未记录的寄存器的内容,inv_mpu_dmp_motion_driver.c认为它们可能在某处暴露了这部分 DMP 状态。我在打电话后做了这个mpu_set_dmp_state(1)

我发现许多值在 DMP 运行时会发生变化。 D_0_192,我认为是与态度相对应的内部状态,可以通过其缓慢的弛豫时间来识别。我没有花时间解释内容。我只复制了缓冲区并观察了预期的结果——DMP fifo 的内容从记录的姿态开始。

免责声明

这是未记录的,可能非常错误,而且肯定很脆弱(未经测试,除了包含在 中的 DMP 固件 blob 之外的任何东西motion_driver_6.12)。使用风险自负。

于 2021-05-25T08:47:24.367 回答