MMA8451 - 运动时的 INT1 和 INT2 早安 实际上,我们在 GPS 设备上使用 MMA8451,几分钟后我们就进入睡眠状态我们没有明显的移动,我们使用 INT1 在移动时唤醒 CPU。我们想在 INT2 上接收相同的中断信号,但无法成功。 此致, 吉安玛丽亚 Re: MMA8451 - INT1 and INT2 on Movement 你好,吉安玛丽亚、
无法定义中断引脚保持激活状态的时间。
顺祝商祺!
托马斯 Re: MMA8451 - INT1 and INT2 on Movement 你好,托马斯、 无法工作。但使用附件中的示例可以正常工作: https://www.nxp.com/docs/en/application-note/AN4072.pdf 我会用的。在这种情况下,我也可以避免读取源寄存器,因为每次检测到TAP时INT都会上升。 另一个问题是,我能否定义中断保持高电平的时间,实际上它非常快,是否有可能让 INT 保持高电平约一秒钟,然后再自动降低? 感谢您的帮助。我真的很感激。 吉安玛丽亚 Re: MMA8451 - INT1 and INT2 on Movement 你好,吉安玛丽亚、
您的代码似乎是正确的。我建议尝试将阈值从 ~3g (0x30) 降到例如~1g (0x10),也可以选择防抖计数器值。
为了将运动中断路由至 INT1 引脚,请确保 INT_CFG_FF_MT 位 = 0。
然后在 ISR 中清除 MCU 中断标志,并读取 FF_MT_SRC (0x16) 寄存器,以清除 SRC_FF_MT 状态位,并解除 INT1 引脚的保护。
顺祝商祺!
托马斯 Re: MMA8451 - INT1 and INT2 on Movement 早上好,托马斯、 我正在使用附件https://www.nxp.com/docs/en/application-note/AN4070.pdf 第 11 页的示例步骤。 下面是我的代码,也许我哪里出错了。 _____________________________________________________ //进入待机模式 resDue= i2c_smbus_write_byte_data(client, 0x2A, 0x18); printk(KERN_INFO"ASI - set standby mode, res=%d\n",resDue); resDue= i2c_smbus_write_byte_data(client, 0x15, 0xD8); resDue= i2c_smbus_write_byte_data(client, 0x17, 0x30); resDue= i2c_smbus_write_byte_data(client, 0x18, 0x0A); resDue= i2c_smbus_write_byte_data(client, 0x2D, 0x04); resDue= i2c_smbus_write_byte_data(client, 0x2E, 0x04); value = i2c_smbus_read_byte_data(client, 0x2A); value |= 1; resDue= i2c_smbus_write_byte_data(client, 0x2A, value); printk(KERN_INFO"ASI - exit standby mode, res=%d\n", resDue); return 0; ____________________________________________________________ 如果我用附件的TAP示例 https://www.nxp.com/docs/en/application-note/AN4072.pdf第 15 页一切正常,我看见 INT1 正在移动... 如上所述,我的想法是将这个TAP放在INT1上,将运动传感器的工作代码放在INT2上,但是我不清楚为什么示例中的代码不起作用以及如何放在INT2上,因为示例在INT1上。 此致, gianmaria Re: MMA8451 - INT1 and INT2 on Movement 你好,吉安玛丽亚、
是的,将TAP(脉冲)中断路由到 INT1 引脚(INT_CFG_PULSE = 1)和另一个中断(例如运动)连接到 INT2 引脚(INT_CFG_FF_MT = 0)。
另外,还可以将多个中断路由到同一个中断引脚,然后读取 INT_SOURCE 寄存器 (0x0C) 以了解是哪个事件导致了中断。
顺祝商祺!
托马斯 Re: MMA8451 - INT1 and INT2 on Movement 亲爱的托马斯 实际上,我们正在将TAP事件路由到INT1,而不是自动睡眠-唤醒事件,而且它工作正常。是否有可能将另一个"逻辑" 设置为将运动事件检测到 INt 2,并使其同时作用于两个相似的不同事件?如果我们错过了信号,我们将通过硬件来复制信号。 此致, gianmaria Re: MMA8451 - INT1 and INT2 on Movement 你好,吉安玛丽亚、
自动休眠/唤醒中断只能路由到 INT1 引脚(INT_CFG_ASLP = 1)或 INT2 引脚(INT_CFG_ASLP = 0)。在您的应用程序中,是否可以将其中一个中断引脚同时连接到 CPU 和调制解调器 GPI?
顺祝商祺!
托马斯
Re: MMA8451 - INT1 and INT2 on Movement 对不起,我忘了告诉大家,我们必须将 INT1 连接到 CPU GPIO,将 INT2 连接到调制解调器 GPIO。
查看全文