ST意法半导体
直播中

杨福林

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

MCU是否可以在初始配置后写入INT1_THS和CTRL_REG4寄存器呢?

我正在使用 nrf52832 和 LIS3DH 开发可穿戴智能设备。为了在设备未佩戴时关闭 MCU,我想使用带有中断的 LIS3DH 的运动检测功能,因此如果传感器在 n 分钟内未触发中断事件,则 MCU 关闭(进入非常低的功率模式)。
用户可以设置中断阈值和满量程作为配置选项。
这是我当前的配置
CTRL_REG1 = 0x2F //10Hz,低功耗模式,ZXY使能
CTRL_REG2 = 0x0 // 无 HP 过滤器
CTRL_REG3 = 0x40 //IA1使能
CTRL_REG4 = 0x00 //2g默认值,用户可配置
CTRL_REG5 = 0x00
CTRL_REG6 = 0x0
INT1_THS = 0x3A // 58 * 16 毫克 = 928 毫克
INT1_DURAtiON = 0x02
INT1_CFG = 0x2A
第一个问题是:为了根据用户偏好更新传感器的配置,MCU 是否可以在初始配置后写入 INT1_THS 和 CTRL_REG4 寄存器,而无需物理重启 LIS3DH?我必须先清洁它们吗?
问题:使用上面的配置和满量程 +/-2G 和阈值 = 58,传感器也会针对非常小的运动触发中断(当智能设备放在桌子上时我也可以看到中断),但是如果我将阈值设置为 22,我必须剧烈摇动设备才能产生中断。根据阈值为 22 的数据表,我应该对所有大于 16 * 22 = 352 mg 且小于 928 mg 的运动进行中断,因此我应该检测到非常小的运动。我哪里错了?











回帖(1)

蔡妮芩

2023-1-5 14:34:56
回答您的第一个问题:如果您只想更改 INT1_THS 和 CTRL_REG4 寄存器的内容,是的,您可以在不重启设备的情况下更改它们的值。
关于你的第二个问题,问题可能与 INT1_CFG (30h) 值有关,因为你在 Z 高事件位上启用 ZHIE 中断,并且 - 例如在设备在表面上是平面的情况下 -设备目前沿地球重力轴检测到约 1000 毫克。这可能导致 928 mg 阈值被感测到的 1g 的小运动所克服(你会看到这一点,因为你处于中断的 OR 配置、AOI 和 INT1_CFG (30h) 寄存器的 6D 位):这不是352mg 阈值的情况,因为它远离 bot 0g 和 1g。
一种可能的解决方案是禁用 Z 轴中断检测,仅使用 X 和 Y 轴,或通常不指向地球中心的轴。另一种解决方案是使用 HP 过滤器,如应用说明 AN3308 第25 页中所述。
举报

更多回帖

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