MC3635加速度计:Gs转delta及中断阈值多路复用配置问题
MC3635 MEMS加速度计嗅探模式阈值配置问题
概述
我正尝试为MC3635 MEMS加速度计编写用于配置低功耗嗅探/中断模式的库。目前已实现连续采样读取及基础中断配置,但无法精准设置各轴阈值。
我虽能修改阈值并观察到触发中断所需的力有变化,但不清楚阈值的正确计算方式。
据我理解,加速度计进入嗅探模式后,每个时钟周期会生成当前读数与初始读数的原始值delta,该delta为11位,会与用户设置的6位阈值对比。另有mux寄存器可选择11位delta中的位范围,以牺牲精度为代价支持更高触发值。
已尝试的操作
目前我假设delta计算是原始读数转加速度(G)的逆运算,即:
// 16为设置的量程,2048是最大12位有符号值,11位无符号值 x_delta = (x_g / 16.0) * 2048
并相应调整mux,使最高位1包含在6位范围内。
我尝试将期望阈值设为2G,计算得到delta为256(0b100000000),该值超出前6位范围,因此将mux设为4,并右移delta至适配范围:
// 0b100 = mux 4 // 0b1 = 使能 // th_select = 目标轴选择 char data = (0b100 << 4) | (0b1 << 3) | (th_select & 0b111); res += write_register(ADDR, SNIFF_SEL, data); // 设置mux及选择轴 sleep(10); res += write_register(ADDR, SNIFF_TH, 0b10100000); //C2B + 轴OR + 256右移后的值 sleep(10);
我预期上述代码会在加速度超过2G时触发中断,但实际在0.5G的小事件下就触发了中断。
我本可通过实验关联delta与冲击值,但需搭建能缓慢提升加速度的设备,因此先在此寻求建议。
相关信息见数据手册第55-59页。
感谢您的建议,
Ethan
内容的提问来源于stack exchange,提问作者Ethan Armstrong
相关产品推荐
相关产品推荐

