大家好,
如果您对演示加速度计运动检测功能使用的简单裸机示例代码感兴趣,请参阅下面我为FXLS8471Q 加速度计创建的一个示例,该示例与 NXP FRDM-KL25Z平台和FRDMSTBC-A8471配合使用 木板。
FXLS8471Q 设置为检测 X 轴或 Y 轴上最短 40 毫秒内超过 315mg 的运动。一旦触发事件,INT1引脚上就会产生中断:
void FXLS8471Q_Init (void)
{
FXLS8471Q_WriteRegister(FT_MT_THS_REG, 0x85); // Set threshold to 312.5mg (5 x 62.5mg )
FXLS8471Q_WriteRegister(FF_MT_COUNT_REG, 0x02); // Set debounce timer period to 40ms
FXLS8471Q_WriteRegister(FF_MT_CFG_REG, 0xD8); // Latch enabled, motion detection enabled for X and Y axis
FXLS8471Q_WriteRegister(CTRL_REG4, 0x04); // Motion interrupt enabled
FXLS8471Q_WriteRegister(CTRL_REG5, 0x04); // Route motion interrupt to INT1 - PTD4
FXLS8471Q_WriteRegister(CTRL_REG1, 0x29); // ODR = 12.5Hz, Active mode
}
在 ISR 中,仅清除中断标志并读取 FF_MT_SRC(0x16)寄存器,以清除 INT_SOURCE 寄存器中的 SRC_FFMT 标志并取消 INT1 引脚,如下面的屏幕截图所示。
void PORTD_IRQHandler()
{
PORTD_PCR4 |= PORT_PCR_ISF_MASK; // Clear the interrupt flag
IntSource = FXLS8471Q_ReadRegister(FF_MT_SRC_REG); // Read the FF_MT_SRC register to clear the SRC_FFMT flag in the INT_SOURCE register
EventCounter++;
}
您可以在附件中找到完整的源代码。如果对这个简单的示例代码有任何疑问,请随时在下面提问。
此致,
Tomas