Feedback
Feedback

If you are having issues with the exercises, please create a ticket on DevZone: devzone.nordicsemi.com
Drag & Drop Files, Choose Files to Upload You can upload up to 2 files.

nRF54L power consumption demo – part 2

The section continues from the previous part, addressing the remaining tests.

Step 3.2 – Bluetooth LE Connection

3.2.1 Press button 1 on the DK. This will put the device in a connectable state. The device will be configured as a Bluetooth LE peripheral, broadcasting connectable advertising. Once it enters the connection state, it will first advertise its presence to nearby central devices through connectable advertising. The connectable advertising contains manufacturer-specific data to make it easy to filter for the device from the central.

Optional: The advertised packets can be examined over the air using Nordic Semiconductor’s simple and affordable Bluetooth LE sniffer. See the Lesson 6—Bluetooth LE sniffer in the Bluetooth LE Fundamentals course lesson. As detailed in the lesson, you will need another device that supports Bluetooth (Nordic Semiconductor’s DK or a Dongle) to perform the sniffing.

Content of the advertising data obtained using Wireshark+nRF Sniffer for Bluetooth LE

3.2.2 Establish a connection to the device. In here, we have three options for the Bluetooth LE central device:

  1. Central as another DK. It runs a central firmware customized for this demo.
  2. Central as a smartphone. It runs the nRF Connect for Mobile app.
  3. Central as a PC. It uses the web app Bluetooth LE Throughput Monitor and requires a compatible browser (for example, Google Chrome, Microsoft Edge).

Options 2 and 3 represent real-life situations where we don’t have complete control over the connection parameters used in the connection. Option 1, on the other hand, gives us full control over the connection parameters as we have finer Bluetooth LE stack control.

In Bluetooth LE connections, the central device—whether a PC, mobile, or another embedded device—controls connection parameters: connection interval, supervision timeout, and peripheral latency. These are set during the initial connection and can only be modified if the central approves. The peripheral can request updates, but these are treated as suggestions, not commands.

On PCs, the OS Bluetooth stack determines how flexible these settings are. Some allow manual tuning, while others stick to default values. On mobile devices, the operating system (Android or iOS) enforces stricter rules. iOS, in particular, has well-defined limits and will reject any parameter requests that fall outside its guidelines.

On embedded devices, like another DK, we have finer control over the Bluetooth LE stack running on these devices, and hence, we have full control over the connection parameters.

Regardless of the platform, the central always has the final say over connection parameters, and the peripheral cannot enforce changes on its own.

For the used physical layer (PHY), it depends on the capabilities of both ends (central and peripheral). The central or peripheral can request a PHY update after establishing the connection. The devices then negotiate based on their supported PHYs (for example, 1M, 2M or coded). The final PHY is a mutual agreement, not controlled solely by the central.

Now we have three options to do the test with:

Using another DK

With this method, we will use another Nordic Semiconductor Bluetooth LE-capable DK as the central Bluetooth LE device.

3.2.3 The first step to do is to flash it with the central firmware, depending on the DK you have, flash the appropriate central firmware:

Development Kit Firmware
nRF52840 DKnrf52840dk.hex
nRF52833 DKnrf52833dk.hex
nRF52 DKnrf52dk.hex
nRF5340 DKnrf5340dk.hex
nRF54L15 DKnrf54l15dk.hex

Use the Programmer app to flash the binary on the other DK , Follow the steps as we did in part 1 ( Step 1.4 – 1.7) to flash the other DK with the central firmware .

Once the central firmware is flashed to the other DK, the four LEDs on that DK will start blinking at a certain interval. The blinking interval represent the state of the device

LED0 – LED3 blinking intervalStatus
100 msDK is scanning for connectable advertising
1000 msDK is in connection with the nRF54L15 DK

3.2.4 The other DK will automatically connect with the nRF54L15 DK . This can be seen by the interval of blinking of the LEDs and is also possible to check through a terminal

3.2.5 Use the Power Profiler app to see the power consumption needed to maintain the connection with 0 throughput.

3.2.6 Press button 1 to change the throughput. This will set the low throughput mode (~ 8 kbps).

Same as in the previous step, observe the current consumption on the Power Profiler app. You should see a result around ~ 51 µA.

3.2.7 Press button 1 again to change the throughput. This will set the medium throughput mode (~ 400kbps).

Observe the current consumption on the Power Profiler app. You should see a value around ~1.31 mA:

3.2.8 Press button 1 again to change the throughput to high throughput mode (~ 800kbps).

Observe the current consumption on the Power Profiler app. You should see a value around 2.62 mA:

3.2.9 Press button 1 one more time to change the throughput to max throughput mode (~ 1.4Mbps).

Observe the current consumption on the Power Profiler app. You should see a value around ~4.49 mA:

Using a smartphone

With this method, the Bluetooth LE-capable chip on your mobile phone is used as a Bluetooth LE central. While testing, do not perform heavy Bluetooth operations like streaming audio over Bluetooth; otherwise, the throughput numbers will be impacted.

3.2.3 To establish a connection with the device, open nRF Connect for Mobile , From the SCANNER tab, filter by raw advertising data of 0x0059, then press SCAN

Filter by raw advertising data – Android

This will filter advertising devices and only list devices that advertise with the specified data in the packet.

Found device – Android

Click on CONNECT to connect to the DK. Once connected, click on the three-dot symbol to open the menu to Request MTU. Type in 498 (this value is the maximum possible on most Android devices).

Open connection menu – Android
Request MTU – Android

You can always swipe to the right to get the logs of the connection, as shown below:

Accessing logs – Android

After that, subscribe to the Nordic UART Service – TX Characteristic notification by clicking on the three arrow symbol next to it. This is where we get the data from the development kit.

Subscribe to the Nordic UART Service(NUS) – TX Characteristic notification

3.2.4 Use the Power Profiler app to see the power consumption needed to maintain the connection with zero throughput; a value of ~ 25 µA is expected. Note that this value will depend heavily on the connection interval agreed upon by the central. It’s possible to change the connection parameters on Android using the nRF Connect for Mobile app by tapping the three-dot menu and selecting Request Connection Priority (High, Balanced, Low Power).

3.2.5 Press button 1 to change the throughput. This will set the low throughput mode (~ 8 kbps). You could swipe to the right in nRF Connect for Mobile to see the content of the packets received.

As in the previous step, observe the current consumption of the Power Profiler app. You should see a result around ~ 51 µA. Again, this number will depend on the connection parameters set by the central.

3.2.6 Press button 1 again to change the throughput. This will set the medium throughput mode (~ 400kbps; the exact number will vary depending on the central).

Observe the current consumption on the Power Profiler app. You should see a value around ~1.31 mA.

3.2.7 Press button 1 again to change the throughput to high throughput mode (~ 800kbps).

The exact number will vary depending on the central, and it may not be achievable on some old mobile devices.

Observe the current consumption on the Power Profiler app. You should see a value around ~2.62 mA.

3.2.8 Press button 1 one more time to change the throughput to max throughput mode (~ 1.4Mbps). The exact number will vary depending on the central, and it may not be achievable on some old mobile devices.

Observe the current consumption on the Power Profiler app. You should see a value around ~4.49 mA.

Using the web app

With this method, the Bluetooth LE-capable chip on your computer is used as a Bluetooth LE central. While testing, do not perform heavy Bluetooth operations like streaming audio over Bluetooth; otherwise, the throughput numbers will be impacted.

We will use the Bluetooth LE Throughput Monitor web application. The web app is a simple JavaScript that uses the Web Bluetooth API to scan and connect with the DK. It subscribes to the NUS characteristic, parses the received packets, and measures the connection’s throughput. Note that the Web Bluetooth API is compatible with a few browsers; you can check the full browser compatibility table.

3.2.3 To establish a connection with the device, use the web app (hosted: https://academy.nordicsemi.com/nrf54ldemowebcentral/, also available to run locally in the GitHub repo) and click on the ”Connect to Device” button. Note that the web tool will filter and display only the compatible device advertising the custom manufacturer data.

Connecting to the DK using the web app

You should see the throughput as zero since the firmware is configured not to send data immediately. After 6 seconds, the connection parameters details will populate in the Connection Status field.

3.2.4 Use the Power Profiler app to see the power consumption needed to maintain the connection with 0 throughput. Note that this will depend heavily on the connection interval agreed upon by the central; a higher or lower average current number than the one shown below is expected.

3.2.5 Press button 1 to change the throughput. This will set the low throughput mode (~ 8 kbps).

Same as in the previous step, observe the current consumption on the Power Profiler app. You should see a results around ~ 51 µA. Again, the average current will depend on the connection parameters set by the central:

3.2.6 Press button 1 again to change the throughput. This will set the medium throughput mode (~ 400kbps; the exact number will vary depending on the central).

Observe the current consumption on the Power Profiler app. You should see a value around ~1.31 mA:

3.2.7 Press button 1 again to change the throughput to high throughput mode (~ 800kbps).

The exact throughput number will vary depending on the central, and it may not be achievable on some operating systems.

Observe the current consumption on the Power Profiler app. You should see a value around 2.62 mA:

3.2.8 Press button 1 one more time to change the throughput to max throughput mode (~ 1.4Mbps). The exact number will vary depending on the central, and on some operating systems, it is not achievable:

Observe the current consumption on the Power Profiler app. You should see a value around ~4.49 mA:

Step 3.3 – General CPU Processing

In this state, the device engages in intensive computational activity. Every 2.5 seconds, it will solve approximately 1 million quadratic equations and then transition to an idle state. Notably, there is no radio activity during this state, focusing solely on processing power.

3.3.1 Press button 2 to enter the general processing state.

3.3.2 Observe the average current consumption using the Power Profiler. You should see an average current of ~ 431 µA:

Power consumption – general CPU processing

Step 3.4 – System On mode

As we covered in Lesson 3 – Power and clock management, the System ON mode, can operate in either an IDLE or RUN state. The specific state depends on the executing application and also on software configuration. The power and clock management unit dynamically controls internal power domains, switching them on and off based on power requirements, which are tied to the CPU and peripherals’ activity level. When the software has threads that are in a sleeping state and there is no ongoing activity on the peripherals, the device transitions into the System ON-IDLE state. In this state, the expected current consumption is approximately 2.9 µA, as verified during the testing.

In the System ON – IDLE state, we can also control the RAM memory retention. RAM memory retention refers to the ability to preserve the data stored in specific RAM sections. To reduce the overall current consumption, individual RAM sections can be powered off if their content does not need to be retained. For example, in System ON – IDLE current consumption at 3.0 V is ~ 2.9 μA with 256 KB RAM (full memory) retained, but drops to 2.0 μA when only 96 KB RAM is retained. This demonstrates that retaining less RAM directly reduces power. The MEMCONF register gives us full control of the RAM section power and retention. Nordic Semiconductor’s Hardware Abstraction Layer (HAL) provides user-friendly APIs to control this.

3.4.1 Using the Programmer app, flash the binary file mem_ret_192.hex to your development kit. In this firmware binary, we are powering and retaining only 192KB of RAM in System ON – IDLE mode.

3.4.2 Observe the average current in System ON-IDLE mode using the Power Profiler. You should see an average current of approximately 2.6 µA. All the previous functionality is maintained.

System ON-IDLE with 192 KB RAM retention

3.4.3 Using the Programmer app, flash the binary file mem_ret_96.hex to your development kit. In this firmware binary, we are powering and retaining only 96KB of RAM in System ON – IDLE mode.

3.4.4 Observe the average current in System ON-IDLE mode using the Power Profiler. You should see an average current of approximately 2.0 μA. All the previous functionality is maintained.

System ON-IDLE with 96 KB RAM retention

Step 3.5 – System OFF mode

As we covered in Lesson 2, the System OFF mode represents the deepest power-saving state the device can enter. In this state, the device’s core functionality is powered down, and all ongoing tasks are stopped. This mode is ideal for applications requiring the absolute lowest power consumption and can sleep for long periods of time. The nRF54L Series offers the following range of wake-up sources from System OFF:

  • GPIO DETECT signal
  • LPCOMP ANADETECT signal
  • NFCT SENSE signal (wake-on-field)
  • GRTC SYSCOUNTER compare event
  • Starting a debug session
  • Pin reset

You also have the option to retain memory sections in System OFF. In this demo, we set up the device to enter System OFF mode by pressing button 3, which can be exited by pressing any button on the DK (GPIO DETECT signal). Note that the device resets after waking up from System OFF mode, which is completely different from the System On – IDLE mode.

3.5.1 Press button 3 twice to enter System OFF mode. By default, GRTC is kept as a wake-up source (even if you are not using it as one), and no memory is retained.

3.5.2 Observe the average power consumption on the Power Profiler. You should see an average current of ~1.00 uA. By default, GRTC is enabled (even though we are not using it as a wake-up source). If you press any button, the device will wake up from System OFF mode and reset.

System OFF with GRTC & GPIO DETECT signal wakeup

3.5.3 Now let’s disable GRTC as a wake-up source and try to measure the average current in System OFF. Open the Programmer app and flash this binary file systemoff_grtc_off.hex.

3.5.4 Observe the average current consumption using the Power Profiler. You should see a drop of about 0.2 uA from the previous current.

System OFF with GPIO DETECT signal wakeup

Demo source code

The source code for the demo running on the nRF54L Series hardware is located in the demo_app directory of the course repository. The web application source code resides in the web_app directory. The Peer application, located in the peer_app directory, serves as a Bluetooth LE central for connection testing and is compatible with all Nordic Semiconductor’s Bluetooth-LE capable development kits.

Switch language?

Progress is tracked separately for each language. Switching will continue from your progress in that language or start fresh if you haven't begun.

Your current progress is saved, and you can switch back anytime.

Register an account
Already have an account? Log in
(All fields are required unless specified optional)

  • 8 or more characters
  • Upper and lower case letters
  • At least one number or special character

Forgot your password?
Enter the email associated with your account, and we will send you a link to reset your password.