I am using the BMA490L and would like to use low power mode with an ODR of 25Hz and no averaging. On the datasheet, it says that if I do this, I should be consuming only 8uA of current, however when I try to go to low power mode I actually end up consuming around 70uA of current. What are the correct instructions, sequence of instructions, and delays for me to achieve this 8uA low current consumption. I would like to store the data in the FIFO buffer and trigger a watermark interrupt to read the data from low power mode.
Solved! Go to Solution.
Why you got such high current consumption was two reason.
First, you didn't enable advanced power mode, please enable advanced power mode before running your application.
Second, the best current consumption in our datasheet is optimal test case, not for FIFO case.
Unfortuantely, we don't provide official example code, but I made a FIFO example in quick as the attached file.
I can't measure exactly, but the current consumption is around 10uA.
You might optimize more, but could be good start point 🙂
Key point is I put rslt = bma490l_set_advance_power_save(BMA490L_ENABLE, &bma490l_dev); end of my setup function.
You also can check page 16 in our datasheet regarding FIFO in power mode.
Thanks for the reply. However, I believe I did enable the advanced power mode I believe. Below are all the values I initialize the registers with. I initialize them in the same order and have a 1 second gap between writing to each register. Am I using the wrong values or doing something else wrong?
FIFO_WTM_0 = 0x46;
FIFO_WTM_0 = 0b11000000;
FIFO_WTM_1 = 0x47;
FIFO_WTM_1 = 0b00000011;
FIFO_CONFIG_0 = 0x48;
FIFO_CONFIG_0 = 0b00000000;
FIFO_CONFIG_1 = 0x49;
FIFO_CONFIG_1 = 0b01000000;
INT_MAP_DATA = 0x58;
INT_MAP_DATA = 0b00000010;
INT1_IO_CTRL = 0x53;
INT1_IO_CTRL = 0b00001010;
ACC_CONF = 0x40;
ACC_CONF = 0b00000110;
PWR_CONF = 0x7C;
PWR_CONF = 0x03;
PWR_CTRL = 0x7D;
PWR_CTRL = 0x04;