ADI 技术
直播中

全娟

7年用户 284经验值
私信 关注
[问答]

adxl345的SINGLE_TAP中断不能进去

void Init_ADXL345()
{
   Single_Write_ADXL345(0xA6,0x31,0x0b,1);   //测量范围,正负16g,13位模式 高电平有效
   Single_Write_ADXL345(0xA6,0x2C,0x08,1);   //速率设定为12.5 参考pdf13页
   Single_Write_ADXL345(0xA6,0x2D,0x08,1);   //选择电源模式   参考pdf24页
   Single_Write_ADXL345(0xA6,0x1E,0x00,1);   //X 偏移量 根据测试传感器的状态写入pdf29页
   Single_Write_ADXL345(0xA6,0x1F,0x00,1);   //Y 偏移量 根据测试传感器的状态写入pdf29页
   Single_Write_ADXL345(0xA6,0x20,0x05,1);   //Z 偏移量 根据测试传感器的状态写入pdf29页
     

   Single_Write_ADXL345(0xA6,0x1D,0x30,1);        //设置THRESH_TAP(敲击门限) 62.5mg/LSB   0xff=16g  此时试取3g   
   Single_Write_ADXL345(0xA6,0x21,0x11,1);        //设置DUR(敲击持续时间) 625us/LSB  此时试取10ms
   Single_Write_ADXL345(0xA6,0x2A,0x07,1);        //设置各轴方向是否参加敲击检测  xyz全参与检测
   Single_Write_ADXL345(0xA6,0x2E,0x00,1);   //设置中断前应先禁用中断
   Single_Write_ADXL345(0xA6,0x2E,0x40,1);        //使能 SINGLE_TAP 中断
   
   Single_Write_ADXL345(0xA6,0x2F,0x40,1);        //设置中断引脚映射 将单击时间映射到INT2上
}
中断是高电平有效,上升沿触发,可是不好用,为什么啊

回帖(2)

刘丹

2019-2-22 07:13:27
楼主问题解决了吗?我遇到和你类似的问题,怎么解决的,需要配置和注意什么啊,求指教!!
举报

刘悦竹

2019-2-22 07:32:27
可参考如下代码:
buf[0] = XL345_RATE_50;    //Output Data Rate: 50Hz
xl345Write(1, XL345_BW_RATE, buf);
buf[0] = XL345_FULL_RESOLUTION;  //Data Format: +/-16g range, right justified,  256->1g
xl345Write(1, XL345_DATA_FORMAT, buf);
buf[0] = XL345_TAP_X_ENABLE | XL345_TAP_Y_ENABLE | XL345_TAP_Z_ENABLE;  //Enable Z Axis Tap Detection
xl345Write(1, XL345_TAP_AXES, buf);
buf[0] = 0x20;      //Tap Threshold:2G, 62.5mg/LSB
xl345Write(1, XL345_THRESH_TAP, buf);
buf[0] = 0x50;  //Dur:50ms, 625us/LSB, representing the maximum time
      //that an event must be above the THRESH_TAP threshold to qualify as a tap event
xl345Write(1, XL345_DUR, buf);
buf[0] = 0x20;  //Latent: 40ms, 1.25ms/LSB, interval between the first tap and the second tap
xl345Write(1, XL345_LATENT, buf);
buf[0] = 0xF0;  //Window: 300ms, 1.25ms/LSB, time window for a possible second tap event
xl345Write(1, XL345_WINDOW, buf);
buf[0] = XL345_SINGLETAP | XL345_DOUBLETAP; //INT_Enable: SINGLE TAP & DOUBLE TAP
xl345Write(1, XL345_INT_ENABLE, buf);
buf[0] = XL345_SINGLETAP | XL345_DOUBLETAP; //INT_Map: SINGLE TAP& DOUBLE TAP interrupt to INT2 pin, DOUBLE TAP interrupt to INT1 pin
xl345Write(1, XL345_INT_MAP, buf);
buf[0] = XL345_MEASURE;   //Power CTL: Measure mode
xl345Write(1, XL345_POWER_CTL, buf);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分