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