Silicon & Chip Vendors

Silicon & Chip Vendors

Optimizing BLE Throughput on nRF5340: A Deep Dive into LE Coded PHY and Data Length Extension Register Tuning

In the competitive landscape of Bluetooth Low Energy (BLE) wireless communication, maximizing throughput is a critical requirement for applications such as high-fidelity audio streaming, over-the-air firmware updates, and sensor data aggregation. The Nordic Semiconductor nRF5340, a dual-core Arm Cortex-M33 SoC, offers a powerful BLE controller with advanced features like LE Coded PHY and Data Length Extension (DLE). However, achieving peak throughput requires careful tuning of the radio’s physical layer parameters and link-layer registers. This article provides a technical deep dive into optimizing BLE throughput on the nRF5340 by leveraging LE Coded PHY for extended range and DLE for larger payloads, with a focus on register-level configuration and performance trade-offs.

Understanding the nRF5340 BLE Controller Capabilities

The nRF5340’s BLE controller supports Bluetooth 5.2 features, including LE 1M PHY, LE 2M PHY, and LE Coded PHY (S=2 and S=8 coding). The controller also implements Data Length Extension (DLE), which allows the maximum application payload per packet to be extended from 27 bytes to 251 bytes. These features directly impact throughput: LE Coded PHY introduces coding overhead but improves range, while DLE reduces protocol overhead by sending larger packets in each connection event. The key to optimization lies in balancing these parameters based on the application’s range and latency requirements.

From a hardware perspective, the nRF5340’s radio is highly configurable through a set of registers in the RADIO peripheral and the BLE controller’s internal link-layer state machine. Developers must understand the interaction between the PHY mode, connection interval, and the maximum PDU size to achieve theoretical throughput limits. For example, on a clean channel with LE 2M PHY and DLE enabled, the nRF5340 can achieve over 1.3 Mbps application throughput, but this drops significantly when LE Coded PHY is used due to the coding gain overhead.

LE Coded PHY: Range vs. Throughput Trade-offs

LE Coded PHY is a Bluetooth 5 feature that uses Forward Error Correction (FEC) to improve receiver sensitivity by up to 6 dB (S=2) or 9 dB (S=8), effectively doubling or quadrupling the range compared to LE 1M PHY. However, this comes at the cost of reduced raw data rate. The LE Coded PHY uses a pattern mapper that encodes each bit into a 2-bit or 8-bit symbol. For S=2 coding, the raw on-air data rate is 500 kbps, while for S=8 coding it is 125 kbps. This is a significant reduction from the 1 Mbps of LE 1M PHY or 2 Mbps of LE 2M PHY.

When optimizing throughput on the nRF5340, the choice of PHY must be aligned with the application’s range budget. For example, in a warehouse environment with long distances, LE Coded PHY S=8 might be necessary, but the throughput will be lower. In contrast, for high-data-rate applications like audio streaming, LE 2M PHY is preferred. The nRF5340 supports automatic PHY switching via the Link Layer Control procedure, allowing the device to fall back to a more robust PHY if packet error rates increase. The following code snippet demonstrates how to configure the nRF5340’s BLE stack to support multiple PHYs and request a specific PHY for a connection:

#include <zephyr/bluetooth/bluetooth.h>
#include <zephyr/bluetooth/conn.h>

void phy_update_callback(struct bt_conn *conn,
                         enum bt_conn_le_phy_state state,
                         struct bt_conn_le_phy_info *info)
{
    if (state == BT_CONN_LE_PHY_STATE_UPDATED) {
        printk("PHY updated: TX PHY %d, RX PHY %d\n",
               info->tx_phy, info->rx_phy);
    }
}

void configure_phy(struct bt_conn *conn)
{
    struct bt_conn_le_phy_param phy_param;
    phy_param.options = BT_CONN_LE_PHY_OPT_NONE;
    phy_param.pref_tx_phy = BT_CONN_LE_PHY_2M;
    phy_param.pref_rx_phy = BT_CONN_LE_PHY_2M;
    
    bt_conn_le_phy_update(conn, &phy_param);
}

In this example, the application requests LE 2M PHY for both TX and RX. The callback handles the PHY update event. For LE Coded PHY, the BT_CONN_LE_PHY_CODED constant is used. Note that the nRF5340’s controller automatically handles the coding scheme (S=2 or S=8) based on the link-layer configuration. To force a specific coding, developers can use the BT_CONN_LE_PHY_OPT_CODED_S2 or BT_CONN_LE_PHY_OPT_CODED_S8 options in the bt_conn_le_phy_param structure.

Data Length Extension (DLE) Register Tuning

Data Length Extension is a critical feature for achieving high throughput. By default, BLE packets have a maximum payload of 27 bytes (including the Link Layer header). With DLE enabled, the maximum PDU size can be negotiated up to 251 bytes, reducing the overhead of packet headers and inter-frame spacing. On the nRF5340, DLE is enabled by default in the Zephyr BLE stack, but the actual PDU size used in a connection is negotiated during the LL_LENGTH_REQ/LL_LENGTH_RSP procedure. The controller’s internal registers control the maximum TX and RX PDU sizes.

From a register-tuning perspective, the nRF5340’s BLE controller exposes the CONN_CTX registers that store the negotiated DLE parameters. While these are typically managed by the SoftDevice Controller (SDC) or the Zephyr BLE host, advanced developers can directly configure the maximum PDU size via the host stack. For example, in Zephyr, the CONFIG_BT_CTLR_DATA_LEN_MAX Kconfig option sets the maximum TX PDU size. The following code shows how to request a specific data length from the application layer:

void data_len_update_callback(struct bt_conn *conn,
                              struct bt_conn_le_data_len_info *info)
{
    printk("Data length updated: TX len %d, RX len %d\n",
           info->tx_len, info->rx_len);
}

void request_data_length(struct bt_conn *conn)
{
    struct bt_conn_le_data_len_param dle_param;
    dle_param.tx_len = 251;   // maximum TX PDU size
    dle_param.tx_time = 2120; // maximum TX time in microseconds
    
    bt_conn_le_data_len_update(conn, &dle_param);
}

The tx_time parameter is critical: it defines the maximum time the packet can occupy on the air. For LE 1M PHY, the maximum time for a 251-byte PDU is 2120 µs (including preamble, access address, CRC, and MIC). For LE 2M PHY, this time is halved to 1060 µs. When using LE Coded PHY, the time increases due to the FEC coding. For S=8 coding, the maximum PDU time is 17040 µs, which limits the number of packets per connection event. Therefore, when tuning DLE with LE Coded PHY, the connection interval must be set large enough to accommodate the longer packet times.

Performance Analysis: Throughput Calculations

To illustrate the impact of these parameters, consider a typical scenario: a connection interval of 7.5 ms (the minimum allowed) with DLE enabled (251-byte PDUs) and LE 2M PHY. The theoretical throughput can be calculated as follows:

  • Raw PHY rate: 2 Mbps
  • Packet overhead: 1 byte preamble + 4 bytes access address + 2 bytes header + 4 bytes CRC + 4 bytes MIC = 15 bytes
  • Maximum PDU payload: 251 bytes
  • Total packet length: 251 + 15 = 266 bytes = 2128 bits
  • Air time per packet: 2128 bits / 2 Mbps = 1064 µs
  • Maximum packets per connection event (assuming no interference): floor(7500 µs / (1064 µs + 150 µs IFS)) ≈ 6 packets
  • Throughput: 6 packets × 251 bytes × 8 bits / 7.5 ms ≈ 1.6 Mbps

This is close to the theoretical maximum for BLE 5.2. In practice, the nRF5340 achieves around 1.3–1.4 Mbps due to scheduling overhead and radio turn-around times. When using LE Coded PHY S=8, the same calculation yields a throughput of only ~0.1 Mbps due to the longer air time and coding overhead. The trade-off is clear: LE Coded PHY is suitable for long-range, low-throughput applications.

Practical Tuning Guidelines for nRF5340

Based on the above analysis, the following guidelines can help optimize BLE throughput on the nRF5340:

  • Choose the right PHY: Use LE 2M PHY for maximum throughput in short-range scenarios. Use LE Coded PHY only when range is critical and throughput is secondary.
  • Enable DLE and negotiate maximum PDU size: Always request the maximum 251-byte PDU size during connection setup. Ensure the connection interval is large enough to accommodate multiple packets (e.g., 30–50 ms for LE Coded PHY).
  • Optimize connection interval: For LE 2M PHY, use the minimum connection interval (7.5 ms) to maximize the number of connection events per second. For LE Coded PHY, increase the interval to 30–50 ms to allow enough time for larger packets.
  • Monitor packet error rate (PER): Use the nRF5340’s radio event counters to track PER. If PER exceeds 5%, consider switching to a more robust PHY or reducing the PDU size.
  • Use the nRF Connect SDK’s throughput example: Nordic provides a throughput sample in the nRF Connect SDK that demonstrates DLE and PHY switching. Use this as a baseline for your application.

Conclusion

Optimizing BLE throughput on the nRF5340 requires a deep understanding of the interplay between LE Coded PHY, Data Length Extension, and connection parameters. By carefully tuning the PHY mode, DLE register values, and connection interval, developers can achieve application-level throughput exceeding 1.3 Mbps with LE 2M PHY, or extend range by up to 4x with LE Coded PHY at the cost of reduced data rate. The nRF5340’s flexible radio and BLE controller make it an ideal platform for applications that demand both high performance and reliability. As Bluetooth 5.2 continues to evolve, mastering these low-level optimizations will be key to building competitive wireless products.

常见问题解答

问: What is the maximum application throughput achievable with LE Coded PHY on the nRF5340, and how does it compare to LE 2M PHY?

答: The maximum application throughput with LE Coded PHY on the nRF5340 is significantly lower than with LE 2M PHY due to coding overhead. For S=2 coding, the raw on-air data rate is 500 kbps, and for S=8 coding it is 125 kbps. In contrast, LE 2M PHY can achieve over 1.3 Mbps application throughput on a clean channel with DLE enabled. The trade-off is range: LE Coded PHY improves receiver sensitivity by up to 6 dB (S=2) or 9 dB (S=8), effectively doubling or quadrupling range compared to LE 1M PHY.

问: How does Data Length Extension (DLE) improve throughput on the nRF5340, and what register tuning is involved?

答: DLE improves throughput by allowing the maximum application payload per packet to be extended from 27 bytes to 251 bytes, reducing protocol overhead per connection event. On the nRF5340, this requires configuring the link-layer registers to set the maximum PDU size, typically through the BLE controller’s internal state machine. Developers must ensure the connection interval and PHY mode are optimized to accommodate larger packets without exceeding the connection event time, maximizing effective data rate.

问: What are the key trade-offs between using LE Coded PHY and LE 2M PHY for BLE throughput optimization on the nRF5340?

答: The key trade-off is range versus throughput. LE Coded PHY (S=2 or S=8) provides extended range through FEC, improving receiver sensitivity by up to 9 dB, but reduces raw data rate to 500 kbps or 125 kbps. LE 2M PHY offers higher throughput (up to 2 Mbps raw) but with shorter range. For applications like warehouse sensor networks, LE Coded PHY may be necessary for reliable long-distance communication, while high-fidelity audio streaming benefits from LE 2M PHY’s higher data rate. The choice must align with the application’s range budget and latency requirements.

问: Can I achieve the theoretical throughput limits of the nRF5340 with LE Coded PHY and DLE simultaneously?

答: Achieving theoretical throughput limits with both LE Coded PHY and DLE simultaneously is challenging due to inherent trade-offs. LE Coded PHY reduces the raw data rate (125-500 kbps), and DLE increases packet size but is constrained by the connection interval and coding overhead. On a clean channel, combining LE Coded PHY S=2 with DLE can yield throughput up to approximately 400-450 kbps application-level, but this is far below the 1.3+ Mbps possible with LE 2M PHY. Practical throughput depends on channel conditions, connection parameters, and register tuning.

问: How do I tune the nRF5340’s radio registers to optimize throughput for a specific PHY mode and DLE configuration?

答: Tuning involves configuring the RADIO peripheral registers and BLE controller link-layer parameters. For PHY mode, set the appropriate PHY field in the connection request or update procedure (e.g., LE 1M, LE 2M, or LE Coded with S=2/S=8). For DLE, adjust the maximum PDU size via the LL_LENGTH_REQ and LL_LENGTH_RSP control procedures, typically setting it to 251 bytes. Additionally, optimize the connection interval (e.g., 7.5 ms to 30 ms) and slave latency to match the packet size and PHY data rate, ensuring each connection event can transmit multiple packets without overflow. Use the nRF5340’s BLE stack APIs or direct register writes for fine-grained control.

💬 欢迎到论坛参与讨论: 点击这里分享您的见解或提问

Silicon & Chip Vendors

Leveraging Vendor-Specific HCI Commands for Advanced BLE Advertising on the TI CC2652: A Deep Dive into the RF Core API

The Bluetooth Low Energy (BLE) stack, as defined by the Bluetooth Core Specification, provides a standardized Host Controller Interface (HCI) for communication between the host (e.g., an application processor) and the controller (e.g., a radio chip). However, for advanced applications—such as high-density advertising, custom PHY configurations, or time-slot scheduling—the standard HCI commands often prove insufficient. Texas Instruments’ CC2652 family of wireless MCUs addresses this gap by exposing a powerful set of vendor-specific HCI (VS HCI) commands that directly interface with the RF Core API. This article explores how these commands can be leveraged to achieve sophisticated BLE advertising behaviors, drawing on both the TI documentation and broader Bluetooth conformance frameworks like the Implementation eXtra Information for Test (IXIT) proformas.

Understanding the CC2652 RF Core and VS HCI

The CC2652 is a multi-protocol wireless MCU supporting BLE 5.2, Zigbee, Thread, and proprietary protocols. Its RF Core is a dedicated ARM Cortex-M0 processor that handles time-critical radio operations, including packet transmission, reception, and timing. The standard HCI interface, as defined in the Bluetooth Core Specification (see Core.IXIT.p21, which covers HCI and Link Layer parameters), allows for basic advertising and scanning commands (e.g., HCI_LE_Set_Advertising_Data, HCI_LE_Set_Scan_Parameters). However, these commands are limited to fixed advertising intervals, channel maps, and TX power levels.

TI’s vendor-specific HCI commands extend this by providing direct access to the RF Core’s command and event structures. For example, the HCI_EXT_SetRxGainCmd and HCI_EXT_SetTxPowerCmd allow fine-grained control over radio parameters. More importantly, the HCI_EXT_AddAdvPatternCmd and HCI_EXT_RemoveAdvPatternCmd enable dynamic advertising pattern generation, which is critical for applications like beaconing with variable payloads or time-synchronized advertising.

Advanced Advertising with VS HCI: A Practical Example

Consider a scenario where a BLE device must advertise multiple service UUIDs in a single advertising event, but with different TX power levels for range optimization. Standard HCI would require stopping and restarting advertising, causing gaps. With VS HCI, we can define multiple advertising sets with per-set parameters. Below is a simplified code snippet demonstrating how to use TI’s HCI_EXT_AddAdvSetCmd (a conceptual command, actual API may vary) to create two advertising sets:

// Include TI BLE stack headers
#include "hci.h"
#include "hci_ext.h"

// Define advertising sets
static advSet_t advSet1 = {
    .advHandle = 0,
    .advType = ADV_NONCONN_IND,
    .channelMap = ADV_CHAN_ALL,
    .advIntervalMin = 160,  // 100 ms (units of 0.625 ms)
    .advIntervalMax = 160,
    .txPower = 5,           // +5 dBm
    .advData = {0x02, 0x01, 0x06, 0x03, 0x03, 0x09, 0x18}, // Flags + UUID 0x1809
    .advDataLen = 7
};

static advSet_t advSet2 = {
    .advHandle = 1,
    .advType = ADV_NONCONN_IND,
    .channelMap = ADV_CHAN_ALL,
    .advIntervalMin = 320,  // 200 ms
    .advIntervalMax = 320,
    .txPower = 0,           // 0 dBm
    .advData = {0x02, 0x01, 0x06, 0x03, 0x03, 0x0A, 0x18}, // Flags + UUID 0x180A
    .advDataLen = 7
};

// Send vendor-specific HCI command
uint8_t status;
status = HCI_EXT_AddAdvSetCmd(&advSet1);
if (status != SUCCESS) {
    // Handle error
}
status = HCI_EXT_AddAdvSetCmd(&advSet2);
// Start advertising with both sets
status = HCI_LE_Set_Advertising_Set_Random_Address(0, &randomAddr);
status = HCI_LE_Set_Advertising_Set_Random_Address(1, &randomAddr2);
status = HCI_LE_Set_Advertising_Enable(TRUE);

This technique is particularly useful for public broadcast profiles (PBP), as referenced in the PBP.IXIT.p0 document. PBP requires periodic advertising with multiple broadcast streams, and VS HCI allows the controller to handle the scheduling without host intervention, reducing latency and power consumption.

Performance Analysis: Timing and Power Trade-offs

To quantify the benefits, we can analyze the timing overhead. Standard HCI commands incur a round-trip delay of approximately 2–5 ms due to UART or SPI transport. When reconfiguring advertising on-the-fly, this delay can cause missed advertising slots. VS HCI commands, by contrast, are processed directly by the RF Core, with sub-millisecond latency. For example, changing the TX power via HCI_EXT_SetTxPowerCmd takes less than 100 µs, as the RF Core updates the power amplifier settings immediately.

Power consumption also improves. The IXIT proformas (e.g., Core.IXIT.p21, Table RF/BB) specify test parameters for radio performance, including current consumption during advertising. By using VS HCI to dynamically adjust advertising intervals based on battery voltage or environmental noise, the device can extend battery life by up to 30% in typical beacon applications. The table below summarizes a hypothetical comparison:

  • Standard HCI advertising (fixed interval 100 ms): 2.5 mA average current, 10 ms per event.
  • VS HCI adaptive advertising (variable interval 50–500 ms): 1.8 mA average current, 8 ms per event (due to reduced idle listening).
  • VS HCI with TX power control: 1.5 mA average current (lower TX power for close-range devices).

Protocol Details: HCI Command Structures

The Bluetooth Core Specification defines HCI commands as packets with a 2-byte opcode (OGF + OCF) and parameters. Vendor-specific commands use the OGF range 0x3F. For TI, the VS HCI commands are documented in the TI BLE Stack User’s Guide. For instance, the HCI_EXT_SetRxGainCmd has the following structure:

Opcode: 0xFC01 (OGF=0x3F, OCF=0x01)
Parameters:
  - GainSetting (1 byte): 0x00 for low gain, 0x01 for high gain
Return Parameters:
  - Status (1 byte): 0x00 for success

Similarly, advertising set commands use extended parameter fields. The IXIT documents (e.g., Core.IXIT.p21, Table HCI) specify that test equipment must support these vendor-specific commands for conformance testing. In practice, this means that TI’s VS HCI is not only a development tool but also a requirement for passing certification tests like those for BMS (Bond Management Service, see BMS.IXIT.p0) or PBP.

Integration with the IXIT Framework

The IXIT proformas provide a structured way to document the capabilities of an implementation under test (IUT). For example, the PBP.IXIT.p0 document lists supported values for advertising parameters (e.g., interval range, channel map). By using VS HCI, developers can ensure their IUT meets these requirements more flexibly. The RF Core API allows testing of edge cases—such as advertising on all 40 channels (though BLE only uses 3 for primary advertising) or using non-standard TX power levels—which are often required for robustness testing.

For Channel Sounding (CS), as referenced in Core.IXIT.p21, VS HCI can be used to calibrate the RF Core’s phase measurement capabilities. While CS is not directly related to advertising, the same RF Core API enables precise timing control, which is critical for both CS and advanced advertising schemes like periodic advertising with response.

Conclusion

The TI CC2652’s vendor-specific HCI commands bridge the gap between standard BLE stack capabilities and the full potential of the RF Core. By enabling direct control over advertising sets, TX power, and timing, these commands allow developers to implement advanced advertising strategies that are impossible with standard HCI alone. The IXIT proformas provide a testing framework that validates these implementations, ensuring compliance with Bluetooth specifications while maximizing performance. For embedded developers working on high-density beacon networks or multi-protocol systems, mastering the RF Core API through VS HCI is an essential skill.

Future work could explore integration with Bluetooth 5.4’s periodic advertising with response (PAwR) and the use of VS HCI for channel sounding in location services. As the Bluetooth specification evolves, vendor-specific extensions will remain a key tool for innovation.

常见问题解答

问: What are vendor-specific HCI (VS HCI) commands and why are they necessary for advanced BLE advertising on the TI CC2652?

答: VS HCI commands are proprietary extensions to the standard Bluetooth HCI interface provided by Texas Instruments for the CC2652 family. They are necessary because standard HCI commands, as defined in the Bluetooth Core Specification, are limited to fixed advertising intervals, channel maps, and TX power levels, which are insufficient for advanced applications like high-density advertising, custom PHY configurations, or time-slot scheduling. VS HCI commands grant direct access to the RF Core API, enabling fine-grained control over radio parameters and dynamic advertising pattern generation.

问: How do VS HCI commands improve upon standard HCI for managing multiple advertising sets with different parameters?

答: Standard HCI requires stopping and restarting advertising to change parameters like TX power or payload, which introduces gaps. VS HCI commands, such as HCI_EXT_AddAdvSetCmd, allow the creation of multiple advertising sets with per-set parameters (e.g., advertising type, channel map, TX power) that can be active simultaneously. This enables seamless transitions between different advertising behaviors without service interruption, which is critical for applications like beaconing with variable payloads or time-synchronized advertising.

问: What specific RF Core features can be controlled via VS HCI commands on the CC2652?

答: VS HCI commands provide direct access to the RF Core's command and event structures, allowing control over parameters such as RX gain (via HCI_EXT_SetRxGainCmd), TX power (via HCI_EXT_SetTxPowerCmd), and dynamic advertising pattern generation (via HCI_EXT_AddAdvPatternCmd and HCI_EXT_RemoveAdvPatternCmd). These features enable fine-grained tuning of radio behavior beyond the capabilities of standard HCI commands.

问: Can VS HCI commands be used to implement time-synchronized advertising on the CC2652?

答: Yes, VS HCI commands can facilitate time-synchronized advertising by enabling dynamic advertising pattern generation through commands like HCI_EXT_AddAdvPatternCmd. This allows the device to schedule advertising events with precise timing and variable payloads, which is essential for applications requiring synchronization across multiple devices, such as beacon networks or coordinated advertising schemes.

💬 欢迎到论坛参与讨论: 点击这里分享您的见解或提问

Login

Bluetoothchina Wechat Official Accounts

qrcode for gh 84b6e62cdd92 258