| BlueNRG-1 DK: BLE examples

- Main Page
- Modules
- Files

- File List

BLE_Throughput_main.c File Reference

This is a Throughput demo that shows how to implement a simple throughput test between two BlueNRG-1 devices. Two throughput test options are available: unidirectional (server notification to client side); bidirectional (server notification to client side and write without response from client to server side). More...

Go to the source code of this file.

## Detailed Description

This is a Throughput demo that shows how to implement a simple throughput test between two BlueNRG-1 devices. Two throughput test options are available: unidirectional (server notification to client side); bidirectional (server notification to client side and write without response from client to server side).

# ATOLLIC project

To use the project with ATOLLIC TrueSTUDIO for ARM, please follow the instructions below:

1. Open the ATOLLIC TrueSTUDIO for ARM and select File->Import... Project menu.
2. Select Existing Projects into Workspace.
3. Select the ATOLLIC project
4. Select desired configuration to build from Project->Manage Configurations
5. Select Project->Rebuild Project. This will recompile and link the entire application
6. To download the binary image, please connect STLink to JTAG connector in your board (if available).
7. Select Project->Download to download the related binary image.
8. Alternatively, open the BlueNRG1 GUI, put the board in bootloader mode and download the built binary image.

# KEIL project

To use the project with KEIL uVision 5 for ARM, please follow the instructions below:

1. Open the KEIL uVision 5 for ARM and select Project->Open Project menu.
2. Open the KEIL project `...\Project\BLE_Examples\BLE_Throughput\MDK-ARM\BLE_Throughput.uvprojx`
3. Select desired configuration to build
4. Select Project->Rebuild all target files. This will recompile and link the entire application
5. To download the binary image, please connect STLink to JTAG connector in your board (if available).
6. Select Project->Download to download the related binary image.
7. Alternatively, open the BlueNRG1 GUI, put the board in bootloader mode and download the built binary image.

# IAR project

To use the project with IAR Embedded Workbench for ARM, please follow the instructions below:

1. Open the Embedded Workbench for ARM and select File->Open->Workspace menu.
2. Open the IAR project `...\Project\BLE_Examples\BLE_Throughput\EWARM\BLE_Throughput.eww`
3. Select desired configuration to build
4. Select Project->Rebuild All. This will recompile and link the entire application
5. To download the binary image, please connect STLink to JTAG connector in your board (if available).
6. Select Project->Download and Debug to download the related binary image.
7. Alternatively, open the BlueNRG1 GUI, put the board in bootloader mode and download the built binary image.

## Project configurations

- `Client_bidirectional` - Client role configuration for bidirectional throughput test
- `Client_unidirectional` - Client role configuration for unidirectional throughput test
- `Server_bidirectional` - Server role configuration for bidirectional throughput test
- `Server_unidirectional` - Server role configuration for unidirectional throughput test

# Boards supported

- `STEVAL-IDB007V1`

# Power configuration settings

STEVAL-IDB007V1
Jumper name |  | Description
JP1 | JP2 |
ON 1-2 | ON 2-3 | USB supply power
ON 2-3 | ON 1-2 | The supply voltage must be provided through battery pins.
ON 1-2 |  | USB supply power to STM32L1, JP2 pin 2 external power to BlueNRG1

# Jumper settings

STEVAL-IDB007V1
Jumper name | Description
JP1 | 1-2: to provide power from USB (JP2:2-3). 2-3: to provide power from battery holder (JP2:1-2)
JP2 | 1-2: to provide power from battery holder (JP1:2-3). 2-3: to provide power from USB (JP1:1-2). Pin2 to VDD to provide external power supply to BlueNRG-1 (JP1: 1-2)
JP3 | pin 1 and 2 UART RX and TX of MCU. pin 3 GND.
JP4 | Fitted: to provide VBLUE to BlueNRG1. It can be used also for current measurement.
JP5 | Fitted : TEST pin to VBLUE. Not fitted: TEST pin to GND

# Pin settings

| Client_bidirectional | Server_unidirectional | Server_bidirectional | Client_unidirectional
PIN name | STEVAL-IDB007V1 | STEVAL-IDB007V1 | STEVAL-IDB007V1 | STEVAL-IDB007V1
ADC1 | Not Used | Not Used | Not Used | Not Used
ADC2 | Not Used | Not Used | Not Used | Not Used
IO0 | Not Used | Not Used | Not Used | Not Used
IO1 | Not Used | Not Used | Not Used | Not Used
IO11 | Not Used | Not Used | Not Used | Not Used
IO12 | Not Used | Not Used | Not Used | Not Used
IO13 | Not Used | Not Used | Not Used | Not Used
IO14 | Not Used | Not Used | Not Used | Not Used
IO2 | Not Used | Not Used | Not Used | Not Used
IO3 | Not Used | Not Used | Not Used | Not Used
IO4 | Not Used | Not Used | Not Used | Not Used
IO5 | Not Used | Not Used | Not Used | Not Used
IO6 | Not Used | Not Used | Not Used | Not Used
IO7 | Not Used | Not Used | Not Used | Not Used
IO8 | Not Used | Not Used | Not Used | Not Used
TEST1 | Not Used | Not Used | Not Used | Not Used

# Serial I/O

Parameter name | Value | Unit
Baudrate | 921600 | bit/sec
Data bits | 8 | bit
Parity | None | bit
Stop bits | 1 | bit

# LEDs description

| Client_bidirectional | Server_unidirectional | Server_bidirectional | Client_unidirectional
LED name | STEVAL-IDB007V1 | STEVAL-IDB007V1 | STEVAL-IDB007V1 | STEVAL-IDB007V1
DL1 | Not Used | Not Used | Not Used | Not Used
DL2 | Not Used | Not Used | Not Used | Not Used
DL3 | Not Used | Not Used | Not Used | Not Used
DL4 | Not Used | Not Used | Not Used | Not Used

# Buttons description

| Client_bidirectional | Server_unidirectional | Server_bidirectional | Client_unidirectional
BUTTON name | STEVAL-IDB007V1 | STEVAL-IDB007V1 | STEVAL-IDB007V1 | STEVAL-IDB007V1
PUSH1 | Not Used | Not Used | Not Used | Not Used
PUSH2 | Not Used | Not Used | Not Used | Not Used
RESET | Reset BlueNRG1 | Reset BlueNRG1 | Reset BlueNRG1 | Reset BlueNRG1

# Usage

This Throughput demo has 2 roles:

- The server that expose the Throughput service. It is the slave.
- The client that uses the Throughput service. It is the master.

The Throughput Service contains 2 Characteristics:

1. The TX Characteristic: the client can enable notifications on this characteristic. When the server has data to be sent, it sends notifications which contains the value of the TX Characteristic
2. The RX Characteristic: it is a writable caracteristic. When the client has data to be sent to the server, it writes a value into this characteristic.

The maximum length of the characteristic value is 20 bytes.

NOTES:

- The Client_unidirectional and Server_unidirectional workspaces allow to target a unidirectional throughput test: server device sends characteristic notifications to the client device(THROUGHPUT_TEST_SERVER define enabled on on both workspaces, on the preprocessor options). The required serial port baudrate is 921600.
- Program the client side on one BlueNRG-1 platform and reset it. The platform is seen on the PC as a virtual COM port. Open the port in a serial terminal emulator.
- Program the server side on a second BlueNRG-1 platform and reset it. The two platforms try to establish a connection. As soon as they get connected, the slave continuously sends notification of TX characteristic (20 bytes) to the client.
- After every 500 packets, the measured application unidirectional throughput is displayed.
- The Client_bidirectional and Server_bidirectional workspaces allow to target a bidirectional throughput test: server device sends characteristic notifications to the client device and client device performs sends characteristic write without responses to the server device (THROUGHPUT_TEST_SERVER and THROUGHPUT_TEST_CLIENT define enabled on both workspaces, on the preprocessor options). The required serial port baudrate is 921600.
- Program the client side on one BlueNRG-1 platform and reset it. The platform is seen on the PC as a virtual COM port. Open the port in a serial terminal emulator.
- Program the server side on a second BlueNRG-1 platform and reset it. The two platforms try to establish a connection. As soon as they get connected, the slave continuously sends notifications of TX characteristic (20 bytes) to the client and the client continuously sends write without response of RX characteristic (20 bytes) to the server.
- After every 500 packets, the measured application bidirectional throughput is displayed.

Definition in file BLE_Throughput_main.c.