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

peripheral uart power consumption

So,

I've got  a working framework for my project - a battery powered appliance that will occasionally trigger one of two solenoids, timestamping the operation and subsequently reporting them to a bluetooth connected phone.

I developed initially on a nRF52 DK (PCA10040 - nRF52832), putting together a heavily modified peripheral_uart sample with I2C and ADC support.

On the nRF52, when idling (Advertising only at a 2 second interval) I measured current consumption at 8 uA  at the current measurement pins while supplying 3.0V at the External Supply pins..

I ported to a newly received nRF5340 DK with minimal changes (GPIO port assignments moved from gpio 0 to gpio 1).  At the same idle state as the nRF52832 (the main loop is a k_sleep(K_FOREVER); statement), current consumption at P22 with power supplied at P21 at  3.0V from a regulated power supply) at about .37 mA.

I had to compile and load  hci_rpmsg to get bluetooth connectivity - as delivered  the nRF5340DK did not seem to have a network core.

Where do I go from here to get reasonable current consumption?

Parents
  • The advertising interval is set to 2 seconds.

    I commented out everything in main() except for the loop

           for(;;)

                 {k_sleep(k_forever);

                 }

    When

    CONFIG_HAS_POWER_STATE_DEEP_SLEEP_1=y is set

    power consumption is 3.5uA. An nearly as I can tell from my DMM this is unchanging.

    When

    CONFIG_HAS_POWER_STATE_DEEP_SLEEP_1is not set

    power consumption is 53uA.

    Uncommenting the balance of main, which enables I2C, ADC, and GPIO, connects to blue tooth and starts advertising, power consumption is 53uA, with a visible spike every two seconds.

  • According to this  CONFIG_HAS_POWER_STATE_DEEP_SLEEP_1 would put the device to deep sleep (system off) after a power down timeout. But I don't see it would reduce current consumption if you just simply use k_sleep() (it retain in Idle mode which is System ON)

    3.5uA base current is expected when staying in System ON. When you turn on peripheral (i2C, ADC, GPIO input) it's expected to have power consumption increased. So I don't see any abnormal here after you turn off the logging in the netcore module.

    The best way IMO to verify the power consumption is to use a PPK and can visualize the power consumption over time. 

Reply
  • According to this  CONFIG_HAS_POWER_STATE_DEEP_SLEEP_1 would put the device to deep sleep (system off) after a power down timeout. But I don't see it would reduce current consumption if you just simply use k_sleep() (it retain in Idle mode which is System ON)

    3.5uA base current is expected when staying in System ON. When you turn on peripheral (i2C, ADC, GPIO input) it's expected to have power consumption increased. So I don't see any abnormal here after you turn off the logging in the netcore module.

    The best way IMO to verify the power consumption is to use a PPK and can visualize the power consumption over time. 

Children
No Data
Related