ST意法半导体
直播中

张玲

8年用户 1348经验值
私信 关注
[经验]

lsm6dsl寄存器自由落体检测位未设置怎么办呢

我使用(LSM6DSL)STEVAL-MKI178V1 Dk 板与 nrf52840 控制器板通信
我能够工作计步器和显着运动和倾斜检测这些模式正在工作但我正在尝试生成自由落体检测但我没有得到输出。
我在这里分享代码让我知道我失踪的地方。
      /* 将输出数据速率设置为 416 Hz 并启用 X、Y、Z 轴 */
        LIS6DSH_write_reg(LSM6DSL_ACC_GYRO_CTRL1_XL,0x60);//0x20 5hz ,50 204hz
     /* 启用自由落体中断和锁存中断 */
        LIS6DSH_write_reg(LSM6DSL_ACC_GYRO_TAP_CFG1,0x81);
     /* 倾斜检测器中断驱动到 INT1 引脚 */
        LIS6DSH_write_reg(LSM6DSL_ACC_GYRO_WAKE_UP_DUR,0x00);
        LIS6DSH_write_reg(LSM6DSL_ACC_GYRO_FREE_FALL,0x33);
     /* 启用自由落体事件 */
        LIS6DSH_write_reg(LSM6DSL_ACC_GYRO_MD1_CFG,0x10);
我正在读取 1B 寄存器自由落体检测位未设置。
你能告诉我我是否需要在我的配置中设置任何其他寄存器和更改。谢谢





回帖(1)

施稚惇

2022-12-21 14:06:22
您好,Github 上有一个自由落体的 C 示例代码 ( lsm6dsm_free_fall.c )。lsm6dsm 和 lsm6dsl 之间的寄存器和 是相同的。


  • /* Set XL Output Data Rate. */
  •   lsm6dsm_xl_data_rate_set(&dev_ctx, LSM6DSM_XL_ODR_416Hz);
  •   /* Set 2g full XL scale. */
  •   lsm6dsm_xl_full_scale_set(&dev_ctx, LSM6DSM_2g);
  •   /*  Enable LIR. */
  •   lsm6dsm_int_notification_set(&dev_ctx, LSM6DSM_INT_LATCHED);
  •   /*  Set Free Fall duration to 3 and 6 samples event duration. */
  •   lsm6dsm_ff_dur_set(&dev_ctx, 0x06);
  •   lsm6dsm_ff_threshold_set(&dev_ctx, LSM6DSM_FF_TSH_312mg);
  •   /*  Enable interrupt generation on Free Fall INT1 pin. */
  •   lsm6dsm_pin_int1_route_get(&dev_ctx, &int_1_reg);
  •   int_1_reg.int1_ff = PROPERTY_ENABLE;
  •   lsm6dsm_pin_int1_route_set(&dev_ctx, int_1_reg);

与您的代码(可能就是那个)不同,这里下降的持续时间是 3,事件是 6 个样本。此外,中断被锁存。
您可以尝试使用这些设置。
举报

更多回帖

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