UM2071
User manual
BlueNRG-1, BlueNRG-2 development kits
Introduction
The BlueNRG-1 and BlueNRG-2 devices are low power Bluetooth Low Energy (BLE) systems-on-chip that are compliant with
the Bluetooth® specification and support master, slave and simultaneous master-and-slave roles. BlueNRG-2 also supports the Bluetooth Low Energy data length extension feature.
The following BlueNRG-1, BlueNRG-2 kits are available:
1.BlueNRG-1 development platforms (order code: STEVAL-IDB007V1(1), STEVAL-IDB007V2)
2.BlueNRG-2 development platforms (order code: STEVAL-IDB008V1(1), STEVAL-IDB008V2, STEVAL-IDB009V1, STEVALIDB008V1M)
1. This board is no longer available for purchase
The development platforms feature hardware resources for a wide range of application scenarios: sensor data (accelerometer, pressure and temperature sensor), remote control interfaces (buttons and LEDs) and debug message management through USB virtual COM. Three power options are available (USB only, battery only and external power supply plus USB) for high application development and testing flexibility.
RELATED LINKS
The document content is also valid for the BlueNRG-1 STEVAL-IDB007V1M evaluation platform based on the SPBTLE-1S module with 32 MHz HS crystal.
UM2071 - Rev 12 - June 2020 |
www.st.com |
For further information contact your local STMicroelectronics sales office. |
|
|
|
UM2071
1Development platforms
Figure 1. STEVAL-IDB007V1 development platform
This item is no longer available for sale
Figure 2. STEVAL-IDB007V2 development platform
based on BlueNRG-1 SoC
UM2071 - Rev 12 |
page 2/94 |
|
|
UM2071
Development platforms
Figure 3. STEVAL-IDB008V1 development platform
based on BlueNRG-2 SoC
Figure 4. STEVAL-IDB008V2 development platform
based on BlueNRG-2 SoC
UM2071 - Rev 12 |
page 3/94 |
|
|
UM2071
Development platforms
Figure 5. STEVAL-IDB009V1 development platform
based on BlueNRG-2 SoC in QFN48 package
Figure 6. STEVAL-IDB008V1M development platform
based on BlueNRG-M2SA module with embedded BlueNRG-2 SoC
UM2071 - Rev 12 |
page 4/94 |
|
|
UM2071
2Getting started
The STEVAL-IDB007Vx/STEVAL-IDB008Vx kits include respectively:
•a BlueNRG-132 (QFN32 package)/BlueNRG-232 (QFN32 package) development platform
•a 2.4 GHz Bluetooth antenna
•a USB cable
The STEVAL-IDB009Vx kit includes:
•a BlueNRG-248 (QFN48 package) development platform
•a 2.4 GHz Bluetooth antenna
•a USB cable
The STEVAL-IDB008V1M kit includes:
•a BlueNRG-M2SA certified module based on the BlueNRG-2 Bluetooth low energy system-on-chip
•a USB cable
|
The BlueNRG-1, BlueNRG-2 Navigator and Radio Init Parameters Wizard PC applications require: |
|
• PC with Intel® or AMD® processor running Windows 7/10 |
|
• At least 128 MB of RAM |
|
• USB ports |
|
• At least 40 MB of available hard disk space |
|
• Adobe Acrobat Reader 6.0 or later |
2.3 |
BlueNRG-1_2 development kit setup |
|
The following BlueNRG-1, BlueNRG-2 DK software packages are available: BlueNRG-1_2 DK SW package for |
|
BlueNRG-1, BlueNRG-2 BLE stack v2.x family (STSW-BLUENRG1-DK). |
|
After downloading the selected software package (STSW-BLUENRG1-DK) from www.st.com, extract en.stsw- |
|
bluenrg1-dk.zip contents to a temporary directory, launch BlueNRG-1_2-DK-x.x.x-Setup.exe and follow the on- |
|
screen instructions. |
Note: |
EWARM Compiler 8.40.1 or later, Keil MDK-ARM v5.27 or later and Atollic-True Studio v8.1.0 are required for |
|
building the related BlueNRG1_2_DK_x.x.x demonstration applications. |
UM2071 - Rev 12 |
page 5/94 |
|
|
UM2071
3Hardware description
3.1STEVAL-IDB007Vx/STEVAL-IDB008Vx/STEVAL-IDB009Vx board overview
The BlueNRG-1/BlueNRG-2 devices in the STEVAL-IDB007Vx/STEVAL-IDB008Vx/STEVAL-IDB009Vx development kits lets you experiment with BlueNRG-1/BlueNRG-2 system on chip functions. They feature:
•Bluetooth® Low Energy (BLE) board based on the BlueNRG-1/BlueNRG-2 Bluetooth low energy system on chip
•Associated development kit SW package including firmware and documentation
•Up to +8 dBm available output power (at antenna connector)
•Excellent receiver sensitivity (-88 dBm)
•Very low power consumption: 7.7 mA RX and 8.3 mA TX at -2 dBm
•Bluetooth® low energy compliant, supports master, slave and simultaneous master-and-slave roles
•Integrated balun which integrates a matching network and harmonics filter (only on STEVAL-IDB007Vx/ STEVAL-IDB008Vx)
•Discrete matching network on STEVAL-IDB009V1
•BlueNRG-M2SA certified module based on the BlueNRG-2 Bluetooth LE SoC on STEVAL-IDB008V1M
•SMA connector for antenna or measuring equipment (not available on STEVAL-IDB007V1M/8V1M)
•3 user LEDs
•2 user buttons
•3D digital accelerometer and 3D digital gyroscope
•MEMS pressure sensor with embedded temperature sensor
•Battery holder
•JTAG debug connector
•USB to serial bridge for providing I/O channel with the BlueNRG-1/BlueNRG-2 device
•Jumper for measuring current for BlueNRG-1/BlueNRG-2 only
•RoHS compliant
The following figure and table describe physical sections of the board.
Figure 7. STEVAL-IDB007Vx board components
UM2071 - Rev 12 |
page 6/94 |
|
|
UM2071
STEVAL-IDB007Vx/STEVAL-IDB008Vx/STEVAL-IDB009Vx board overview
Figure 8. STEVAL-IDB008Vx board components
Figure 9. STEVAL-IDB009V1 board components
Table 1. STEVAL-IDB007Vx/STEVAL-IDB008Vx/STEVAL-IDB009Vx board component descriptions
Region |
Description |
|
|
|
BlueNRG-132 SoC on STEVAL-IDB007Vx |
A(1) |
BlueNRG-232 SoC on STEVAL-IDB008Vx |
|
BlueNRG-248 SoC on STEVAL-IDB009Vx |
|
|
C |
Micro USB connector for power supply and I/O |
|
|
O |
JTAG connector |
|
|
M |
RESET button |
|
|
N |
Two USER buttons |
|
|
UM2071 - Rev 12 |
page 7/94 |
|
|
UM2071
Region |
Description |
H |
LPS25HB MEMS pressure sensor with embedded temperature |
|
|
I |
LSM6DS3 3D digital accelerometer and 3D digital gyroscope |
|
|
G |
PWR LED |
|
|
P |
Three user LEDs |
|
|
Back of the PCB |
Battery holder for two AAA batteries |
|
|
J, L |
Two rows of Arduino-compliant connectors |
|
|
S |
Integrated balun with matching network and harmonics filter (BALF-NRG-01D3 on STEVAL-IDB007V1/ |
STEVAL-IDB008V1 and BALF-NRG-02D3 on STEVAL-IDB007V2/STEVAL-IDB008V2). Discrete matching |
|
|
network on STEVAL-IDB009V1. |
|
|
Q |
STM32L151CBU6 48-pin microcontroller (USB to serial bridge for I/O channel to PC communication) (2) |
R |
ST2378E level translator to adapt voltage level between STM32 and BlueNRG-1 |
|
|
|
16 MHz High Speed Crystal on STEVAL-IDB007Vx |
T |
32 MHz High Speed Crystal on STEVAL-IDB008Vx, STEVAL-IDB009Vx, STEVAL-IDB009Vx, STEVAL- |
|
IDB007V1M/8V1M |
|
|
On STEVAL-IDB008V1M,. region A contains the BlueNRG-M2SA module
On STEVAL-IDB007V1M, region A contains the SPBTLE-1S module
2. STM32 is not intended to be programmed by users
3.2BlueNRG-1, BlueNRG-2 SoC connections
The BlueNRG-132, BlueNRG-232 very low power Bluetooth low energy (BLE) single-mode system on chip (Figure 7. STEVAL-IDB007Vx board components – region A /Figure 8. STEVAL-IDB008Vx board components - region A) have respectively 160 KB, 256 KB of Flash, 24 KB of RAM, a 32-bit core ARM Cortex-M0 processor and several peripherals (ADC, 15 GPIOs, I²C, SPI, Timers, UART, WDG and RTC).
The BlueNRG-248 very low power Bluetooth low energy (BLE) single-mode system on chip has 256 KB of Flash, 24 KB of RAM, a 32-bit core ARM cortex-M0 processor and several peripherals (ADC, 26 GPIOs, I²C, SPI, Timers, UART, WDG and RTC).
The microcontroller is connected to various components such as buttons, LEDs and sensors. The following table describes the microcontroller pin functions.
Table 2. BlueNRG-1, BlueNRG-2 pins description with board functions
|
Pin no. |
|
Board function |
|
|
|
|
|
|
|
|
|
Pin |
QFN3 |
QFN4 |
|
|
|
Pressure |
3D |
|
|
|
|
|
name |
LEDs |
Micro |
Buttons |
accelerometer |
JTAG |
CN1 |
CN2 |
CN3 |
CN4 |
|||
|
2(1) |
8(2) |
sensor |
and |
||||||||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
gyroscope |
|
|
|
|
|
|
|
|
|
|
|
|
|
JTMS- |
|
|
|
|
DIO10 |
1 |
46 |
|
|
|
|
|
SWTDI |
|
|
|
|
|
|
|
|
|
|
|
|
O |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO9 |
2 |
47 |
|
|
|
|
|
JTCK- |
|
|
|
|
|
|
|
|
|
SWTCK |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO8 |
3 |
4 |
|
TXD |
|
|
|
|
pin 1 |
|
pin 2 |
|
|
(PA2) |
|
|
|
|
(IO8) |
|
(TX) |
|
|||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO7 |
4 |
5 |
DL2 |
|
|
|
|
|
pin 2 |
|
|
pin 6 |
|
|
|
|
|
(IO9) |
|
|
(SCL) |
||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO6 |
5 |
5 |
DL1 |
|
|
|
|
|
|
|
pin 7 |
pin 5 |
|
|
|
|
|
|
|
(IO6) |
(SDA) |
||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
VBAT3 |
6 |
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UM2071 - Rev 12 |
page 8/94 |
|
|
UM2071
BlueNRG-1, BlueNRG-2 SoC connections
|
Pin no. |
|
Board function |
|
|
|
|
|
|
|
|
|
Pin |
QFN3 |
QFN4 |
|
|
|
Pressure |
3D |
|
|
|
|
|
name |
LEDs |
Micro |
Buttons |
accelerometer |
JTAG |
CN1 |
CN2 |
CN3 |
CN4 |
|||
|
2(1) |
8(2) |
sensor |
and |
||||||||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
gyroscope |
|
|
|
|
|
|
|
|
|
|
|
SDA |
|
|
pin 9 |
|
|
|
DIO5 |
7 |
9 |
|
|
|
(PUSH2 |
|
|
|
|
|
|
|
|
|
|
|
(SDA) |
|
|
|
||||
|
|
|
|
|
|
button) |
|
|
|
|
|
|
DIO4 |
8 |
13 |
|
|
|
SCL |
|
|
pin 10 |
|
|
|
|
|
|
|
|
(SCL) |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO3 |
9 |
14 |
|
|
|
|
SDO/SA0 |
|
pin 5 |
|
pin 6 |
|
|
|
|
|
|
(MISO) |
|
(IO5) |
|
||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO2 |
10 |
15 |
|
|
|
|
SDA |
|
pin 4 |
|
pin 5 |
|
|
|
|
|
|
(MOSI) |
|
(IO4) |
|
||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO1 |
11 |
16 |
|
|
|
|
CS |
JTAG- |
pin 3 |
|
|
|
|
|
|
|
TDO |
(CS) |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO0 |
12 |
18 |
|
|
|
|
SCL |
JTAG- |
pin 6 |
|
pin 4 |
|
|
|
|
|
TDI |
(SCK) |
|
(IO3) |
|
||||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO14/ |
|
|
|
|
|
|
|
|
|
|
|
pin 4 |
ANATES |
13 |
21/23 |
DL3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(AD3) |
||||
T0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ANATES |
14 |
24 |
|
|
|
|
|
|
|
|
|
|
T1 |
|
|
|
|
|
|
|
|
|
|
|
|
ADC1 |
15 |
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ADC2 |
16 |
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FXTAL1 |
17 |
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FXTAL0 |
18 |
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VBAT2 |
19 |
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RF1 |
20 |
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RF0 |
21 |
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SXTAL1 |
22 |
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SXTAL0 |
23 |
34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VBAT1 |
24 |
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RESET |
25 |
36 |
|
RESET |
RESET |
|
|
RESET |
|
pin 3 |
pin 8 |
|
|
|
|
|
(NRST) |
(IO7) |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
SMPSFI |
26 |
37 |
|
|
|
|
|
|
|
|
|
|
LT1 |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SMPSFI |
27 |
38 |
|
|
|
|
|
|
|
|
|
|
LT2 |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VDD1V2 |
28 |
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO13 |
29 |
41 |
|
|
PUSH1 |
|
|
|
|
|
|
pin 3 |
|
|
|
|
|
|
|
|
(AD2) |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO12 |
30 |
42 |
|
|
|
|
INT1 |
|
|
|
|
pin 1 |
|
|
|
|
|
|
|
|
(AD0) |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FTEST |
31 |
43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pin 1 |
|
DIO11 |
32 |
44 |
|
RXD |
|
|
|
|
|
|
(RX) |
pin 2 |
|
(PA3) |
|
|
|
|
|
|
pin 3 |
(AD1) |
|||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
(IO2) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UM2071 - Rev 12 |
page 9/94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UM2071 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Power supply |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pin no. |
|
Board function |
|
|
|
|
|
|
|
|
|
|
Pin |
QFN3 |
QFN4 |
|
|
|
Pressure |
3D |
|
|
|
|
|
|
name |
LEDs |
Micro |
Buttons |
accelerometer |
JTAG |
CN1 |
CN2 |
CN3 |
|
CN4 |
|||
|
2(1) |
8(2) |
sensor |
and |
|
||||||||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
gyroscope |
|
|
|
|
|
|
DIO15 |
- |
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO16 |
- |
19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO17 |
- |
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO18 |
- |
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO19 |
- |
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO20 |
- |
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO21 |
- |
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO22 |
- |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO23 |
- |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO24 |
- |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VBAT4 |
- |
8/22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIO25 |
- |
48 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.QFN32 package on STEVAL-IDB007Vx and STEVAL-IDB008Vx kits.
2.QFN48 package on STEVAL-IDB009Vx kits.
The board section labeled respectively BlueNRG-1, BlueNRG-2 (Figure 7. STEVAL-IDB007Vx board components, Figure 8. STEVAL-IDB008Vx board components, Figure 9. STEVAL-IDB009V1 board components – region B) includes the following main components:
•BlueNRG-1/BlueNRG-2 low power system on chip (in a QFN32 package for STEVAL-IDB007Vx, STEVALIDB008Vx, QFN48 package for STEVAL-IDB009Vx) )
•BlueNRG-M2SA certified module based on the BlueNRG-2 Bluetooth LE SoC on STEVAL-IDB008V1M
•High frequency 16 MHz crystal on STEVAL-IDB007Vx and 32 MHz crystal on STEVAL-IDB008Vx, STEVALIDB009Vx
•Low frequency 32 kHz crystal for the lowest power consumption
•Integrated balun which integrates a matching network and harmonics filter
•SMA connector (not available on STEVAL-IDB007V1M/8V1M)
3.3Power supply
Green LED DL4 (Figure 7. STEVAL-IDB007Vx board components, Figure 8. STEVAL-IDB008Vx board components, Figure 9. STEVAL-IDB009V1 board components – region G) signals the board is being powered, either via:
•micro USB connector CN5 (Figure 7. STEVAL-IDB007Vx board components, Figure 8. STEVAL-IDB008Vx board components, Figure 9. STEVAL-IDB009V1 board components – region C)
•two AAA batteries (region F)
•an external DC power supply plus micro USB connector
The following table describes the power supply modes available on the STEVAL-IDB007V1, STEVAL-IDB008V1 boards and corresponding jumper settings.
Table 3. STEVAL-IDB007Vx, STEVAL-IDB008Vx, STEVAL-IDB009Vx kit platform power supply modes
Power supply mode |
JP1 |
JP2 |
Comment |
1 - USB |
Fitted: 1-2 |
Fitted: 2-3 |
USB supply through connector CN5 (Figure 7. STEVAL-IDB007Vx board |
components, Figure 8. STEVAL-IDB008Vx board components, |
|||
|
|
|
Figure 9. STEVAL-IDB009V1 board components – region C) |
|
|
|
|
UM2071 - Rev 12 |
page 10/94 |
|
|
|
|
|
|
UM2071 |
|
|
|
|
Jumpers |
|
|
|
|
|
|
|
|
|
|
|
Power supply mode |
JP1 |
JP2 |
Comment |
|
2 - Battery |
Fitted: 2-3 |
Fitted: 1-2 |
The supply voltage must be provided through battery pins (region F). |
|
|
|
|
|
|
3 - Combo |
Fitted: 1-2 |
Optional |
USB supply through connector CN5 for STM32L1; JP2 pin 2 external power for |
|
BlueNRG-1, BlueNRG-2 |
|||
|
|
|
|
|
|
|
|
|
|
3.4 |
Jumpers |
|
|
|
The available jumpers are listed in the table below.
Table 4. STEVAL-IDB007Vx, STEVAL-IDB008Vx, STEVAL-IDB009Vx kit platform jumpers
Jumper |
Description |
|
|
|
|
JP1 |
1-2: to provide power from USB (JP2: 2-3) |
|
2-3: to provide power from battery holder (JP2: 1-2) |
||
|
||
|
|
|
|
1-2: to provide power from battery holder (JP1: 2-3) |
|
JP2 |
2-3: to provide power from USB (JP1: 1-2) |
|
|
JP2 pin 2 to VDD to provide external power supply to BlueNRG-1, BlueNRG-2 (JP1: 1-2) |
|
|
|
|
JP3 |
pin 1 and 2 UART RX and TX of MCU |
|
pin 3 GND |
||
|
||
|
|
|
JP4 |
Fitted: to provide VBLUE to BlueNRG-1, BlueNRG-2. It can be used also for current measurement. |
|
|
|
|
JP5 |
Fitted: TEST pin to VBLUE |
|
Not fitted: TEST pin to GND |
||
|
||
|
|
The following sensors are available on the platform:
1.An LPS25HB (Figure 7. STEVAL-IDB007Vx board components, Figure 8. STEVAL-IDB008Vx board components, Figure 9. STEVAL-IDB009V1 board components – region H) is a piezoresistive absolute pressure sensor which functions as a digital output barometer. The device comprises a sensing element and an IC interface which communicates through I²C from the sensing element to the application.
2.An LSM6DS3 3D (region I) digital accelerometer and 3D digital gyroscope with embedded temperature sensor which communicates via SPI interface. One line for interrupt is also connected.
Note: |
In battery operating mode, if R59, R60 and R62 resistors are mounted, you should remove them to make |
|
LSM6DS3 function correctly. |
BlueNRG-1, BlueNRG-2 signal test points are shared on two Arduino-compliant connector rows: CN1, CN3 (Figure 7. STEVAL-IDB007Vx board components, Figure 8. STEVAL-IDB008Vx board components,
Figure 9. STEVAL-IDB009V1 board components – region J) and CN2, CN4 (region L). See Table 2. BlueNRG-1, BlueNRG-2 pins description with board functions.
|
The board has one user button to reset the microcontroller (Figure 7. STEVAL-IDB007Vx board components, |
|
Figure 8. STEVAL-IDB008Vx board components, Figure 9. STEVAL-IDB009V1 board components – region M) |
|
and two further buttons for application purposes (region N). |
Note: |
The PUSH1 button is not connected on the STEVAL-IDB008V1M as DIO13 is not available on the BlueNRG- |
|
M2SA module (PUSH1 is also not connected on STEVAL-IDB007V1M). |
UM2071 - Rev 12 |
page 11/94 |
|
|
UM2071
3.8JTAG connector
|
A JTAG connector (Figure 7. STEVAL-IDB007Vx board components, Figure 8. STEVAL-IDB008Vx board |
|
components, Figure 9. STEVAL-IDB009V1 board components – region O) allows BlueNRG-1, BlueNRG-2 |
|
microcontroller programming and debugging with an in-circuit debugger and programmer such as ST-LINK/V2. |
Note: |
Only SWD mode is supported |
LEDs DL1 (yellow), DL2 (red), DL3 (blue) and DL4 (green, power LED) are available on the board (Figure 7. STEVAL-IDB007Vx board components, Figure 8. STEVAL-IDB008Vx board components, Figure 9. STEVAL-IDB009V1 board components – regions G and P).
|
The most important feature of the STM32L151CBU6 48-pin microcontroller (Figure 7. STEVAL-IDB007Vx board |
|
components, Figure 8. STEVAL-IDB008Vx board components, Figure 9. STEVAL-IDB009V1 board components – |
|
regions Q) is the USB to serial bridge providing an I/O channel with the BlueNRG-1, BlueNRG-2 device. |
|
The microcontroller is connected to the BlueNRG-1, BlueNRG-2 device through an ST2378E level translator |
|
(region R). |
Note: |
The STM32L microcontroller on the board is not intended to be programmed by users. ST provides a pre- |
|
programmed firmware image for the sole purpose of interfacing BlueNRG-1, BlueNRG-2 to a USB host device |
|
(e.g., a PC). |
BALF-NRG-01D3 and BALF-NRG-02D3 devices are ultra-miniature baluns which integrate matching network and harmonics filter on STEVAL-IDB007Vx and STEVAL-IDB008Vx. Discrete matching network is available on STEVAL-IDB009V1.
To monitor the power consumption of the BlueNRG-1, BlueNRG-2 only, remove the jumper from JP4 and insert an ammeter between pins 1 and 2 of the connector (when the power is ON, remove the USB connection).
Since power consumption of the BlueNRG-1, BlueNRG-2 are usually very low, an accurate instrument in the range of few micro amps is recommended.
1.Connect an antenna to the SMA connector
2.Configure the board to USB power supply mode as per Table 3. STEVAL-IDB007Vx, STEVAL-IDB008Vx, STEVAL-IDB009Vx kit platform power supply modes
3.Connect the board to a PC via USB cable (connector CN5)
4.Verify the power indication LED DL4 is on.
UM2071 - Rev 12 |
page 12/94 |
|
|
UM2071
4BlueNRG-1, BlueNRG-2 Navigator
BlueNRG-1, BlueNRG-2 Navigator are user friendly GUI which lets you select and run demonstration applications easily, without requiring any extra hardware. With it, you can access the following DK software package components:
•BlueNRG-1, BlueNRG-2 Bluetooth low energy (BLE) demonstration applications
•BlueNRG-1, BlueNRG-2 peripheral driver examples
•BlueNRG-1, BlueNRG-2 2.4 GHz radio proprietary examples
•BlueNRG-1, BlueNRG-2 development kits
•release notes
•license files
With BlueNRG-1, BlueNRG-2 DK Navigator, you can directly download and run the selected prebuilt application binary image (BLE examples or peripheral driver example) on the BlueNRG-1, BlueNRG-2 platform without a JTAG interface.
The interface gives demo descriptions and access to board configurations and source code if needed. User can run the utility through the BlueNRG-1 and BlueNRG-2 Navigator icon under:
Start → ST BlueNRG -1_2 DK X.X.X → BlueNRG-1 Navigator, BlueNRG-2 Navigator.
Figure 10. BlueNRG-1 Navigator
Note: |
BlueNRG-1 Navigator and BlueNRG-2 Navigator are two instances of the same application tailored for the |
|
specific selected device, in order to select the related available resources. Next sections focus on BlueNRG-1 |
|
Navigator, but same concepts are also valid for BlueNRG-2 Navigator. |
4.1BlueNRG-1 Navigator ‘Demonstration Applications’
You can navigate the menus for the reference/demo application you want to launch. For each application, the following information is provided:
•Application settings (if applicable)
•Application description
•Application hardware related information (e.g., LED signals, jumper configurations, etc.)
The following functions are also available for each application:
UM2071 - Rev 12 |
page 13/94 |
|
|
UM2071
BlueNRG-1 Navigator ‘Demonstration Applications’
•Flash: to automatically download and run the available prebuilt binary file to a BlueNRG-1 platform connected to a PC USB port.
•Doc: to display application documentation (html format)
•Project: to open the project folder with application headers, source and project files.
The figure below shows you how to run the BLE Beacon demo application; the other demos function similarly.
Figure 11. BLE Beacon application
When a BlueNRG-1 platform is connected to your PC USB port, you can press the “Flash & Run” tab on the selected application window to download and run the available prebuilt application binary image on the BlueNRG-1 platform.
Figure 12. BLE Beacon Flash programming
Selecting the “Doc” tab opens the relative html documentation.
UM2071 - Rev 12 |
page 14/94 |
|
|
UM2071
BlueNRG-1 Navigator ‘Demonstration Applications’
Figure 13. BLE Beacon documentation
4.1.1BlueNRG-1 Navigator ‘Basic examples’
This page lists some basic sample applications for the BlueNRG-1 device to verify that BlueNRG-1 device is alive as well as the device sleep and wakeup modes.
Figure 14. Basic examples
4.1.2BlueNRG-1 Navigator ‘BLE demonstration and test applications’
This page lists all the available Bluetooth low energy (BLE) demonstration applications in the DK software package. These applications provide usage examples of the BLE stack features for the BlueNRG-1 device.
UM2071 - Rev 12 |
page 15/94 |
|
|
UM2071
BlueNRG-1 Navigator ‘Demonstration Applications’
Figure 15. BLE demonstration and test applications
4.1.3BlueNRG-1 Navigator ‘Peripherals driver examples’
This page lists the available BlueNRG-1 peripherals and corresponding test applications to work with certain features specific to the selected BlueNRG-1 peripheral.
Figure 16. Peripherals driver examples
4.1.4BlueNRG-1 Navigator ‘2.4 GHz radio proprietary examples’
The Radio low level driver provides access to the BlueNRG-1 device radio to send and receive packets without using the Bluetooth link layer.
UM2071 - Rev 12 |
page 16/94 |
|
|
UM2071
The 2.4 GHz radio proprietary examples built on top of the Radio low level driver can be used as reference examples for building other applications which use the BlueNRG-1 Radio.
Figure 17. 2.4 GHz radio proprietary examples
4.2BlueNRG-1 Navigator ‘Development Kits’
This window displays the available BlueNRG-1 DK kit platforms and corresponding resources. When you hover the mouse pointer on a specific item, the related component is highlighted on the board.
Figure 18. STEVAL-IDB007V2 kit components
4.2.1BlueNRG-1 Navigator ‘Release Notes’ and ‘License’
As their name suggests, these pages display the DK SW package Release Notes (html format) and the DK software package license file, respectively.
UM2071 - Rev 12 |
page 17/94 |
|
|
UM2071
5BlueNRG-X Radio Init Parameters Wizard
|
The BlueNRG-X Radio Parameters Wizard is a PC application which allows to define the proper values required |
|
for the correct BlueNRG-1, BlueNRG-2 BLE radio initialization, based on the specific user application scenario. As |
|
consequence of the user choices, a configuration header file (*_config.h) is generated: this file must be used on |
|
the user demonstration application folder. |
Note: |
The BlueNRG-X Radio Init Parameters Wizard is provided only on BlueNRG-1_2 DK SW package (STSW- |
|
BLUENRG1-DK) supporting BLE stack v2.x family. |
5.1How to run
User can run this utility by clicking on the BlueNRG-X Radio Init Parameters Wizard icon under: Start → ST BlueNRG -1_2 DK X.X.X
Figure 19. BlueNRG-X Radio Init Parameters Wizard
In the left section of the BlueNRG-X Radio Init Parameters Wizard Utility, user can select the following topics allowing to define the specific radio initialization parameters based on the specific BLE application requirements:
1.General Configuration
2.Radio Configuration
3.Service Configuration
4.Connection Configuration
5.Security DataBase configuration
6.OTA configuration
7.Stack configuration
8.Overview
UM2071 - Rev 12 |
page 18/94 |
|
|
UM2071
Main user interface window
9.Output
Refer to the BlueNRG-X Radio Init Parameters Wizard documentation available within BlueNRG-1_2 DK SW package for more details about each provided configuration section.
UM2071 - Rev 12 |
page 19/94 |
|
|
UM2071
6Programming with BlueNRG-1, BlueNRG-2 system on chip
The BlueNRG-1, BlueNRG-2 Bluetooth low energy (BLE) stack is provided as a binary library. A set of APIs to control BLE functionality. Some callbacks are also provided for user applications to handle BLE stack events. The user is simply requested to link this binary library to his or her application and use the relevant APIs to access BLE functions and complete the stack event callbacks to manage responses according to application requirements.
A set of software driver APIs is also included for accessing the BlueNRG-1, BlueNRG-2 SoC peripherals and resources (ADC, GPIO, I²C, MFTX, Micro, RTC, SPI, SysTick, UART and WDG).
The development kit software includes sample code demonstrating how to configure BlueNRG-1, BlueNRG-2 and use the device peripherals and BLE APIs and event callbacks. Documentation on the BLE APIs, callbacks, and peripheral drivers are provided in separate documents.
The BlueNRG-1, BlueNRG-2 DK software packages files are organized in the following main directories:
•Application: containing BlueNRG-1, BlueNRG-2 Navigator and Radio Init Parameters Wizard PC applications.
•Doc: with doxygen BLE APIs and events, BlueNRG-1, BlueNRG-2 peripheral drivers, BLE demo applications, BlueNRG-1, BlueNRG-2 Peripheral examples, BlueNRG-1, BlueNRG-2 SDK and HAL driver documentation, DK release notes and license file.
•Firmware: with prebuilt binary BLE and peripheral driver sample applications.
•Library
–Bluetooth LE: Bluetooth low energy stack binary library and all the definitions of stack APIs, stack and events callbacks. BLE stack v2.1 or later configuration header and source files.
–cryptolib: AES library.
–BLE_Application: BLE application framework files (BLE stack layers define values, OTA FW upgrade, BLE utilities, master library).
–BlueNRG1_Periph_Driver: BlueNRG-1, BlueNRG-2 drivers for device peripherals (ADC, clock, DMA, Flash, GPIO, I²C, timers, RTC, SPI, UARR and watchdog).
–CMSIS: BlueNRG-1 CMSIS files.
–SDK_Eval_BlueNRG1: SDK drivers providing an API interface to the BlueNRG-1, BlueNRG-2 platform hardware resources (LEDs, buttons, sensors, I/O channel).
–HAL: Hardware abstraction level APIs for abstracting certain BlueNRG-1 hardware features (sleep modes, clock based on SysTick, etc.).
–STM32L: BlueNRG-1, 2 network coprocessor framework example for an external microcontroller
•Project
–BLE_Examples: Bluetooth low energy demonstration application including Headers, source files and EWARM, Keil and Atollic project files.
–BlueNRG1_Periph_Examples: with sample applications for the BlueNRG-1, BlueNRG-2 peripherals and hardware resources, including Headers, source files and project files.
–STM32L: BlueNRG-1, 2 network coprocessor demonstration application examples for an external microcontroller.
•Utility: contains some utilities
Note: |
The selection between BlueNRG-1, BlueNRG-2 device is done at compile time using a specific define value |
|
BLUENRG2_DEVICE for selecting BlueNRG-2 device. Default configuration (no define value) selects |
|
BlueNRG-1 device. |
Note: |
BLE_Application folder is available only on BlueNRG-1_2 DK SW package v3.0.0 or later. |
Note: |
Starting from BlueNRG-1_2 DK SW package 3.1.0, Library, Project and Utility folders are located under C:\Users |
|
\{username}\ST\BlueNRG-1_2 DK x.x.x, in order to be able to directly compile projects even with Windows User |
|
Account Control activated. |
UM2071 - Rev 12 |
page 20/94 |
|
|
UM2071
7BLE beacon demonstration application
The BLE beacon demo is supported by the BlueNRG-1, BlueNRG-2 development platforms (STEVAL-IDB007Vx, STEVAL-IDB008Vx, STEVAL-IDB009Vx). It demonstrates how to configure a BlueNRG-1 device to advertise specific manufacturing data and allow another BLE device to determine whether it is in BLE beacon device range.
This section describes how to configure a BLE device to act as a beacon device.
The BLE stack must be correctly initialized thus:
aci_gatt_init();
aci_gap_init(GAP_PERIPHERAL_ROLE, 0, 0x08, &service_handle, &dev_name_char_handle, &appearanc e_char_handle);
See the BLE stack documentation for more information on these and following commands.
The BLE Beacon application advertises the following manufacturing data:
Table 5. BlueNRG-1 Beacon advertising manufacturing data
Data field |
Description |
Notes |
Company identifier code |
SIG company identifier (1) |
Default is 0x0030 (STMicroelectronics) |
ID |
Beacon ID |
Fixed value |
|
|
|
Location UUID |
Beacons UUID |
Used to distinguish specific beacons from others |
|
|
|
Major number |
Identifier for a group of beacons |
Used to group a related set of beacons |
|
|
|
Minor number |
Identifier for a single beacon |
Used to identify a single beacon |
|
|
|
Tx Power |
2's complement of the Tx power |
Used to establish how far you are from device |
|
|
|
1. available at: https://www.bluetooth.org/en-us/specification/assigned-numbers/company-identifiers
7.1.3Entering non-connectable mode
The BLE Beacon device uses the GAP API command to enter non-connectable mode thus:
aci_gap_set_discoverable(ADV_NONCONN_IND, 160, 160, PUBLIC_ADDR, NO_WHITE_LIST_USE,0, NULL, 0, NULL, 0, 0);
To advertise the specific selected manufacturer data, the BLE Beacon application can use the following GAP APIs:
UM2071 - Rev 12 |
page 21/94 |
|
|
UM2071
/* Remove TX power level field from the advertising data: it is necessary to have enough space for the beacon manufacturing data */ aci_gap_delete_ad_type(AD_TYPE_TX_POWER_LEVEL);
/* Define the beacon manufacturing payload */
uint8_t manuf_data[] = {26, AD_TYPE_MANUFACTURER_SPECIFIC_DATA, 0x30, 0x00, //Company identifier code (Default is 0x0030 - STMicroelectronics) 0x02,// ID 0x15,//Length of the remaining payload
0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4, //Location UUID 0xA1, 0x2F, 0x17, 0xD1, 0xAD, 0x07, 0xA9, 0x61,
0x00, 0x02, // Major number 0x00, 0x02, // Minor number
0xC8//2's complement of the Tx power (-56dB)}; };
/* Set the beacon manufacturing data on the advertising packet */ aci_gap_update_adv_data(27,
|
manuf_data); |
Note: |
BLE Beacon with Flash Management demonstration application is also available. It allows to configure a Beacon |
|
device as with the original Beacon demo application; it also shows how to properly handle Flash operations |
|
(Erase and Write) and preserve the BLE radio activities. This is achieved by synchronizing Flash operations with |
|
the scheduled BLE radio activities through the aci_hal_end_of_radio_activity_event() event callback timing |
|
information. |
7.2BLE Beacon FreeRTOS example
A specific new Beacon project (BLE_Beacon_FreeRTOS) shows how to use FreeRTOS with ST BLE stack v2.x. The example configures a BLE device in advertising mode (non-connectable mode) with specific manufacturing data and the BTLE_StackTick() is called from a FreeRTOS task (BLETask).
A task randomly changes the Minor number in the advertising data every 500 ms, sending a message through UART each time. Another task sends other messages through UART every 200 ms and generates a short pulse on LED3 (visible with a logic analyzer or oscilloscope).
In this example, low priority has been assigned to the BLETask.
Assigning high priority to a BLETask can give better latency; if some tasks require a lot of CPU time, it is recommended to assign them a lower priority than the BLETask to avoid BLE operations slowing down. Only for tasks that perform very short sporadic operations before waiting for an event, it is still reasonable to choose a priority higher than the BLETask.
UM2071 - Rev 12 |
page 22/94 |
|
|
UM2071
8BLE chat demo application
The BLE chat demo (server and client roles) is supported on the BlueNRG-1, BlueNRG-2 development platforms (STEVAL-IDB007Vx, STEVAL-IDB008Vx, STEVAL-IDB009Vx). It implements simple two-way communication between two BLE devices, demonstrating point-to-point wireless communication using the BlueNRG-1 product.
This demo application exposes a single chat service with the following (20 byte max.) characteristic values:
•The TX characteristic, with which the client can enable notifications; when the server has data to be sent, it sends notifications with the value of the TX characteristic.
•The RX characteristic, is a writable characteristic; when the client has data to be sent to the server, it writes a value in this characteristic.
There are two device roles which can be selected through the specific project workspace:
•The Server that exposes the chat service (BLE peripheral device).
•The Client that uses the chat service (BLE central device).
The application requires two devices to be programmed with respective server and client roles. These must be connected to a PC via USB with an open serial terminal for each device, with the following configurations:
|
Table 6. Serial port configuration |
|
|
|
|
Parameter |
|
Value |
Baudrate |
|
115200 bit/s |
|
|
|
Data bits |
|
8 |
|
|
|
Parity bits |
|
None |
|
|
|
Stop bits |
|
1 |
|
|
|
The application listens for keys typed in one device terminal and sends them to the remote device when the return key is pressed; the remote device then outputs the received RF messages to the serial port. Therefore, anything typed in one terminal becomes visible in the other.
This section describes how two BLE chat devices (server-peripheral and client-central) interact with each other to set up a point-to-point wireless chat.
BLE device must first be set up on both devices by sending a series of API commands to the processor.
The BLE stack must be correctly initialized before establishing a connection with another BLE device. This is done with aci_gatt_init() and aci_gap_init() APIs:
aci_gatt_init();
BLE Chat server role:
aci_gap_init(GAP_PERIPHERAL_ROLE, 0, 0x08, &service_handle, &dev_name_char_handle, &appearanc e_char_handle);
BLE Chat client role:
aci_gap_init(GAP_CENTRAL_ROLE, 0, 0x08, &service_handle, &dev_name_char_handle, &appearance_c har_handle);
Peripheral and central BLE roles must be specified in the aci_gap_init() command. See the BLE stack API documentation for more information on these and following commands.
UM2071 - Rev 12 |
page 23/94 |
|
|
UM2071
Peripheral and central device setup
The chat service is added to the BLE chat server device via:
aci_gatt_add_service(UUID_TYPE_128, &service_uuid, PRIMARY_SERVICE, 7,&chatServHandle);
Where service_uuid is the private service 128-bit UUID allocated for the chat service (Primary service). The command returns the service handle in chatServHandle. The TX characteristic is added using the following command on the BLE Chat server device:
aci_gatt_add_char(chatServHandle, UUID_TYPE_128, &charUuidTX, 20, CHAR_PROP_NOTIFY, ATTR_PERM ISSION_NONE, 0, 16, 1, &TXCharHandle);
Where charUuidTX is the private characteristic 128-bit UUID allocated for the TX characteristic (notify property). The characteristic handle is returned on the TXCharHandle variable.
The RX characteristic is added using the following command on the BLE Chat server device:
aci_gatt_add_char(chatServHandle, UUID_TYPE_128, &charUuidRX, 20, CHAR_PROP_WRITE|CHAR_PROP_W RITE_WITHOUT_RESP, ATTR_PERMISSION_NONE, GATT_SERVER_ATTR_WRITE,16, 1, &RXCharHandle);
Where charUuidRX is the private characteristic 128-bit UUID allocated for the RX characteristic (write property). The characteristic handle is returned on the RXCharHandle variable.
See the BLE stack API documentation for more information on these and following commands.
The server device uses GAP API commands to enter the general discoverable mode:
aci_gap_set_discoverable(ADV_IND, 0, 0, PUBLIC_ADDR, NO_WHITE_LIST_USE,8,local_name, 0, NULL, 0, 0);
The local_name parameter contains the name presented in advertising data, as per Bluetooth core specification version 4.2, Vol. 3, Part C, Ch. 11.
Once the server device is discoverable by the BLE chat client device, the client device uses aci_gap_create_connection()to connect with the BLE chat server device:
aci_gap_create_connection(0x4000, 0x4000, PUBLIC_ADDR, bdaddr, PUBLIC_ADDR, 40, 40, 0, 60, 20 00 , 2000);
Where bdaddr is the peer address of the client device.
Once the two devices are connected, you can set up corresponding serial terminals and type messages in either of them. The typed characters are stored in two respective buffers and when the return key is pressed:
•on the BLE chat server device, the typed characters are sent to the BLE chat client device by notifying the previously added TX characteristic (after notifications are enabled) with:
aci_gatt_update_char_value(chatServHandle,TXCharHandle,0,len, (uint8_t*)cmd+j);
•on the BLE chat client device, the typed characters are sent to the BLE chat server device by writing the previously added RX characteristic with:
aci_gatt_write_without_resp(connection_handle, rx_handle+1, len, (uint8_t *)cmd+j);
Where connection_handle is the handle returned upon connection as a parameter of the connection complete event, rx_handle is the RX characteristic handle discovered by the client device.
Once these API commands have been sent, the values of the TX and RX characteristics are displayed on the serial terminals.
UM2071 - Rev 12 |
page 24/94 |
|
|
UM2071
Peripheral and central device setup
Figure 20. BLE chat client
Figure 21. BLE chat server
UM2071 - Rev 12 |
page 25/94 |
|
|
UM2071
9BLE chat master and slave demo application
The BLE chat master and slave demo is supported on the BlueNRG-1, BlueNRG-2development platforms (STEVAL-IDB007Vx, STEVAL-IDB008Vx, STEVAL-IDB009Vx). It demonstrates simple point-to-point wireless communication using a single application which configures the chat client and server roles at runtime.
The new chat demo application configures a BLE device as central or peripheral using the API:
aci_gap_init(GAP_CENTRAL_ROLE|GAP_PERIPHERAL_ROLE, 0, 0x07, &service_handle, &dev_name_char_h andle, &appearance_char_handle);
It then initiates a discovery procedure for another BLE device configured with the same chat master and slave application image.
If such a device is found within a random interval, it starts a connection procedure and waits until a connection is established. If the discovery procedure time expires without finding another chat master and slave device, the device enters discovery mode and waits for another chat master and slave device to discover and connect to it.
When connection is established, the client and server roles are defined and the chat communication channel can be used.
This demo application exposes a single chat service with the following (20 byte max.) characteristic values:
•The TX characteristic, with which the client can enable notifications; when the server has data to be sent, it sends notifications with the value of the TX characteristic.
•The RX characteristic, is a writable characteristic; when the client has data to be sent to the server, it writes a value in this characteristic.
The application requires two devices to be programmed with the same application, with the server and client roles defined at runtime. Connect the two devices to a PC via USB and open a serial terminal on both with the same configuration as Table 6. Serial port configuration.
The application listens for keys typed in one device terminal and sends them to the remote device when the return key is pressed; the remote device then outputs the received RF messages to the serial port. Therefore, anything typed in one terminal becomes visible in the other.
This section describes how two BLE chat master and slave devices interact with each other in order to set up a point-to-point wireless chat.
The BLE stack must first be set up on both devices by sending a series of API commands to the processor. The chat master and slave client and server roles are defined at runtime.
The BLE stack must be correctly initialized before establishing a connection with another BLE device. This is done with two commands:
aci_gatt_init();
aci_gap_init(GAP_CENTRAL_ROLE|GAP_PERIPHERAL_ROLE, TRUE,0x07, &service_handle, &dev_name_char _handle, &appearance_char_handle);
The BLE peripheral and central roles are specified in the aci_gap_init() command. See the BLE API documentation for more information on these and following commands.
Refer to Section 8.1.2 Add service and characteristics.
To find another BLE chat master and slave device in discovery mode, a discovery procedure must be started via:
aci_gap_start_general_discovery_proc(0x4000, 0x4000, 0x00, 0x00);
UM2071 - Rev 12 |
page 26/94 |
|
|
UM2071
BLE chat master and slave roles
The following GAP API command is used for entering general discoverable mode:
aci_gap_set_discoverable(ADV_IND, 0x90, 0x90, PUBLIC_ADDR, NO_WHITE_LIST_USE, sizeof(local_na me), local_name, 0, NULL, 0x6, 0x8);
In the above mentioned discovery and mode assignment procedures, the two chat master and slave applications assume respective client and server roles at runtime. During this initial configuration phase, when a chat master and slave device is placed in discoverable mode and it is found by the other chat master and slave device performing a discovery procedure, a Bluetooth low energy connection is created and the device roles are defined. The following GAP API command is used for connecting to the discovered device:
aci_gap_create_connection(0x4000, 0x4000,device_found_address_type, device_found_address, PUB LIC_ADDR, 40, 40, 0, 60, 2000 , 2000);
Where device_found_address_type is the address type of the discovered chat master and slave and device_found_address is the peer address of the discovered chat master and slave device.
Once the two devices are connected, you can set up corresponding serial terminals and type messages in either of them. The typed characters are stored in two respective buffers and when the return key is pressed:
On the BLE chat master-and-slave server device, the typed characters are sent to the master-and-slave client device by notifying the previously added TX characteristic (after notifications have been enabled). This is done via:
aci_gatt_update_char_value(chatServHandle, TXCharHandle, 0, len, (uint8_t *)cmd+j);
On the master-and-slave client device, the typed characters are sent to the master-and-slave server device, by writing the previously added RX characteristic. This is done via:
aci_gatt_write_without_resp (connection_handle, rx_handle +1, len, (uint8_t *)cmd+j);
Where connection_handle is the handle returned upon connection as a parameter of the connection complete event, rx_handle is the RX characteristic handle discovered by the client device.
Once these API commands have been sent, the values of the TX and RX characteristics are displayed on the serial terminals.
UM2071 - Rev 12 |
page 27/94 |
|
|
UM2071
BLE remote control demo application
The BLE remote control application is supported on the BlueNRG-1, BlueNRG-2 development platforms (STEVAL-IDB007Vx, STEVAL-IDB008Vx, STEVAL-IDB009Vx). It demonstrates how to control a remote device (like an actuator) using a BlueNRG-1, BlueNRG-2 device.
This application periodically broadcasts temperature values that can be read by any device. The data is encapsulated in a manufacturer-specific AD type and the content (besides the manufacturer ID, i.e., 0x0030 for STMicroelectronics) is as follows:
Table 7. BLE remote advertising data
Byte 0 |
Byte 1 |
|
Byte2 |
App ID (0x05) |
|
Temperature value (little-endian) |
|
|
|
|
|
The temperature value is given in tenths of degrees Celsius.
The device is also connectable and exposes a characteristic used to control LEDs DL1 and DL3 on the BLE kit platform. The value of this characteristic is a bitmap of 1 byte. Each bit controls one of the LEDs:
•bit 0 is the status of LED DL1
•bit 2 is the status of LED DL3.
A remote device can therefore connect and write this byte to change or read the status of these LEDs (1 for LED ON, 0 for LED OFF).
The peripheral disconnects after a timeout (DISCONNECT_TIMEOUT) to prevent a central device remaining connected to the device indefinitely.
Security is not enabled by default, but this can be changed with ENABLE_SECURITY (refer to file BLE_RC_main.h). When security is enabled, the central device must be authenticated before reading or writing the device characteristic.
To interact with a device configured as a BLE remote control, another BLE device (a BlueNRG-1, BlueNRG-2 or any Bluetooth® Low Energy device) can be used to detect and view broadcast data.
To control one of the LEDs, the device has to connect to a BlueNRG-1 BLE remote control device and write in the exposed control point characteristic. The Service UUID is ed0ef62e-9b0d-11e4-89d3-123b93f75cba. The control point characteristic UUID is ed0efb1a-9b0d-11e4-89d3-123b93f75cba.
This section describes how to configure a BlueNRG-1 device to acting as a remote control device.
The BLE stack must be correctly initialized before establishing a connection with another Bluetooth LE device. This is done with two commands:
aci_gatt_init();
aci_gap_init(GAP_PERIPHERAL_ROLE, 0, 0x07, &service_handle, &dev_name_char_handle, &appearanc e_char_handle);
See BLE stack API documentation for more information on these and following commands.
The BLE remote control application advertises certain manufacturing data as follows:
UM2071 - Rev 12 |
page 28/94 |
|
|
UM2071
BLE remote control application setup
/* Set advertising device |
name |
as Node */ |
const uint8_t scan_resp_data[] |
= {0x05,AD_TYPE_COMPLETE_LOCAL_NAME,'N','o','d','e'} |
|
/* Set scan response data |
*/ |
hci_le_set_scan_response_data(sizeof(scan_resp_data),scan_resp |
_data);
/* Set Undirected Connectable Mode */ aci_gap_set_discoverable(ADV_IND, (ADV_INTERVAL_MIN_MS*1000)/625,
(ADV_INTERVAL_MAX_MS*1000)/625, PUBLIC_ADDR, NO_WHITE_LIST_USE, 0, NULL, 0, NULL, 0, 0); /* Set advertising data */
hci_le_set_advertising_data(sizeof(adv_data),adv_data);
On the development platform, the temperature sensor value is set in the adv_data variable.
The BLE Remote Control service is added via:
aci_gatt_add_service(UUID_TYPE_128, &service_uuid, PRIMARY_SERVICE, 7, &RCServHandle);
Where service_uuid is the private service 128-bit UUID allocated for the BLE remote service (ed0ef62e-9b0d-11e4-89d3-123b93f75cba).
The command returns the service handle in RCServHandle.
The BLE remote control characteristic is added using the following command:
#if ENABLE_SECURITY
aci_gatt_add_char(RCServHandle, UUID_TYPE_128, &controlPointUuid, 1, CHAR_PROP_READ|CHAR_PROP_WRITE|CHAR_PROP_WRITE_WITHOUT_RESP|CH AR_PROP_SIGNED_WRITE, ATTR_PERMISSION_AUTHEN_READ|ATTR_PERMISSION_AUTHEN_WRITE, GATT_NOTIFY_ATTRIBUTE_WRITE,16,1,&c ontrolPointHandle);
#else
aci_gatt_add_char(RCServHandle, UUID_TYPE_128, &controlPointUuid, 1, CHAR_PROP_READ|CHAR_PROP_WRITE|CHAR_PROP_WRITE_WITHOUT_RESP, ATTR_PERMISSION_NONE, GATT_NOTIF Y_ATTRIBUTE_WRITE, 16,
1,&controlPointHandle);
#endif
Where controlPointUuid is the private characteristic 128-bit UUID allocated for BLE remote control characteristic (ed0efb1a-9b0d-11e4-89d3-123b93f75cba) and controlPointHandle is the BLE remote control characteristic handle.
If security is enabled, the characteristic properties must be set accordingly to enable authentication on controlPointUuid characteristic read and write.
When connected to a BLE central device (another BlueNRG-1, BlueNRG-2 device or any Bluetooth® Low Energy device), the controlPointUuid characteristic is used to control the BLE remote control platform LED. Each time a write operation is performed on controlPointUuid, the aci_gatt_attribute_modified_event() callback is raised and the selected LEDs are turned on or off.
UM2071 - Rev 12 |
page 29/94 |
|
|