使用stm8l驱动adxl345做运动检测,设置运动中断使能,其他中断禁止,中断引脚映射为INT2,并使用此引脚触发stm8l的外部中断,ADXL345的初始化函数如下:
adxl345_write_reg(0X31,0X0B); //低电平中断输出,13位全分辨率,输出数据右对齐,16g量程
adxl345_write_reg(0x2C,0x1A); //数据输出速度为100Hz,低功耗模式
adxl345_write_reg(0x2D,0x08); //链接使能,测量模式,省电特性
adxl345_write_reg(0X1E,0x00); //X,Y,Z补偿值
adxl345_write_reg(0X1F,0x00);
adxl345_write_reg(0X20,0x05);
adxl345_write_reg(0X24,0x10); //活动检测阈值为1.0g=62.5mg*16
adxl345_write_reg(0X27,0xF0); //X、Y、Z轴检测运动,交流耦合
adxl345_write_reg(0X2F,0x10); //运动中断引脚为INT2,其他中断引脚INT1
adxl345_write_reg(0X2E,0x10); //使能运动中断
在stm8l的外部中断函数中通过读取ADXL345中断源寄存器的值清除中断标志
source = adxl345_read_reg(0x30); //读ADXL345中断源寄存器,清中断标志位
但在测试的过程中,INT2的引脚电平有时不能被拉低,通过mcu的调试工具查看,此种异常状态时,ADXL345中断源寄存器读到的数据为0x93,此值正常。
故不知此种异常现象的原因,请各位帮忙分析分析,谢谢