Post Go back to editing

调试ADXL372,Y轴和Z轴的MSB输出数据是0xFF?

调试ADXL372,Y轴和Z轴的MSB输出数据是0xFF?

X轴输出是正常的,YZ轴MSB为什么输出是0xFF,读ID和寄存器都是正确的

Parents
  • 使能下自检(self test),看结果正常吗

  • 检查了,你看我的处理程序,这是初始化 ,等待数据准备好读取

  • 二进制补码,所以高位寄存器00或FF都有可能,按二进制补码换算成十进制LSB和加速度值看一下,你截图的加速度值单位是什么,怎么换算转换出来的。

  • 我也感觉是二进制补码

    void ADXL372_RD_XYZ(void)
    {

    u8 BUF[6];
    short tx2,ty2,tz2;
    if(ADXL372_RD_Reg(ADXL372_STATUS_1)&0x01)
    {


    BUF[1] = ADXL372_RD_Reg(ADXL372_X_DATA_H);
    BUF[0] = ADXL372_RD_Reg(ADXL372_X_DATA_L);

    BUF[3] = ADXL372_RD_Reg(ADXL372_Y_DATA_H);
    BUF[2] = ADXL372_RD_Reg(ADXL372_Y_DATA_L);

    BUF[5] = ADXL372_RD_Reg(ADXL372_Z_DATA_H);
    BUF[4] = ADXL372_RD_Reg(ADXL372_Z_DATA_L);


    // BUF[4] = ADXL372_RD_Reg(0x0D);
    // BUF[5] = ADXL372_RD_Reg(0x0C);

    printf("\r\nBUF[0]:%x\r\n",BUF[0]);
    printf("\r\nBUF[1]:%x\r\n",BUF[1]);
    printf("\r\nBUF[2]:%x\r\n",BUF[2]);
    printf("\r\nBUF[3]:%x\r\n",BUF[3]);
    printf("\r\nBUF[4]:%x\r\n",BUF[4]);
    printf("\r\nBUF[5]:%x\r\n",BUF[5]);
    }
    tx2 = (BUF[1] << 8 | BUF[0] ) ;
    ty2 = (BUF[3] << 8 | BUF[2] ) ;
    tz2 = (BUF[5] << 8 | BUF[4] ) ;

    tx2 = tx2>>4;
    ty2 = ty2>>4;
    tz2 = tz2>>4;

    // tx2 = ((BUF[1] << 4 | BUF[0]>>4 )) ;
    // ty2 = ((BUF[3] << 4 | BUF[2]>>4 )) ;
    // tz2 = ((BUF[5] << 4 | BUF[4]>>4 )) ;

    a2 = (float)tx2 * ADXL372_USCALE;//97.65625;
    b2 = (float)ty2 * ADXL372_USCALE;//97.65625;
    c2 = (float)tz2 * ADXL372_USCALE;//97.65625; //加速度转换

    a2/= 1000000;
    b2/= 1000000;
    c2/= 1000000;

    printf("\r\nX轴加速度:%f\r\n",a2);
    printf("\r\nY轴加速度:%f\r\n",b2);
    printf("\r\nZ轴加速度:%f\r\n",c2);
    }

    这样处理有问题吗?

  • 如果0xff 0xa0,实际应该是十进制多少数值?

Reply Children
No Data