ST意法半导体
直播中

李志静

7年用户 1406经验值
私信 关注
[问答]

如何在开机后的最短时间内从LIS2DH读取有效数据吗?

我有一个带有 LIS2DH 加速度计的项目,我想每 20 秒测量一次值,在两次测量之间关闭 LIS2DH。
因此,我尝试打开电源,等待 5 毫秒,将 0x10 写入 CTRL_REG3(在 INT1 上打开 DRDY),然后将 0x1F 写入 CTRL_REG1。
然后我等待 INT1 中的脉冲(并且几乎立即得到它)并将数据从 OUT_X_L 读取到 OUT_Z_H。但是 - 所有数据都是零。以不同的方向写入寄存器,即从 REG1 到 REG6 给出相同的结果。
LIS2DH 的数据表没有提供有关 DRDY 如何工作的信息(例如,这是两次 SPI 读/写之间允许的最短时间,但我在 LIS2DH12(较新的加速度计)的数据表中读到,“为了确保拥有与所选 ODR 同步的第一个 DRDY 上升沿(避免图 2 中的情况:“DRDY 信号同步”)在启用 ODR 之前将 I1_ ZYXDA 位设置为“1”。
没有运气。
你能给我一个建议,如何在开机后的最短时间内从 LIS2DH 读取有效数据吗?
先感谢您!









回帖(1)

宋艳艳

2023-1-4 12:07:07
很高兴看到您解决了您的第一个沟通问题!
让我试着回答你的下一个问题:


  • 是否有可能发现 LIS2DH 已准备就绪,除非只是在开机后等待 5ms?-->您可以在开机后启动 WHO_AM_I (0Fh) 寄存器的 SPI 读取:如果返回 33h 值,则数字块已准备就绪。
  • LIS2DH 在尽可能快地启用 ODR 后立即执行测量,并且 ODR 值只是此类测量之间的计时器值,我说得对吗?即在我的情况下,选择哪个 ODR 并不那么重要——第一个样本将在写入非零 ODR 后同时准备好?-->即使在大多数情况下第一个读取数据是有效的,我还是建议始终丢弃第一个样本。您可以通过在 CTRL_REG4 (23h) 寄存器中写入 BDU 位来减轻这种影响:这可以防止在读取 MSB 和 LSB 之前更新输出寄存器。
  • 在我遇到的某些 IC 中,第一次测量结果可能无效,LIS2DH 呢?-->见上文。
  • 我认为(5ms + 转换时间 + SPI 读取时间)是上电后从 LIS2DH 获取值的最短时间吗?-->是的,为了安全的行为(如果你想考虑第一个样本也是有效的,我会说是的,它是。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分