Post Go back to editing

请教ADXL350的偏置问题

刚刚开始学习的菜鸟新手提问,希望得到ADI工程师和前辈的回答。

入手一块ADXL350的开发板,使用STM32F4,SPI四线通信。  现在通信没有问题,但是收到的数据有一些问题,如下图:

其中[0]、[1]、[2]分别为X、Y、Z轴的数据。

这是模块平放(+Z)时的数据:

模块反放(-Z)时的数据:

+X方向放置的数据:

-X方向放置时的数据:

+Y方向放置时的数据:

-Y方向放置时的数据:

从数据中可以看出,数据变化的方向是正确的,XY轴的数据相对较为准确,在+-X和+-Y时,数据应该是+-512LSB左右。Z轴的数据方向也是对的,但明显有非常大的偏置量,XY轴的数据也有一定的偏置量。

请问,这是我初始化设置的问题,还是模块的问题?  这个可以通过修正静态时候的偏置(计算OFFSET)来解决吗?  谢谢!

下面是我写的ADXL350初始化和数据读取的代码,请指教我哪里写的有问题,谢谢!

void Initial_ADXL350()

{

      //DATA_FORMAT设置

       SPI1_WriteRegister(DATA_FORMAT,0x0B, CS_GPIO, CS_GPIO_PIN);

       Delay_ms(5);

      //POWER_CTL

       SPI1_WriteRegister(POWER_CTL,0x08, CS_GPIO, CS_GPIO_PIN);

       Delay_ms(5);

       //INT_ENABLE

       SPI1_WriteRegister(INT_ENABLE,0x00, CS_GPIO, CS_GPIO_PIN);

       Delay_ms(5);

       //BW_RATE

       SPI1_WriteRegister(BW_RATE,0x0F, CS_GPIO, CS_GPIO_PIN);

       Delay_ms(5);

       //FIFO_CTL

       SPI1_WriteRegister(FIFO_CTL,0x80, CS_GPIO, CS_GPIO_PIN);

       Delay_ms(5);

}

void ADXL350_Read()

{

       u8 i = 0;

       GPIO_ResetBits(CS_GPIO,CS_GPIO_PIN);  //片选置位

       SPI1_ReadWriteByte(DATAX0|_SPI_READ_MB);//设置连续读取模式

       for(i=0;i<6;i++)

       {

            SPI1_Buffer[i] = SPI1_ReadWriteByte(_SPI_READ);

       }

       GPIO_SetBits(CS_GPIO,CS_GPIO_PIN); //关闭通信

       Acc_Raw[0] = (((int16_t)SPI1_Buffer[1]) << 8) | (int16_t)SPI1_Buffer[0];

       Acc_Raw[1] = (((int16_t)SPI1_Buffer[3]) << 8) | (int16_t)SPI1_Buffer[2];

       Acc_Raw[2] = (((int16_t)SPI1_Buffer[5]) << 8) | (int16_t)SPI1_Buffer[4];

     //判断数值正负

       if (Acc_Raw[0]&0xF000)

            OUT[0] = -(0xFFFF - Acc_Raw[0] + 1);

       else

            OUT[0] = Acc_Raw[0];

       if (Acc_Raw[1]&0xF000)

            OUT[1] = -(0xFFFF - Acc_Raw[1] + 1);

       else

            OUT[1] = Acc_Raw[1];

       if (Acc_Raw[2]&0xF000)

            OUT[2] = -(0xFFFF - Acc_Raw[2] + 1);

       else

            OUT[2] = Acc_Raw[2];

}

  • 谢谢!   我的供电是3.3V,在手册的2.0-3.6V范围之内的。  按照1.95mg/LSB的话, 明显Z轴的偏置超过了+-250mg。请问这个问题应该如何解决?

    另外,请问有没有比较基础全面的ADI加速度计的使用指南?   我刚刚开始使用加速度计,对手册中的很多属于都看不明白。

Before You Switch


Switching languages will make ADI Explorer unavailable. Resume your session by switching back to English and reopening ADI Explorer.