This section explains how to enable advertisements and connection on the PIC32-BZ6 Curiosity board using the MPLAB Code Configurator
(MCC). The peripheral device will be the PIC32-BZ6 Curiosity
board and the central device can either be a smartphone with a Light Blue app or another
PIC32-BZ6 Curiosity board. BLE Advertising is broadcasting
small packets to peer devices. In BLE, a peripheral device always starts with
advertisements. Advertisement packets enable a central or observer to discover and
connect to a peripheral.
Users can choose to either run the precompiled Application Example hex file provided on
the PIC32-BZ6 Curiosity Board or follow the steps to develop
the application from scratch.
It is recommended to follow the examples in sequence to understand the basic concepts
before progressing to the advanced topics.
Recommended Readings
Getting Started with Application Building Blocks – See Building
Block Examples from Related Links.
Getting Started with Peripheral Building Blocks – See Peripheral
Devices from Related Links.
FreeRTOS and BLE Stack Setup – See Peripheral - FreeRTOS BLE Stack
and App Initialize from Related Links.
See BLE Legacy
Advertisements from Related Links.
See BLE Connection from
Related Links.
BLE Software Specification – See MPLAB®
Harmony Wireless BLE in Reference Documentation from Related
Links.
Hardware Requirement
Table 5-18. Hardware Prerequisites
S. No.
Tool
Quantity
1
PIC32-BZ6 Curiosity Board
1
2
Micro USB cable
1
3
Android/iOS Smartphone
1
SDK Setup
Refer to Getting Started with Software Development from Related Links.
Software Requirement
To install Tera Term tool, refer to the Tera Term web page in Reference
Documentation from Related Links.
Smartphone App
Light Blue iOS/Android app available in stores
Programming the Precompiled Hex
File or Application Example
Using MPLAB® X IPE:
Import and program the
precompiled hex file: <Harmony Content Path>\wireless_apps_pic32_bz6\apps\ble\building_blocks\peripheral\peripheral_conn\precompiled_hex\peripheral_conn.X.production.signed.hex.
For detailed steps, refer to
Programming a Device in MPLAB® IPE in
Reference Documentation from Related Links.
Note: Ensure to choose the correct Device and Tool
information.
Using MPLAB® X IDE:
Perform the following the steps
mentioned in Running a Precompiled Example. For more information, refer
to Running a Precompiled Application Example from Related Links.
Open and program the application:
<Harmony Content Path>\wireless_apps_pic32_bz6\apps\ble\building_blocks\peripheral\peripheral_conn\firmware\peripheral_conn.X.
For more details on how to find
the Harmony Content Path, refer to Installing the MCC Plugin from Related
Links.
Demo Description
This application enables users to transmit Connectable and Scannable Undirected BLE
Advertisements. On reset, demo will print “Advertising” on a terminal emulator like
Tera Term which denotes the start of advertisements. The central device scanning
these advertisements can then issue a connection request unto the Curiosity board.
Upon connection, “Connected” is printed on the terminal window.
Testing
Using a micro USB cable, connect
the Debug USB on the Curiosity board to a PC.
Program the precompiled hex file
or application example as mentioned.
Open Tera Term:
Set the “Serial Port” to
USB Serial Device.
Speed to 115200.
For more details on how to set the “Serial Port” and “Speed”, refer to
COM Port Setup in Running a Precompiled Application Example
from Related Links.
Press the NMCLR button on the
Curiosity board. “Advertising” must be displayed in Tera Term.
Launch the Light Blue mobile app
to scan for Advertisements. The device name “pic32cx-bz6” will appear then press
Connect. After a successful connection, you can view the advertisement data and
see “Connected” displayed in Tera Term. Users with an iOS device may see the
device name as “Microchip”.
Figure 5-81.
Note: Users can use another PIC32-BZ6 Curiosity board configured as BLE Connection
(central) instead of using a mobile app. For more information, refer to
BLE Connection from Related Links.
Developing the Application from
Scratch using MCC
Follow the steps below to build the application manually:
Note:
It is recommended for the new users of the MPLAB Code Configurator to refer
MPLAB® Code Configurator (MCC) User’s Guide
in Reference Documentation from Related Links.
Create a new harmony project. For more details, see Creating a New MCC
Harmony Project from Related Links.
To setup the basic components and
configuration required to develop this application, import component
configuration: <Harmony Content Path>\wireless_apps_pic32_bz6\apps\ble\building_blocks\peripheral\peripheral_conn\firmware\peripheral_conn.X\peripheral_conn.
Note: Import and export functionality of Harmony
component configuration will help users to start from a known working
setup of MCC configuration.
Accept dependencies or satisfiers
when prompted.
Verify if the project graph
window has all the expected configuration.
Figure 5-82. Project Graph
Verifying Advertisement and
Connection Configuration
Select BLE Stack component in project
graph, to open component configuration and configure as illustrated in the
following figure.
Figure 5-83. BLE Stack
Configuration
Note: If users cannot see the
Configuration Options panel in the right-hand side of the MPLAB X IDE,
it might be minimized. Hover the cursor towards the Configuration
Options side tab and click the “dot” on the top right-hand corner to pin
it (see the following figure).Figure 5-84. Configuration
Panel
.
Generating Code
For more details on code generation, refer to MPLAB Code Configurator (MCC) Code
Generation from Related Links.
Files and Routines Automatically
Generated by the MCC
After generating the program source from MCC interface by clicking Generate Code, the
BLE configuration source and header files can be found in the following project
directories.Figure 5-85. Project File
Initialization routines for OSAL, RF System, and BLE System are auto-generated by the
MCC. See OSAL Libraries Help in Reference Documentation from Related
Links. Initialization routine executed during program initialization can be found in
the project file.
Figure 5-86. initialization.c
The BLE stack initialization routine executed during Application Initialization can
be found in project files. This initialization routine is automatically generated by
the MCC. This call initializes and configures the GAP, GATT, SMP, L2CAP and BLE
middleware layers.
Figure 5-87. app_ble.c
Autogenerated, Advertisement Data FormatFigure 5-88. AD Structures and
Types
Table 5-19. Source Files
Source Files
Usage
app.c
Application State machine, includes calls for Initialization of
all BLE stack (GAP,GATT, SMP, L2CAP) related component
configurations
app_ble\app_ble.c
Source code for the BLE stack related component configurations,
code related to function calls from app.c
app_ble\app_ble_handler.c
GAP, GATT, SMP and L2CAP event handlers
Note:app.c is autogenerated and has a state machine based application
code. Users can use this template to develop their own application.
Header Files
ble_gap.h
contains BLE GAP functions and is automatically included in
app.c file.
Function Calls
MCC generates and adds the code
to initialize the BLE Stack GAP, GATT, SMP and L2CAP in
APP_BleStackInit()
APP_BleStackInit() is the API that will be called inside
the Applications Initial State APP_STATE_INIT in
app.c
User Application Development
Include
Include the user action. For more information, refer to User Action from
Related Links.
definitions.h must be included in all the files where UART
will be used to print debug information.
Note: definitions.h is not specific to UART
but instead it must be included in all application source files where any peripheral
functionality will be exercised.
All the possible GAP, GATT, SMP
and L2CAP Event handlers are available in file
app_ble_handler.c. Users can implement their own
application code to denote Connection State here.Figure 5-91. app_ble_handler.c
Note: Users can explore more BLE Advertisement
functionalities using the BLE Stack APIs. For more information, refer to BLE
Stack in Reference Documentation from Related Links.