This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Low power with peripherals, I2C and SPI in nrf52

Hi everybody, We are using a custom board based in nrf52832, BLE and a custom antenna, and we are finding some issues trying to use the device in low power mode. We are using I2C and SPI communications and we have the following set of sensors:

Accelerometer gyroscope and magnetometer (BMX055 from Bosch: datasheet) Ultraviolet sensor (SI1133 datasheet ) Gas gauge / battery monitor datasheet

We have tried putting the sensors in their low power mode, and our objective is having a mean current consumption of 500uA.

We are using the softdevice s132 with the SDK v13 and even trying to use System OFF / System ON to minimize the consumption. Using this we have achieved 1uA / 100uA in the development board, but the minimum current we have achieved in our custom board is of 5mA (non acceptable) We have discarded a hardware problem Here is our very basic code, where we have achieved the minimum power in the custom board. Any help would be appreciated!

main.c

Thanks in advance

Edit:

We have done the following:

  • Put the UV sensor in deep suspend mode. Now the system consumes 2mA~
  • We have tried to use SystemOFF instead of SystemON and the result is that the system consumes about 1,6~mA, (-300 - 400 uA), so it makes sense that the CPU is running correctly. What else could it be?
  • 5mA suggests that either the CPU or the radio is working hard. Both can be the result of a software failure I suppose. But how have you ruled out a hardware issue? Are you sure there are no shorts or bad solder joints etc. on your device?

    A typica software scenario is that your application asserts or hardfaults sending your code into an endless while loop for debugging or just resets your device over and over endlessly.

    Have you tried standard examples from the SDK? How is the current consumption then?

    I think you may have forgotten attach your code.

  • Hi Martin, thanks for your answer! The hardware was given to us from a trustable party, so after telling the issue they ruled out the hardware possibility. We will take a look to the link you sent us and test that. The examples from the SDK are the basis of the code, but since the peripherals have to be configured in low consumption, if we do not do that, a high consumption appears (12mA). Edited the question with the main file

    Thanks again!

  • I have updated the issue with new hints. We have done the following: Put the UV sensor in deep suspend mode. Now the system consumes 2mA~ We have tried to use SystemOFF instead of SystemON and the result is that the system consumes about 1,6~mA, (-300 - 400 uA), so it makes sense that the CPU is running correctly.

    What else could it be?

    1. Can you try the plain ble_app_template example from our SDK and measure the current?
    2. Even the most trustable parties have a certain failure rate of their products. We can't even rule out a faulty nRF52 chip. The device might have been damaged during shipping too.
    3. In your main.c file it looks like the sensors are just being initialized. Is it so that they are not being used and not supposed to draw any power?
    4. Are you able to get a picture of the current plotted over time? Current spikes and patterns can give us a clue of what it is that draws current.
    5. Unless you are transmitting or receiving data continuously it is very unlikely that the nRF52 draws 12mA alone.
    6. If you have it, can you upload the schematics and PCB layouts? You can do it in private if you open a support case in MyPage.
  • Hello again Martin, and thanks for the answer. 1- We have tested the ble_app_template and we are measuring 6mA~ (without touching the parts where YOUR_JOB appears).

    2- You are right. Nevertheless we have 10 samples and it appears to happen the same in each one of them.

    3- Correct. If we don't configure them in low power mode, for example the gyroscope will draw about 4 mA by its own, so we initialize them in low power mode and then we don't use them.

    4- We don't have the PPK neither an oscilloscope, so I'm afraid this would be not possible by the moment. We are using a multimeter to measure the current

    5- We are not sending anything by the moment to find out what is the issue

    6 -I will now create the case and upload the files.

    Thanks a lot!

Related