High current consumption after using ipc_radio for network core

Hello, I am developing with nRF5340 with my custom board. I observed a high current consumption when the network core is flashed with the ipc_radio image. I am developing with NCS v3.0.2. The current consumption measurement is conducted with the hello_world example for Thingy53 as the target hardware. Current is measured via PPK2. 

For my project configuration prf.conf, I have:

CONFIG_LOG=n
CONFIG_USE_SEGGER_RTT=n
CONFIG_LOG_BACKEND_RTT=n
CONFIG_LOG_BACKEND_UART=n
CONFIG_RTT_CONSOLE=n
CONFIG_STDOUT_CONSOLE=n
CONFIG_UART_CONSOLE=n
CONFIG_CONSOLE=n
CONFIG_SERIAL=n

CONFIG_PM_DEVICE=y
CONFIG_PM=y
CONFIG_PM_DEVICE_RUNTIME=y

And for the ipc_radio's prj.conf placed under sysbuild/ipc_radio, I have:

CONFIG_BT_BUF_EVT_RX_SIZE=68
CONFIG_BT_BUF_EVT_RX_COUNT=4

CONFIG_BT_BUF_ACL_RX_SIZE=27
CONFIG_BT_BUF_ACL_TX_SIZE=27
CONFIG_BT_EXT_ADV=y
CONFIG_BT_EXT_ADV_MAX_ADV_SET=2
CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=251
CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL=y

CONFIG_BT_MAX_CONN=1
CONFIG_BT_CTLR_PHY_2M=y

# Disable or enable antenna front end module
CONFIG_MPSL_FEM=n

CONFIG_LOG=n
CONFIG_SERIAL=n
CONFIG_CONSOLE=n
CONFIG_UART_CONSOLE=n
CONFIG_USE_SEGGER_RTT=n
CONFIG_UART_NRFX=n
CONFIG_PM_DEVICE=y
CONFIG_PM_DEVICE_RUNTIME=y
CONFIG_PM=y

Finally for the Kconfig.sysbuild, I have:

source "${ZEPHYR_BASE}/share/sysbuild/Kconfig"

config NRF_DEFAULT_IPC_RADIO
	default y

When using hello_world without any modifications but only disable console and serial, I have a current profile like shown in the below figure. This is again, with empty network core. This gives me an average current of 250 uA.

However, when using hello_world with the above configurations, I have this current profile as shown in the next figure. This gives me an average current of 3.36 mA although I did not call bt_enable() at all in my code.

So simply enabling ipc_radio image on network core without actually use BT function is giving this much current consumption increase. Is this the expected behaviour? If not, what could be the optimisations to reduce this current consumption? I understand when both cores are enabled, there is this internal communication between the two core, is this the reason? 

Parents
  • Hello,

    The floor with the empty network core is also seems higher than expected (should normally be around 2 uA). Do you have any external circuitry on your custom board that would make this level expected? And do you see the same if you instead use the nRF5340DK as your build target? 

    Best regards,

    Vidar

  • Hello,

    Our custom board highly adopts the design from Thingy53, except that we excluded the microphone, buzzer and the light sensor, and used another pressure sensor instead of environmental sensor. We also had an SD controller to work with an SD card. 

    I have not yet tried to test the same with an nRF5340DK. This sounds like a great next move for debugging.

    Could you please also suggest if adding ipc_radio image increase current consumption is an expected behaviour, not considering the absolute current consumption number for this custom device?

    Also, are above configurations the recommended ones for low-power optimisation for network core if use ipc_radio?

    Many thanks,

    Shuhao 

  • Hello,

    The total system current, with your app running on the application core and ipc_radio on the network core should be around 3 uA during idle. The fact that you are seeing 3+ mA suggests that ipc_radio is not running correctly. Perhaps it is entering a boot loop. Either way, I would start with trying to use the DK as the build target to see if we can get to the expecte sleep current. The thingy target is including a lot of other things in the build such as mcuboot which could make troubleshooting more complicated.

Reply
  • Hello,

    The total system current, with your app running on the application core and ipc_radio on the network core should be around 3 uA during idle. The fact that you are seeing 3+ mA suggests that ipc_radio is not running correctly. Perhaps it is entering a boot loop. Either way, I would start with trying to use the DK as the build target to see if we can get to the expecte sleep current. The thingy target is including a lot of other things in the build such as mcuboot which could make troubleshooting more complicated.

Children
  • Hello,

    I have now tried to use nRF5340DK as the build target for the hello_world sample, and used the same prj.conf for ipc_radio, b0n and mcu_boot, the resulting current is around 82 uA on average. So this confirms that there are some configurations for the DK that are different from Thingy53 that caused this huge current draw. Could you please suggest my next best move?

  • Hello,

    Shuhao Dong said:
    So this confirms that there are some configurations for the DK that are different from Thingy53 that caused this huge current draw.

    Did you also build the same Hello World sample for thingy53 to confirm that the current draw goes up?

    Shuhao Dong said:
    resulting current is around 82 uA on average

    Did you also try running just the original Hello World sample with CONFIG_SERIAL=n? This would tell us what the floor current in System ON mode is with your HW. The nRF itself should only draw around 2uA in this mode.

Related