ADI 技术
直播中

江根磊

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

请问ADXL345在正确得到ID后,无法获取XYZ数据是什么原因?

我芯片用的是realtek公司的蓝牙芯片,内核是ARM Cortex-M0。接线采用的是4线制的spi
我现在能获取到正确的ID值,但是在获取XYZ值时候返回的都是0;初始化程序如下
请教哪里有问题
void ADXL345_write_byte(uint8_t addr,uint8_t data)
{
  uint8_t sendBuf[2];
  sendBuf[0]=addr|0xC0;
  sendBuf[1]=data;
  //DBG_DIRECT("RegAddr=0x%2x",sendBuf[0]);
  SPI_SendBuffer(SPI0, sendBuf, 2);

x

void ADXL345_Ini(void)
{
  ADXL345_write_byte(0x31,0x2B);
  delayMS(2);
  ADXL345_write_byte(0x1E,0x00);
  delayMS(2);
  ADXL345_write_byte(0x1F,0x00);
  delayMS(2);
  ADXL345_write_byte(0x20,0x00);
  delayMS(2);
  ADXL345_write_byte(0x21,0x00);
  delayMS(2);
  ADXL345_write_byte(0x22,0x00);
  delayMS(2);
  ADXL345_write_byte(0x23,0x00);
  delayMS(2);
  ADXL345_write_byte(0x24,0x01);
  delayMS(2);
  ADXL345_write_byte(0x25,0x01);
  delayMS(2);
  ADXL345_write_byte(0x26,0x2B);
  delayMS(2);
  ADXL345_write_byte(0x27,0x00);
  delayMS(2);
  ADXL345_write_byte(0x28,0x09);
  delayMS(2);
  ADXL345_write_byte(0x29,0xFF);
  delayMS(2);
  ADXL345_write_byte(0x2A,0x80);
  delayMS(2);
  ADXL345_write_byte(0x2C,0x0D);
  delayMS(2);
  ADXL345_write_byte(0x2D,0x08);
  delayMS(2);
  ADXL345_write_byte(0x2E,0x80);
  delayMS(2);
  ADXL345_write_byte(0x2F,0x00);

  ADXL345_write_byte(0x38,0x00);
  delayMS(2);
}

回帖(2)

刘悦竹

2018-8-1 06:41:28
1. 请试着写两个寄存器然后读回来,看看写是否成功。
2. 如写成功,说明读写正常,那只需要写0x08到POWER_CTL寄存器就可以了,而后别忘了turn-on time, 延时11.1ms后,再读XYZ的输出就可以了。
举报

高淑贤

2018-8-1 06:53:24
初始化延时加长试过没有,有可能延时较短初始化不正确。
举报

更多回帖

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