ADXL355 output result is not accurate on ODR & Low Pass Filter : 250Hz and 62.5Hz

Dear ADI engineer

I have tested ADuCM360_demo_adxl355_pmdz.

I used Agate 2030 vibration calibrator for exact test. 

I changed the testing vibration frequency 10 Hz, 20 Hz, 30 Hz, 40 Hz, 50 Hz at 1 g (= 1 m/sec2).

If I used the ADXL355 option of ODR & Low Pass Filter : 4000 Hz and 1000 Hz, I could get the more close to the exact value. 

However, if used the ADXL355 option of ODR & Low Pass Filter : 250 Hz and 62.5 Hz, I got the inaccurate value. 

I don't understand why although the testing vibration frequency is low, the higher ODR & Low Pass Filter is required. 

(changed code of ADuCM360_demo_adxl355_pmdz for streaming output on UART Baud Rate 430800)

int main(int argc, char *argv[])

{
      float volatile f32temp = 0.0f;
      float adxl355Scale = 0.0f;

      /* Initialize SPI1 */
      SPI_Init();

      /* Initialize UART */
      UART_Init(B430800, COMLCR_WLS_8BITS);

      /* Initialize the System Timer and its interrupt, and starts the System Tick Timer. */
      timer_start();

      /* Initialize accelerometer */
      ADXL355_Init();

      SPI_Write(RESET, 0x52, 0x00, SPI_WRITE_ONE_REG);

      #if ADXL_RANGE == 8
      SPI_Write(RANGE, 0x83, 0x00, SPI_WRITE_ONE_REG); /* Set sensor range within RANGE register */
      adxl355Scale = 64000.0f;
      #endif

      SPI_Write(FILTER, 0x30, 0x00, SPI_WRITE_ONE_REG);/* High Pass Filter : 1.5545*10^-4*ODR, ODR & Low Pass Filter : 4000 Hz and 1000 Hz */


      // Infinite loop
      while (1)
      {

            ADXL355_Data_Scan();
            UART_Printf("\r\n %.6f", (float)i32SensorZ / adxl355Scale);

      }
}



.
[edited by: Namsan at 2:59 AM (GMT -4) on 11 May 2021]