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