我正在尝试使用 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 位。
关于什么可能导致它无法按预期工作的任何建议?