|
发表于 2013-3-21 17:39:11
|
显示全部楼层
本帖最后由 fnems 于 2013-3-21 17:49 编辑
关注一下。碰巧最近也在用。自己的正常
三轴抓到的大概是这样:
-13,6,223
-16,6,225
-12,5,227
-10,4,222
-10,4,223
-7,5,225
-8,4,223
-11,2,221
-13,1,222
-11,3,221
-11,4,223
-11,4,223
-11,3,222
我的初始化:- i2c_set_addr(IIC_ADXL345_ALTR);
- /* Self-test off, SPI off, INT active high, full-res on, range=8g */
- i2c_wr_reg(REG_ADXL345_DATAFMT, 0x0A);
- /* Output rate: 50Hz
- i2c_wr_reg(REG_ADXL345_BWRATE, 0x09); */
- /* 200Hz */
- i2c_wr_reg(REG_ADXL345_BWRATE, 0x0B);
-
- /* tap detect: threshold=1.6g, */
- /* duration=10ms, latency=25ms, window=150ms */
- i2c_wr_reg(REG_ADXL345_TAPTH, 72 ); /* 62.5 mg/LSB */
- i2c_wr_reg(REG_ADXL345_TAPDUR, 15 ); /* 625 μs/LSB */
- i2c_wr_reg(REG_ADXL345_TAPLAT, 40 ); /* 1.25 ms/LSB */
- i2c_wr_reg(REG_ADXL345_TAPWND, 160); /* 1.25 ms/LSB */
- /* supres off, y axis */
- i2c_wr_reg(REG_ADXL345_TAPAXE, 0x02);
-
-
- /* Start measurement */
- i2c_wr_reg(REG_ADXL345_PWRCTL, 0x08);
- /* Interrupt enable */
- /* i2c_wr_reg(REG_ADXL345_INTEN, 0x80); */
- i2c_wr_reg(REG_ADXL345_INTEN, SETB(INTR_DATA_READY)
- | SETB(INTR_SINGLE_TAP)
- | SETB(INTR_DOUBLE_TAP));
复制代码 另外,建议LZ把读到的原始数据用UART发到电脑上,
这样调试起来应该能看出来是自己固件的数据处理上出问题还是芯片出问题。
我用的是网上买的模块,硬件问题就不用怎么考虑了。
还有,ADXL345有两个供电的,分别是数字电路和模拟电路的供电。LZ看看都接上了没。
读ID成功只能说明数字接口部分正常工作 |
|