ADXL372: Instant On Issue

After reading the datasheet to determine the register with the following requirement

(1) FIFO is not used. Rely on DRDY to capture data via INT1. 

(2) Instant ON when exceeds 30G goes to measurement mode.

(3) 3200Hz ODR

(4) Filter to 1600Hz

(5) 16mSec settle time.

(6)  Measurement mode to churn out data using DRDY INT to load 3 axis data (3200Hz)

(7) I'm not interested in peak signal. 

//--------------------------------------------------------------------
ADXL372_Write(ADI_ADXL372_SRESET,0x52);            // Reset all register to default value
//ADXL372_Write(ADI_ADXL372_INT1_MAP,0x00);      // Disable all INT mapping //Reset set this to 0x00
ADXL372_Write(ADI_ADXL372_POWER_CTL,0x60);   // Put to standby mode. Filter are disabled.
ADXL372_Write(ADI_ADXL372_FIFO_CTL,0x00);        // FIFO disabled. //Reset set this to 0x00
//ADXL372_Write(ADI_ADXL372_HPF,0x00);                // HPF is disabled so not required. //Reset set this to 0x00
ADXL372_Write(ADI_ADXL372_TIMING,0x60);             // ODR = 3200Hz.
ADXL372_Write(ADI_ADXL372_MEASURE,0x03);        // Normal Noise, 1600Hz bandwidth.
ADXL372_Write(ADI_ADXL372_INT1_MAP,0x01);         // Map INT1 Pin to DRDY INT.
ADXL372_Write(ADI_ADXL372_POWER_CTL,0x62);    // Instant On Mode

Once it executes the last statement put the device into Instant On Mode, I get stream of INT1 (DRDY) signal which already run on measurement mode. 

The datasheet did not specify what to do with ACT/INCT/ACT2 filter setting and filter timing, what that should set to for this configuration. 

The Bit 2 and 3 of POWER_CRL in datasheet is not clear if 0 or 1 to disable digital high/low pass filter where filter-settle = 16mSec.

The threshold is 30G so it should not be affected by offset. 



grammer error.
[edited by: riscy0000 at 3:14 AM (GMT 0) on 10 Jan 2019]
Parents
  • 0
    •  Analog Employees 
    on Jan 10, 2019 4:47 AM over 2 years ago

    Thanks for the question. Setting the corresponding bit to 1 in POWER_CTL disables the digital low/high pass filter. So can you try again by disabling them? You can leave ACT/INCT/ACT2 to the default value. Since you did not map these interrupts onto any interrupt pin, this should not affect your result. Have you also confirmed if you can read back all your configured value correctly?

  • The EVALkit arrived (ADuM3906 EVAL with ADXL372-PIN and adaptor PCB). Having setup the CCES2.8.2 with needed packs and run successfully with the EVAL setup. I added a code to load ADXL372 register and explores the maps.

    I copied over the EVAL register to my project via this code. The code below also produce the register map. Once run, tap the ADXL372 and it worked successfully. Made me wonder why register map below is not listed in the datasheet?

    zInfo(" AXDL372 in Instant ON with FIFO (AD Method)");
    ADXL372_Write(ADI_ADXL372_POWER_CTL, 0x00); // Put to standby mode. Filter are disabled.
    ADXL372_Write_Threshold(30,30,0, 0, 0); // ACT/INACT = 30 => 3G to try out. Absolute setting.
    //----------------------------------------------------
    ADXL372_Write(ADI_ADXL372_HPF, 0x00);                        //0x38u HPF is disabled so not required.
    ADXL372_Write(ADI_ADXL372_FIFO_SAMPLES, 0xFF);  //0x39u
    ADXL372_Write(ADI_ADXL372_FIFO_CTL, 0x3B);            //0x3Au
    ADXL372_Write(ADI_ADXL372_INT1_MAP, 0x40);            //0x3Bu Map INT1 Pin to AWAKE.
    ADXL372_Write(ADI_ADXL372_INT2_MAP, 0x00);            //0x3Cu INT2 not used.
    ADXL372_Write(ADI_ADXL372_TIMING, 0x60);                 //0x3Du ODR = 3200Hz.
    ADXL372_Write(ADI_ADXL372_MEASURE, 0x23);            //0x3Eu Loop Mode, Normal Noise, 1600Hz bandwidth
    ADXL372_Write(ADI_ADXL372_POWER_CTL, 0x18);        //0x3Fu Standby LPF enabled. HPF disabled. 16mSec Settle.
    if (iPm[1] >=1)
    ADXL372_ReadMap();
    ADXL372_Write(ADI_ADXL372_POWER_CTL, 0x1A);        // Instant On Mode = 10 

    which prorduce this

    ---INFO: AXDL372 in Instant ON with FIFO (AD Method). INT based on AWAKE. 
    Reg No: 0x00 = 0xAD
    Reg No: 0x01 = 0x1D
    Reg No: 0x02 = 0xFA
    Reg No: 0x03 = 0x02
    Reg No: 0x04 = 0x20
    Reg No: 0x05 = 0x00
    Reg No: 0x06 = 0x00
    Reg No: 0x07 = 0x00
    Reg No: 0x08 = 0x00
    Reg No: 0x09 = 0x00
    Reg No: 0x0A = 0x00
    Reg No: 0x0B = 0x00
    Reg No: 0x0C = 0x00
    Reg No: 0x0D = 0x00
    Reg No: 0x15 = 0x00
    Reg No: 0x16 = 0x00
    Reg No: 0x17 = 0x00
    Reg No: 0x18 = 0x00
    Reg No: 0x19 = 0x00
    Reg No: 0x1A = 0x00
    Reg No: 0x20 = 0x00
    Reg No: 0x21 = 0x00
    Reg No: 0x22 = 0x00
    Reg No: 0x23 = 0x03
    Reg No: 0x24 = 0xC1
    Reg No: 0x25 = 0x03
    Reg No: 0x26 = 0xC1
    Reg No: 0x27 = 0x03
    Reg No: 0x28 = 0xC1
    Reg No: 0x29 = 0x00
    Reg No: 0x2A = 0x03
    Reg No: 0x2B = 0xC1
    Reg No: 0x2C = 0x03
    Reg No: 0x2D = 0xC1
    Reg No: 0x2E = 0x03
    Reg No: 0x2F = 0xC1
    Reg No: 0x30 = 0x00
    Reg No: 0x31 = 0x00
    Reg No: 0x32 = 0x00
    Reg No: 0x33 = 0x00
    Reg No: 0x34 = 0x00
    Reg No: 0x35 = 0x00
    Reg No: 0x36 = 0x00
    Reg No: 0x37 = 0x00
    Reg No: 0x38 = 0x00
    Reg No: 0x39 = 0xFF
    Reg No: 0x3A = 0x3B
    Reg No: 0x3B = 0x40
    Reg No: 0x3C = 0x00
    Reg No: 0x3D = 0x60
    Reg No: 0x3E = 0x23
    Reg No: 0x3F = 0x18
    Reg No: 0x40 = 0x00

    Moving forward, I modified two register to turn off FIFO and use DRDY interrupt to stream the data in measurement mode as it come out from instant ON mode, it did not work, it keep firing once it on instant On Mode is enabled. 

    ADXL372_Write(ADI_ADXL372_FIFO_CTL, 0x38); //0x3Au FIFO disabled.

    ADXL372_Write(ADI_ADXL372_INT1_MAP, 0x01); //0x3Bu Map INT1 Pin to DRDY.

    ---INFO: AXDL372 in Instant ON without FIFO (Modified from AD) to Measurement Mode
    Reg No: 0x00 = 0xAD
    Reg No: 0x01 = 0x1D
    Reg No: 0x02 = 0xFA
    Reg No: 0x03 = 0x02
    Reg No: 0x04 = 0x20
    Reg No: 0x05 = 0x00
    Reg No: 0x06 = 0x00
    Reg No: 0x07 = 0x00
    Reg No: 0x08 = 0x00
    Reg No: 0x09 = 0x00
    Reg No: 0x0A = 0x00
    Reg No: 0x0B = 0x00
    Reg No: 0x0C = 0x00
    Reg No: 0x0D = 0x00
    Reg No: 0x15 = 0x00
    Reg No: 0x16 = 0x00
    Reg No: 0x17 = 0x00
    Reg No: 0x18 = 0x00
    Reg No: 0x19 = 0x00
    Reg No: 0x1A = 0x00
    Reg No: 0x20 = 0x00
    Reg No: 0x21 = 0x00
    Reg No: 0x22 = 0x00
    Reg No: 0x23 = 0x03
    Reg No: 0x24 = 0xC1
    Reg No: 0x25 = 0x03
    Reg No: 0x26 = 0xC1
    Reg No: 0x27 = 0x03
    Reg No: 0x28 = 0xC1
    Reg No: 0x29 = 0x00
    Reg No: 0x2A = 0x03
    Reg No: 0x2B = 0xC1
    Reg No: 0x2C = 0x03
    Reg No: 0x2D = 0xC1
    Reg No: 0x2E = 0x03
    Reg No: 0x2F = 0xC1
    Reg No: 0x30 = 0x00
    Reg No: 0x31 = 0x00
    Reg No: 0x32 = 0x00
    Reg No: 0x33 = 0x00
    Reg No: 0x34 = 0x00
    Reg No: 0x35 = 0x00
    Reg No: 0x36 = 0x00
    Reg No: 0x37 = 0x00
    Reg No: 0x38 = 0x00
    Reg No: 0x39 = 0xFF
    Reg No: 0x3A = 0x38   < FIFO = OFF. 
    Reg No: 0x3B = 0x01   <INT1 = DRDY
    Reg No: 0x3C = 0x00
    Reg No: 0x3D = 0x60
    Reg No: 0x3E = 0x23
    Reg No: 0x3F = 0x18
    Reg No: 0x40 = 0x00

    Why this does not work?

Reply
  • The EVALkit arrived (ADuM3906 EVAL with ADXL372-PIN and adaptor PCB). Having setup the CCES2.8.2 with needed packs and run successfully with the EVAL setup. I added a code to load ADXL372 register and explores the maps.

    I copied over the EVAL register to my project via this code. The code below also produce the register map. Once run, tap the ADXL372 and it worked successfully. Made me wonder why register map below is not listed in the datasheet?

    zInfo(" AXDL372 in Instant ON with FIFO (AD Method)");
    ADXL372_Write(ADI_ADXL372_POWER_CTL, 0x00); // Put to standby mode. Filter are disabled.
    ADXL372_Write_Threshold(30,30,0, 0, 0); // ACT/INACT = 30 => 3G to try out. Absolute setting.
    //----------------------------------------------------
    ADXL372_Write(ADI_ADXL372_HPF, 0x00);                        //0x38u HPF is disabled so not required.
    ADXL372_Write(ADI_ADXL372_FIFO_SAMPLES, 0xFF);  //0x39u
    ADXL372_Write(ADI_ADXL372_FIFO_CTL, 0x3B);            //0x3Au
    ADXL372_Write(ADI_ADXL372_INT1_MAP, 0x40);            //0x3Bu Map INT1 Pin to AWAKE.
    ADXL372_Write(ADI_ADXL372_INT2_MAP, 0x00);            //0x3Cu INT2 not used.
    ADXL372_Write(ADI_ADXL372_TIMING, 0x60);                 //0x3Du ODR = 3200Hz.
    ADXL372_Write(ADI_ADXL372_MEASURE, 0x23);            //0x3Eu Loop Mode, Normal Noise, 1600Hz bandwidth
    ADXL372_Write(ADI_ADXL372_POWER_CTL, 0x18);        //0x3Fu Standby LPF enabled. HPF disabled. 16mSec Settle.
    if (iPm[1] >=1)
    ADXL372_ReadMap();
    ADXL372_Write(ADI_ADXL372_POWER_CTL, 0x1A);        // Instant On Mode = 10 

    which prorduce this

    ---INFO: AXDL372 in Instant ON with FIFO (AD Method). INT based on AWAKE. 
    Reg No: 0x00 = 0xAD
    Reg No: 0x01 = 0x1D
    Reg No: 0x02 = 0xFA
    Reg No: 0x03 = 0x02
    Reg No: 0x04 = 0x20
    Reg No: 0x05 = 0x00
    Reg No: 0x06 = 0x00
    Reg No: 0x07 = 0x00
    Reg No: 0x08 = 0x00
    Reg No: 0x09 = 0x00
    Reg No: 0x0A = 0x00
    Reg No: 0x0B = 0x00
    Reg No: 0x0C = 0x00
    Reg No: 0x0D = 0x00
    Reg No: 0x15 = 0x00
    Reg No: 0x16 = 0x00
    Reg No: 0x17 = 0x00
    Reg No: 0x18 = 0x00
    Reg No: 0x19 = 0x00
    Reg No: 0x1A = 0x00
    Reg No: 0x20 = 0x00
    Reg No: 0x21 = 0x00
    Reg No: 0x22 = 0x00
    Reg No: 0x23 = 0x03
    Reg No: 0x24 = 0xC1
    Reg No: 0x25 = 0x03
    Reg No: 0x26 = 0xC1
    Reg No: 0x27 = 0x03
    Reg No: 0x28 = 0xC1
    Reg No: 0x29 = 0x00
    Reg No: 0x2A = 0x03
    Reg No: 0x2B = 0xC1
    Reg No: 0x2C = 0x03
    Reg No: 0x2D = 0xC1
    Reg No: 0x2E = 0x03
    Reg No: 0x2F = 0xC1
    Reg No: 0x30 = 0x00
    Reg No: 0x31 = 0x00
    Reg No: 0x32 = 0x00
    Reg No: 0x33 = 0x00
    Reg No: 0x34 = 0x00
    Reg No: 0x35 = 0x00
    Reg No: 0x36 = 0x00
    Reg No: 0x37 = 0x00
    Reg No: 0x38 = 0x00
    Reg No: 0x39 = 0xFF
    Reg No: 0x3A = 0x3B
    Reg No: 0x3B = 0x40
    Reg No: 0x3C = 0x00
    Reg No: 0x3D = 0x60
    Reg No: 0x3E = 0x23
    Reg No: 0x3F = 0x18
    Reg No: 0x40 = 0x00

    Moving forward, I modified two register to turn off FIFO and use DRDY interrupt to stream the data in measurement mode as it come out from instant ON mode, it did not work, it keep firing once it on instant On Mode is enabled. 

    ADXL372_Write(ADI_ADXL372_FIFO_CTL, 0x38); //0x3Au FIFO disabled.

    ADXL372_Write(ADI_ADXL372_INT1_MAP, 0x01); //0x3Bu Map INT1 Pin to DRDY.

    ---INFO: AXDL372 in Instant ON without FIFO (Modified from AD) to Measurement Mode
    Reg No: 0x00 = 0xAD
    Reg No: 0x01 = 0x1D
    Reg No: 0x02 = 0xFA
    Reg No: 0x03 = 0x02
    Reg No: 0x04 = 0x20
    Reg No: 0x05 = 0x00
    Reg No: 0x06 = 0x00
    Reg No: 0x07 = 0x00
    Reg No: 0x08 = 0x00
    Reg No: 0x09 = 0x00
    Reg No: 0x0A = 0x00
    Reg No: 0x0B = 0x00
    Reg No: 0x0C = 0x00
    Reg No: 0x0D = 0x00
    Reg No: 0x15 = 0x00
    Reg No: 0x16 = 0x00
    Reg No: 0x17 = 0x00
    Reg No: 0x18 = 0x00
    Reg No: 0x19 = 0x00
    Reg No: 0x1A = 0x00
    Reg No: 0x20 = 0x00
    Reg No: 0x21 = 0x00
    Reg No: 0x22 = 0x00
    Reg No: 0x23 = 0x03
    Reg No: 0x24 = 0xC1
    Reg No: 0x25 = 0x03
    Reg No: 0x26 = 0xC1
    Reg No: 0x27 = 0x03
    Reg No: 0x28 = 0xC1
    Reg No: 0x29 = 0x00
    Reg No: 0x2A = 0x03
    Reg No: 0x2B = 0xC1
    Reg No: 0x2C = 0x03
    Reg No: 0x2D = 0xC1
    Reg No: 0x2E = 0x03
    Reg No: 0x2F = 0xC1
    Reg No: 0x30 = 0x00
    Reg No: 0x31 = 0x00
    Reg No: 0x32 = 0x00
    Reg No: 0x33 = 0x00
    Reg No: 0x34 = 0x00
    Reg No: 0x35 = 0x00
    Reg No: 0x36 = 0x00
    Reg No: 0x37 = 0x00
    Reg No: 0x38 = 0x00
    Reg No: 0x39 = 0xFF
    Reg No: 0x3A = 0x38   < FIFO = OFF. 
    Reg No: 0x3B = 0x01   <INT1 = DRDY
    Reg No: 0x3C = 0x00
    Reg No: 0x3D = 0x60
    Reg No: 0x3E = 0x23
    Reg No: 0x3F = 0x18
    Reg No: 0x40 = 0x00

    Why this does not work?

Children
No Data