This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

nrf52840 not entering lower power mode, using development kit with sample BLE application

Hello,

I have the Power Profiler Kit II and nRF52840DK (development kit).  I was able to get these working together so I can source the power from the PPK and see the realtime power consumption.  I'm using the peripheral_lbs BLE example from the nRF Connect SDK.  Its working well, i'm able to using the nRF Connect app on my android phone to see the button change status with BLE notification, and write to the LED over secure, bonded link.   All's well there, the primary functionality we're looking for is working.  

BUT, when I try to modify the application to force the processor into low power mode during the 1 second 'k_sleep', it doesn't seem to change from 3mA baseline at all.  I understand the spikes are the advertisements or connection keep alive, and turning on the LED also consumes another 5mA of current.  I'm going to disable the LED soon.  The USB is not connected to the DK board, only the black and red power leads from the PPK.

The power management was already enabled in the Kconfig, so I enabled device power management and disabled the UART for console (UART_CONSOLE).  This did not yield any better results.

I did lots of googling on how to enable low power mode, it seems there are some API calls I can make in the main function to enable low power mode, but its very confusing as to which one will work.  I tried adding a few suggestions, but they wouldn't compile.

thanks

Jerry

Parents
  • Hi, if you connect the PPK to the external supply header, the measurements will include the current to the whole DK, including the debugger chip, some analog switches, LEDs, etc.

    So what you have to do is to set SW10 (Vext -> nRF) to the ON position and SW6 to nRF only. Now the external supply header is isolated from the rest of the DK, powering only the nRF52. Next step is to connect the USB cable (to J2), because you need to power the debugger, otherwise there will be leakage currents going from the nRF52 to the debugger chip, through the SWD and RESET lines.

    The software running should be low power by default, so it should be enough to use k_sleep() forcing the CPU to idle mode. There can be active peripherals however, like the UART, as you mention, but I think you have to use CONFIG_SERIAL=n to actually turn off the UART as well, not just the console.

    Best regards,
    Stian

Reply
  • Hi, if you connect the PPK to the external supply header, the measurements will include the current to the whole DK, including the debugger chip, some analog switches, LEDs, etc.

    So what you have to do is to set SW10 (Vext -> nRF) to the ON position and SW6 to nRF only. Now the external supply header is isolated from the rest of the DK, powering only the nRF52. Next step is to connect the USB cable (to J2), because you need to power the debugger, otherwise there will be leakage currents going from the nRF52 to the debugger chip, through the SWD and RESET lines.

    The software running should be low power by default, so it should be enough to use k_sleep() forcing the CPU to idle mode. There can be active peripherals however, like the UART, as you mention, but I think you have to use CONFIG_SERIAL=n to actually turn off the UART as well, not just the console.

    Best regards,
    Stian

Children
  • Hello,

    Thanks so much!  I'm seeing below 2 microamps now during sleep.  If you think I can get it lower, please advise.

    I added these lines in the prj.conf file.  There were some warnings during the cmake config of Zephyr because the UART/serial was not available, but it still was able to build.

    Next on the list is setting up the connection interval to 4000 msec (maximum allowed).  I was able to do this with the nRF Connect tool before, but now that i'm running 'stand alone' (no serial/usb), I want to configure in the build somehow.  Right now average current during connection is still too high, and not close to what the online power profiler said that could be achieved.  I'm looking for < 10 microamps average.

Related