ST意法半导体
直播中

王磊

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

使用LSM检测水龙头,点击检测不起作用的原因?

我正在尝试使用 LSM 检测水龙头。我使用应用说明中建议的默认配置:
  • 1. Write 60h to CTRL1_XL // Turn on the accelerometer
  •                                               // ODR_XL = 417 Hz, FS_XL = ±2 g
  • 2. Write 0Eh to TAP_CFG0 // Enable tap detection on X, Y, Z-axis
  • 3. Write 0Ch to TAP_CFG1 // Set X-axis threshold and axes priority
  • 4. Write 8Ch to TAP_CFG2 // Set Y-axis threshold and enable interrupt
  • 5. Write 0Ch to TAP_THS_6D // Set Z-axis threshold
  • 6. Write 7Fh to INT_DUR2 // Set Duration, Quiet and Shock time windows
  • 7. Write 80h to WAKE_UP_THS // Single-tap and double-tap enabled (SINGLE_DOUBLE_TAP = 1)
  • 8. Write 08h to MD1_CFG // Double-tap interrupt driven to INT1 pin
通过这种配置,我可以获得中断。当我尝试通过读取 TAP_SRC 或 ALL_INT_SRC 来检查中断原因时,我的问题就开始了。
当我读取 ALL_INT_SRC 寄存器时,我看到中断的原因是唤醒事件 (WU_IA),据我从上面的配置 (WAKE_UP_THS = 0x80) 理解应该被禁用。
当我读取 TAP_SRC 寄存器时,我看到其中一个轴上有 TAP 事件检测,但是 SINGLE_TAP / DOUBLE_TAP / TAP_IA 的位都是零。我希望设置 SINGLE_TAP / DOUBLE_TAP 位。
关于什么可能导致它无法按预期工作的任何建议?











回帖(1)

刘畅

2023-2-3 15:05:32
我发现了我的问题。我将 MCU 配置为在中断线的下降沿而不是上升沿中断。这导致固件在 TAP 事件结束时获得中断,因此当我读取 TAP_SRC 寄存器时它不再有效。
举报

更多回帖

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