ADXL375读取的XYZ数据每次波动很大

你好,初始化以及读取代码如下,读取到的x,y,z数据一直变化,变化范围还很大,是有哪块还需要配置吗?

初始化:

uint8_t reg_val = 0x00;

i2c2_register_write(ADXL375_SLAVE_ADDR, 0x2D, &reg_val, 1); //

reg_val = 0x0B;

i2c2_register_write(ADXL375_SLAVE_ADDR, 0x31, &reg_val, 1); //

reg_val = 0x0D;

i2c2_register_write(ADXL375_SLAVE_ADDR, 0x2C, &reg_val, 1); //

reg_val = 0x08;

i2c2_register_write(ADXL375_SLAVE_ADDR, 0x2D, &reg_val, 1); //

读取:

i2c2_register_read(ADXL375_SLAVE_ADDR, 0x32, adxl_data, 6);

HAILIAN_LOGI("ADXL375 x : %d", (int16_t)((uint16_t)adxl_data[0] | (uint16_t)adxl_data[1] << 8));

HAILIAN_LOGI("ADXL375 y : %d", (int16_t)((uint16_t)adxl_data[2] | (uint16_t)adxl_data[3] << 8));

HAILIAN_LOGI("ADXL375 z : %d", (int16_t)((uint16_t)adxl_data[4] | (uint16_t)adxl_data[5] << 8));

  • 0
    •  Analog Employees 
    on Jul 20, 2021 1:08 PM

    您的XYZ轴变化很大,具体是什么表现,均值是正确的吗,麻烦进一步描述现象,从程序无法看出来您的问题。

  • 就是我从0x32-0x37读出的数据乘以49以后理论上就是当前重力加速度的值,我将设备平放时理论上x:0,y:0,z:-1000,但是每秒读出来的值如附件,偏差比较大,而且每次都波动很大

    ADXL375.txt
    ADXL375 x:0 y:0 z:-1666";
    ADXL375 x:196 y:588 z:-1421";
    ADXL375 x:-441 y:-245 z:-1421";
    ADXL375 x:245 y:-98 z:-980";
     ADXL375 x:-245 y:98 z:-1568";
    ADXL375 x:-147 y:-147 z:-1470";
    ADXL375 x:343 y:-49 z:-1274";
    ADXL375 x:-441 y:-343 z:-1372";
    ADXL375 x:-637 y:-245 z:-1617";
    ADXL375 x:245 y:245 z:-1617";
    ADXL375 x:0 y:147 z:-1960";
    ADXL375 x:245 y:343 z:-2107";
    ADXL375 x:-196 y:245 z:-1372";
    ADXL375 x:-147 y:0 z:-1470";
    ADXL375 x:49 y:-98 z:-1029";
    ADXL375 x:-147 y:147 z:-1862";
    ADXL375 x:343 y:637 z:-980";
    ADXL375 x:98 y:98 z:-2303";
    ADXL375 x:-49 y:-147 z:-1960";
    ADXL375 x:-147 y:490 z:-1666";
    ADXL375 x:49 y:196 z:-1960";
    ADXL375 x:392 y:0 z:-1372";
    ADXL375 x:0 y:196 z:-1470";
    ADXL375 x:343 y:392 z:-1470";
    ADXL375 x:-294 y:98 z:-1568";
    ADXL375 x:49 y:147 z:-1666";
    ADXL375 x:-245 y:588 z:-1372";
    ADXL375 x:-588 y:-343 z:-1225";
    ADXL375 x:0 y:-294 z:-1519";
    ADXL375 x:-343 y:49 z:-1666";
    ADXL375 x:-147 y:686 z:-1666";
    ADXL375 x:196 y:-294 z:-1372";
    ADXL375 x:-196 y:-245 z:-1323";
    ADXL375 x:147 y:-196 z:-1372";
    ADXL375 x:0 y:-637 z:-2058";
    ADXL375 x:637 y:-49 z:-1274";
    ADXL375 x:294 y:0 z:-1617";
    ADXL375 x:-147 y:343 z:-2058";
    ADXL375 x:-49 y:-245 z:-1519";
    ADXL375 x:-147 y:49 z:-1225";
    ADXL375 x:49 y:-49 z:-1568";
    ADXL375 x:-98 y:0 z:-1764";
    ADXL375 x:-392 y:686 z:-2254";
    ADXL375 x:294 y:-294 z:-2009";
    ADXL375 x:392 y:245 z:-1274";
    ADXL375 x:245 y:-637 z:-1176";
    ADXL375 x:392 y:-784 z:-1519";
    ADXL375 x:-441 y:343 z:-1568";
    ADXL375 x:-245 y:-49 z:-1470";
    ADXL375 x:392 y:0 z:-1225";

  • 0
    •  Analog Employees 
    on Jul 21, 2021 9:04 AM in reply to lierda

    您这个是处理前还是处理后的数据,请确实是否是默认配置,以及是否配置滤波器,可以配置滤波器尝试一下。

  • 我这边只配置了ODR为100HZ,然后开启了测量模式。数据是直接读出来的,没有经过处理的。

    滤波的话怎么滤波呢?现在就是读出的数据波动太大,也没办法校准。

  • 我这边只配置了ODR为100HZ,然后开启了测量模式。数据是直接读出来的,没有经过处理的。

    滤波的话怎么滤波呢?现在就是读出的数据波动太大,也没办法校准。