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

High power consumption when running the BLE stack.

There is no 'low BLE power' example in the nRFConnect SDK for the nRF5340 - so I am just 'trying thinks' based on documentation I can find to come up with Application/BLE configuration that is low power.  My expectation for low power when the BLE stack running is less than 100uA when I am not actively transmitting/receiving.  From my application needs - I need sub 50uA.  However, when I measure (using the PPK2) my power usage never drops below 150uA and the average power usage is ~240uA see screen captures below.  The first screen capture is when I am 'idling'.  The second screen capture shows my BLE TX/RX activity every ~2sec.  I have rule out my non-BLE application by running with the BLE stack/network CPU running - and it averages around 9uA power consumption.  I am using SDK 1.5.1-rc1. Here are my project config files for the Application and Network images.  Note: I have configure the BLE stack to support higher throughput (larger buffers, larger MTUs, etc.) - however the Power usage did NOT change when I configured the stack for larger buffers/MTU/etc.

The short question: is there a reference design/example for a low power BLE application running on the nRF5340?  

App.conf

# Needed for the CPL OSAL
CONFIG_CPLUSPLUS=y
CONFIG_THREAD_CUSTOM_DATA=y
CONFIG_NEWLIB_LIBC=y

# Optional for CPL OSAL (but highly recommended)
CONFIG_THREAD_NAME=y
CONFIG_THREAD_ANALYZER=y
CONFIG_THREAD_ANALYZER_USE_PRINTK=y

# Board, Zephyr, etc.
CONFIG_ASSERT=y
CONFIG_GPIO=y

# Zephyr
CONFIG_MAIN_STACK_SIZE=4096
CONFIG_IDLE_STACK_SIZE=128
CONFIG_ISR_STACK_SIZE=1024
CONFIG_MPSL_SIGNAL_STACK_SIZE=640
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
CONFIG_HEAP_MEM_POOL_SIZE=8192


###################################################
## Enable Bluetooth
CONFIG_BT=y
CONFIG_BT_SMP=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_DEBUG_LOG=n
CONFIG_BT_DEVICE_NAME="Nordic_UART_Service"
#CONFIG_BT_DEVICE_APPEARANCE=833
CONFIG_BT_MAX_CONN=1
CONFIG_BT_MAX_PAIRED=1

# Enable the NUS service
CONFIG_BT_NUS=y

# Enable bonding
CONFIG_BT_SETTINGS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_NVS=y
CONFIG_SETTINGS=y

# Performance stuffs
CONFIG_BT_THROUGHPUT=y
CONFIG_BT_GATT_DM=y
CONFIG_BT_USER_DATA_LEN_UPDATE=y
CONFIG_BT_USER_PHY_UPDATE=y
CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=n
CONFIG_BT_RX_BUF_LEN=255
CONFIG_BT_GATT_CLIENT=y
CONFIG_BT_ATT_TX_MAX=10
CONFIG_BT_ATT_PREPARE_COUNT=2
CONFIG_BT_CONN_TX_MAX=10
CONFIG_BT_L2CAP_TX_BUF_COUNT=10
CONFIG_BT_L2CAP_TX_MTU=247
CONFIG_BT_L2CAP_RX_MTU=247
CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y
##################################################


##################################################
# Uncomment out to save power (2 orders of magnitude reduction).
CONFIG_USB_UART_CONSOLE=n
CONFIG_SERIAL=n
CONFIG_CONSOLE=n
CONFIG_UART_CONSOLE=n
CONFIG_LOG=n

# Uncomment for tracing, printf, TShell support, etc. Comment out to reduce power usage
#CONFIG_CONSOLE_GETCHAR=y
#CONFIG_CONSOLE_SUBSYS=y
#CONFIG_SERIAL=y
#CONFIG_CONSOLE=y
#CONFIG_UART_CONSOLE=y
##################################################

Net.conf

CONFIG_RPMSG_SERVICE=y
CONFIG_RPMSG_SERVICE_MODE_REMOTE=y

CONFIG_LOG=n
CONFIG_OPENAMP=y

CONFIG_IPM=y
CONFIG_IPM_NRFX=y

CONFIG_IPM_MSG_CH_1_ENABLE=y
CONFIG_IPM_MSG_CH_1_TX=y
CONFIG_IPM_MSG_CH_0_ENABLE=y
CONFIG_IPM_MSG_CH_0_RX=y

CONFIG_HEAP_MEM_POOL_SIZE=8192

CONFIG_MAIN_STACK_SIZE=512
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=512
CONFIG_BT=y
CONFIG_BT_HCI_RAW=y
CONFIG_BT_MAX_CONN=2
CONFIG_BT_CTLR_ASSERT_HANDLER=y
CONFIG_BT_HCI_RAW_RESERVE=1

CONFIG_BT_CTLR_TX_BUFFER_SIZE=251
CONFIG_BT_CTLR_DATA_LENGTH_MAX=251
CONFIG_BT_RX_BUF_LEN=255

Related