How to reduce power consumption when using BLE ?

Hi,

I am new to working in BLE. I am using nRF5340DF kit. I have generated a sample project and have added configurations in prj.conf as shown below

CONFIG_CONSOLE=n
CONFIG_UART_CONSOLE=n
CONFIG_BT=y

My main function code is 

void main(void)
{
    int err = 0;

    err = bt_enable(NULL);
    for (;;)
    {
      k_sleep(K_MSEC(1000));
    }
}

But when measuring power using PPK 2, i am able to see that BLE is using 273uA in idle state and if I am not using "CONFIG_BT=y" in the configuration file then the current used is only 6uA.

I am using k_sleep() to put the board in IDLE state. In my project I cannot put the board in "System OFF state".  Can any one please guide me how to reduce the idle power consumed in BLE ? 

Thanks in Advance.

Parents
  • Hi,

    It should be sufficient to set CONFIG_SERIAL=n. But you need to do it both for the application running on the application core and the network core (hci_rpmsg). To apply this setting to the network core build you can create a folder named 'child_image' where you add the kconfig fragment for your hci_rpmsg project. The folder structure should then look something like this:


    ├── child_image
    │ └── hci_rpmsg.conf
    ├── CMakeLists.txt
    ├── Kconfig
    ├── prj.conf
    ├── README.rst
    ├── sample.yaml
    └── src
    └── main.c

    Please see "multi image builds" for more details on how kconfig settings can be applied to child images.

    Best regards,

    Vidar

    Measurement result with peripheral_lbs sample built with CONFIG_SERIAL=n

    peripheral_lbs_lp.zip

Reply
  • Hi,

    It should be sufficient to set CONFIG_SERIAL=n. But you need to do it both for the application running on the application core and the network core (hci_rpmsg). To apply this setting to the network core build you can create a folder named 'child_image' where you add the kconfig fragment for your hci_rpmsg project. The folder structure should then look something like this:


    ├── child_image
    │ └── hci_rpmsg.conf
    ├── CMakeLists.txt
    ├── Kconfig
    ├── prj.conf
    ├── README.rst
    ├── sample.yaml
    └── src
    └── main.c

    Please see "multi image builds" for more details on how kconfig settings can be applied to child images.

    Best regards,

    Vidar

    Measurement result with peripheral_lbs sample built with CONFIG_SERIAL=n

    peripheral_lbs_lp.zip

Children
Related