A Hands-On Look at the ST BlueNRG-LP BLE Long Range SoCFollow article
How do you feel about this article? Help us to provide better content for you.
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
What do you think of this article?
A look at the STEVAL-IDB011V1 evaluation board, the BlueNRG-LP BLE system-on-chip, and then an example demonstrating Bluetooth Low Energy long range features.
The STMicroelectronics STEVAL-IDB011V1 kitis an evaluation board designed around the BlueNRG-LP Bluetooth Low Energy system-on-chip, featuring a number of sensors, interface buttons & LEDs, and an on-board CMSIS-DAP debugger.
In this article, we’ll be taking a quick look at the board, looking at the features of the SoC, and then modifying & running the ST provided BLE Long Range example that demonstrates the BLE “coded PHY” mode.
What is BLE “coded PHY”?
A new feature introduced in the Bluetooth 5.0 standard, “coded PHY” (or Long Range mode) aims to increase the range of a Bluetooth connection by up to four times the standard BLE range.
This is possible thanks to the increase in error correction in the coded PHY mode, where data is transmitted at the standard 1 mega symbol per second, but with increased error correction. It’s worth noting that this feature is optional as per the Bluetooth 5.0 specification, so be sure to pick a Bluetooth chip wisely — a good choice would be one from the ST BlueNRG-LP range!
Two coding schemes are possible, S=2 and S=8. In S=2 mode, two symbols per data bit are used by the PHY which halves the data rate to 500 kbps. When the PHY is in S=8 mode, eight symbols per data bit are used which brings the data rate down to 125 kbps.
|Number of Bits||Uncoded||32||2||3||16 - 2056||24||3|
|Duration when using S=8 coding (µs)||80||256||16||24||128 - 16448||192||24|
|Duration when using S=8 coding (µs)||80||256||16||24||32 - 4112||48||6|
Table 2.1: LE Coded PHY field sizes and durations in microseconds
One disadvantage to using the coded PHY mode is that power consumption will increase as the radio has a greater on time when transmitting, as can be seen in the above table.
ST produced a video which talks about the provided “BLE RC Long Range” example they have produced and demonstrated a range increase of nearly 350 metres with the coded PHY when compared to a connection using the legacy 1 Mbps PHY.
ST have produced the STEVAL-IDB011V1 evaluation board based around the BlueNRG-355MC system-on-chip, with the choice of operation from two AAA batteries, rather than being tethered via a USB cable.
Peripherals on the board include:
- MEMS digital accelerometer/gyroscope
- MEMS digital pressure/temperature sensor
- MEMS digital microphone
- Three user LEDs and two user buttons
Also included is a CMSIS-DAP debugger, so no external programmer is required.
The BlueNRG-LP used is a feature-packed wireless system-on-chip, featuring a Cortex-M0+ microcontroller running at up to 64MHz, and STMicroelectronics’ 2.4GHz radio IP that is not only compliant with Bluetooth Low Energy 5.2 specifications but can also be run in a proprietary mode.
The microcontroller within the BlueNRG-355MC SoC features:
- 64MHz Cortex-M0+ microcontroller with 256kB Flash & 64kB RAM
- 12-bit ADC with support for eight external source, and three internal sources which includes an on-die temperature sensor, and battery monitoring
- Low power RTC & 16-bit timer
- A plethora of communication interfaces, including SPI, I2S, LPUART, USART (with support for smartcard mode, IrDA & Modbus mode), I2C supporting SM/PMBus, and a PDM channel
- True random number generator
- 128-bit AES security co-processor
- Private key accelerator
- CRC calculation unit
The radio features offered by the 355MC SoC include:
- Up to 2Mbps data rate
- Long-range coded PHY mode
- Advertising extensions (necessary to advertise using the coded PHY)
- GATT caching
- LE power control and path loss monitoring
- LE ping procedure
- High radio sensitivity figures of -97dBm at 1Mbps, and -104dBm at 125kbps (in the long-range mode)
- Programmable output power of up to +8dBm
- Integrated balun to reduce PCB component count
- Support for an external PA
- 2.4GHz proprietary radio driver
The block diagram above shows all the peripherals featured on the BlueNRG-LP series of wireless SoC. Two different application configuration modes are supported — standalone, and network processor. In standalone mode, the SoC operates as a single device running application code and the BLE stack, whereas in network processor mode an external microcontroller is required to run application code.
On-chip is a high-efficiency buck SMPS converter to help improve low power operation. This generates an adjustable voltage between 1.2 to 1.9V, that then supplies on-chip low dropout regulators that further power sections of the SoC. Thanks to the SMPS, the BlueNRG-LP series can achieve a radio power consumption as low as 4.3mA at 0dBm transmitter power.
ST provides example application circuits in the BlueNRG-LP datasheet, which show a minimum amount of external components are required to bring up a functional system.
The BlueNRG series of wireless system-on-chips are supported by a software package provided by STMicroelectronics that includes the BLE stack binary library, middleware, peripheral drivers, and a set of example applications for both BLE applications and microcontroller applications such as GPIO interfacing.
A secure bootloader tool is also included to talk to the SoC bootloader. As the radio stack requires a large amount of initial configuration, ST have provided a GUI tool to set up the radio config and generate a header file ready to be imported into a project, in order to ease the getting started process.
To get started, we installed the software package and “WiSE-Studio” which is the Eclipse based IDE that ST provides — this includes the GCC toolchain necessary for compilation.
With both tools installed, we launched “BlueNRG-LP Navigator” and browsed to the “BLE RC LongRange” project; this gives pre-built projects that can be flashed straight onto a pair of evaluation boards, and a functional description of what the example does. We then imported this project into WiSE Studio, compiled and debugged the application to ensure the toolchain was working.
Integrating an OLED display
From here, we could move on to modifying the application to include code to drive an OLED display. This was easy to do as ST provides an example of how to use I2C, and the Long Range example already includes an I2C interface to talk to the sensors on-board.
To set up the I2C interface, the GPIO pins need to be configured appropriately — consisting of setting the pin mode to open drain, with an alternate function connected to the second I2C peripheral. Clocks can then be enabled, and the I2C peripheral configured with appropriate timings to set up for a 400kHz bus speed.
With the I2C bus configured, we could successfully send bytes to the display. At this point, we moved on to implementing an RSSI display on the server device — ST makes this an easy affair thanks to the HCI commands API, only requiring a call to the function
hci_read_rssi(Connection_Handle, &rssi) which returns the RSSI value, or 127 if it is not available.
A simple message counter in the form of an incrementing variable was also included, which provides visibility if the link begins to degrade between the client and server as the message counts will drift out of sync.
The transmit power on both client and server was increased to the maximum value of +8dBm, by changing the line
aci_hal_set_tx_power_level(0, OUTPUT_POWER_LEVEL); to have a one in place of the zero — this increases the output voltage of the on-chip switchmode power supply, which allows for an increase in transmit power level.
With the code written and tested at close range, we fitted the display and evaluation board into boxes and moved to testing outdoors to test the BLE link range.
In this post, we have taken a look at what BLE 5.0 Long Range is, the STMicroelectronics STEVAL-IDB011V1 evaluation platform and BlueNRG-LP SoC, and then an example demonstrating the use of the long-range coded PHY mode.