ADXL345不停进入中断

各位高手:

       我现在正在使用G-Sensor芯片ADXL345,在使用过程中遇到点问题,特向各位高手请教。

       我采用G-Sensor的INT1脚中断输出到MCU的一个外部中断,从而唤醒休眠状态的MCU。

但现在遇到这样问题,G-Sensor偶尔会不停进入中断,且一直不停,这个时候通过示波器测INT1

管教可看到一族一族脉冲输出,请问是什么原因,非常感谢!

void Init_ADXL345(void)
{
I2CWriteOneByte(DEVICE_ADDR, 0x2E, 0x00); //关中断

I2CWriteOneByte(DEVICE_ADDR, 0x31, 0x0B); //测量范围,正负16g,13位模式,中断至低电平有效
I2CWriteOneByte(DEVICE_ADDR, 0x2C, 0x17); //速率设定为12.5 参考pdf13页
I2CWriteOneByte(DEVICE_ADDR, 0x2D, 0x18); //选择电源模式 参考pdf24页,0x08

I2CWriteOneByte(DEVICE_ADDR, 0x1E, 0x00); //X 偏移量 根据测试传感器的状态写入pdf29页
I2CWriteOneByte(DEVICE_ADDR, 0x1F, 0x00); //Y 偏移量 根据测试传感器的状态写入pdf29页
I2CWriteOneByte(DEVICE_ADDR, 0x20, 0x00); //Z 偏移量 根据测试传感器的状态写入pdf29页


I2CWriteOneByte(DEVICE_ADDR, 0x24, 0x20); //THR_ACT, 2g 睡眠激活阈?
I2CWriteOneByte(DEVICE_ADDR, 0x25, 0x02); //THR_INACT, 0.2g睡眠开始阈值0x02
I2CWriteOneByte(DEVICE_ADDR, 0x26, 0x02); //当小于THR_INACT 2s进入睡眠
I2CWriteOneByte(DEVICE_ADDR, 0x27, 0xFF); //Z交流触发
I2CWriteOneByte(DEVICE_ADDR, 0x2F, 0xEF); //中断引脚映射到INT1
I2CWriteOneByte(DEVICE_ADDR, 0x2E, 0x10); //开中断
I2CWriteOneByte(DEVICE_ADDR, 0x38, 0xDF);
}

Top Replies