Wake on Motion, deep sleep mode setup

By allamovxeu , 16 July 2021

We have used MPU-9250 in the past and have upgraded to ICM-20948 recently.
We use the Wake on Motion(WOM) feature in both the cases.

We have followed the steps according to the flowchart in the MPU-9250 product specification documentation (section 6.1, Figure 3, page 31) in the past for our setup.
We have followed the same steps with ICM-20948 to enable WOM and put our sensor in deep sleep. However we have noticed that, the power draw is a lot more in deep sleep than when the sensor is functioning. Our sensors which used to stay functioning for more than 6 weeks with MPU-9250 now run out in 3-4 days with the upgrade to ICM-20948.

This got us thinking if we have enabled the WOM in the correct way and put the sensor to deep sleep mode properly, or is there some special way of handling it.

Below is a snapshot of steps we follow of how we do it for ICM-20948 taking the MPU-9250 as reference:

// Select bank 0
BANK_SEL, 0x00

// Reset ICM20948
PWR_MGMT_1, 0x80

// Make sure accelerometer is running
// In PWR_MGMT_1 (0x6B) make CYCLE = 0, SLEEP = 0 and STANDBY = 0
PWR_MGMT_1, 0x00

// Disable Gyroscope
PWR_MGMT_2, 0x07

// Disable alternative Interrupt Sources
INT_PIN_CFG, 0x00
INT_ENABLE_1, 0x00
INT_ENABLE_2, 0x00
INT_ENABLE_3, 0x00

// Enable Motion Interrupt
INT_ENABLE, 0x08

// Select bank 2
BANK_SEL, 0x20

// Set Accel LPF setting to 265 Hz Bandwidth
// ACCEL_CONFIG 2 (0x15): set ACCEL_FCHOICE_B = 1 and A_DLPFCFG[2:0] = 1(b001)
ACCEL_CONFIG_2, 0x09

// Enable Accel Hardware Intelligence
// ACCEL_INTEL_CTRL (0x12): set ACCEL_INTEL_EN = 1 and ACCEL_INTEL_MODE = 1
ACCEL_INTEL_CTRL, 0x03

// Set Motion Threshold
// ACCEL_WOM_THR (0x13): set the WOM_THRESHOLD[7:0] to 0 ~ 1020mg (1 LSB = 4mg)
ACCEL_WOM_THR, 0x8E

// Set Frequency of Wake-up
// ACCEL_SMPLRT_DIV (0x10/0x11): set ACCEL_SMPLRT_DIV[11:0] to 0.27 Hz ~ 1.125 kHz (1.125kHz / (ACCEL_SMPLRT_DIV + 1))
ACCEL_SMPLRT_DIV_1, 0x00
ACCEL_SMPLRT_DIV_2, 0x16

// Select bank 0
BANK_SEL, 0x00

// Enable Cycle Mode (Accel Low Power Mode)
// LP_CONFIG (0x05): set ACCEL_CYCLE = 1
LP_CONFIG, 0x32

Can you please tell us in case we are missing something, or if you have any documentation available for the same.
Could you also help direct some resources which we might find useful.

phpbb Topic ID
39113