AN1133: Dynamic Multiprotocol Development
with Bluetooth® and Zigbee
This application note provides details on developing Dynamic
Multiprotocol applications using Bluetooth and Zigbee. It describes
how to configure applications in Simplicity Studio using the
EmberZNet PRO SDK. It then provides a detailed walkthrough on
how the underlying code functions. For details on Dynamic
Multiprotocol Application development that apply to all protocol
combinations see UG305: Dynamic Multiprotocol User’s Guide.
KEY POINTS
• Generating and loading dynamic multiprotocol example applications.
• Adding dynamic multiprotocol functionality to an existing project.
• Details on the application User Interface.
• How the Zigbee example applic ations
function.
• How the Bluetooth application functions.
silabs.com | Building a more connected world. Rev. 0.9
AN1133: Dynamic Multiprotocol Development with Bluetooth and Zigbee
Introduction
1 Introduction
The example applications referenced here can be controlled either from a protocol-specific switch application or from a Bluetooth-enabled
smartphone app. This application note provides details on how these examples are designed and implemented. It also describes how to
generate, compile, and load example application code, and how to add dynamic multiprotocol functionality to an existing Zigbee project.
The application note is intended to be used when developing your own Zigbee/Bluetooth dynamic multiprotocol implementations.
Note: The Zigbee dynamic multiprotocol solution is currently only supported for SoC architectures. Support for NCP architectures is not
yet available. Please contact Silicon Labs Sales for more information on our multiprotocol software roadmap.
1.1 Resources
• UG305: Dynamic Multiprotocol User's Guide provides details on:
• Dynamic Multiprotocol Architecture
• Radio Scheduler operation (with examples)
• Task Priority management
• AN1135: Using Third Generation Non-Volatile Memory (NVM3) Data Storage explains how NVM3 can be used as non-volatile data
storage in Dynamic Multiprotocol applications with Zigbee and Bluetooth.
Note: EmberZNet SDK 6.8.0.0 was released as part of Gecko SDK Suite 3.0.0.0 (GSDK v3.x) and is used with Bluetooth SDK v3.x
and Simplicity Studio 5. EmberZNet SDK 6.7.x continues to be used with Bluetooth 2.13.x and Simplicity Studio 4. Because of
changes to the Bluetooth SDK v3.x, a few instructions and examples in this document vary based on version. Both variants are
included and are clearly noted in the text.
1.2 Development Environment Requirements
EmberZNet 6.7.x
• Simplicity Studio 4
• EmberZNet SDK version 6.4.0 or higher
• Bluetooth SDK version 2.10.0 or higher
• Micrium OS-5 kernel version 5.3. or higher (installed automatically with EmberZNet SDK in Simplicity Studio 4)
• An EFR32 chip with at least 512 kB of flash (required to run all the necessary software components)
• IAR Embedded Workbench for ARM (IAR-EWARM) version compatible with your SDK (see the release notes for version details).
EmberZNet 6.8.x and higher
• Simplicity Studio 5
• EmberZNet SDK version 6.8.0 or higher
• Bluetooth SDK version 3.0.0 or higher
• Micrium OS kernel version 6.0.0 or higher (installed automatically with EmberZNet SDK in Simplicity Studio)
• An EFR32 chip with at least 512 kB of flash (required to run all the necessary software components)
• IAR Embedded Workbench for ARM (IAR-EWARM) version compatible with your SDK (see the release notes for version details).
silabs.com | Building a more connected world. Rev. 0.9 | 2
AN1133: Dynamic Multiprotocol Development with Bluetooth and Zigbee
Working with the Zigbee/Bluetooth Examples
2 Working with the Zigbee/Bluetooth Examples
This section describes
• How to build and flash the dynamic multiprotocol applications supplied with the EmberZNet SDK.
• How to configure a Zigbee project into a dynamic multiprotocol project.
2.1 Application Generation
To work with Zigbee/Bluetooth dynamic multiprotocol applications you must install both the EmberZNet SDK and the Bluetooth SDK. The
Micrium kernel is installed along with the EmberZNet SDK. IAR Embedded Workbench for ARM (IAR-EWARM) 8.30 must be installed
and used as your compiler. See QSG106: Getting Started with EmberZNet PRO for information on installing the SDKs and IAR-EWARM.
Dynamic multiprotocol applications are generated, built, and uploaded in the same way as other applications. If you are not familiar with
these procedures, see QSG106: Getting Started with EmberZNet PRO for details. The dynamic multiprotocol applications included with
the EmberZNet SDK are:
• DynamicMultiprotocolLight is an application designed to demonstrate a DMP device with Zigbee 3.0 coordinator capabilities.
• DynamicMultiprotocolLightSed is an application designed to demonstrate a DMP device with SED capabilities.
• DynamicMultiprotocolSwitch is a Zigbee-only application designed to work with the two Zigbee/Bluetooth applications.
The following summary procedure uses the DynamicMultiprotocolLight example application.
1. In Simplicity Studio, start a new project selecting the DynamicMultiprotocolLight example.
2. If your project General tab shows GNU-ARM as a compiler, change to IAR EWARM.
3. Click Generate to generate project files.
4. Click Build (hammer icon) to build the application image.
silabs.com | Building a more connected world. Rev. 0.9 | 3
AN1133: Dynamic Multiprotocol Development with Bluetooth and Zigbee
Working with the Zigbee/Bluetooth Examples
5. Note the board and part number for your device and the directory for generated files.
6. Right-click the target J-Link under Devices, and select Upload Application.
7. Browse to <folder on General tab>\IAR ARM - <qualifier
>\<project name> and select the .gbl file.
8. Silicon Labs strongly recommends that, if you have not already loaded a bootloader onto your device, you do so now. Check Erase chip before uploading image. Check Bootloader image, then browse to the following folder:
silabs.com | Building a more connected world. Rev. 0.9 | 4
AN1133: Dynamic Multiprotocol Development with Bluetooth and Zigbee
Working with the Zigbee/Bluetooth Examples
9. When both images are selected, the dialog should resemble the following figure. Click OK.
10. Application load success indicators are code-dependent. With the DynamicMultiprotocolLight example, the LCD should display
the following before changing over to the light bulb display:
Whether the application is a full function or a sleepy end device is determined by the Device Type on the ZNet tab.
2.2 Converting a Zigbee Application to a Zigbee/Bluetooth LE Dynamic Multiprotocol Application
This section describes the configuration changes required to convert a working Zigbee application into a Zigbee/Bluetooth LE Dynamic
Multiprotocol application. The instructions assume you have started with a non-DMP Zigbee sample application or your own Zigbee
project, and that the application is working correctly.
Requirements:
• Zigbee application set up to build with IAR ARM v8.30.1 (for these instructions we use Z3 Light)
• EFR32MG12 or other EFR32 with sufficient memory (for these instructions we assume BRD4161 (EFR32MG12P432F1024GL125))
Note:The Dynamic Multiprotocol sample applications supplied with Simplicity Studio are already correctly defined and do not require
modification before project generation unless performing an OTA update. There is a potential conflict with the DMP sample app
LCD screen and the external flash. If you need to perform OTA updates, check the Dynamic Multiprotocol UI Demo Code
Stub plugin as described in the following section.
silabs.com | Building a more connected world. Rev. 0.9 | 5
AN1133: Dynamic Multiprotocol Development with Bluetooth and Zigbee
Working with the Zigbee/Bluetooth Examples
2.2.1 Generate and Build the Zigbee Application
The purpose of this procedure is to verify that the base application had loaded and is working correctly, and that output is printing to the
console. This example uses the Z3Light sample application in the EmberZNet SDK It begins with the default settings, so that the configuration changes are clear. Remember to select IAR as the toolchain.
Generate and build the project, load it to the board and check the Serial 1 output to make sure it’s up and running.
2.2.2 Reconfigure the Project
The search bar at the top of the Plugins and other tabs is helpful when modifying the configuration. For plugins, the description explains
its utility for DMP. The following figure illustrates finding the RTOS plugin and its description.
Note: Beginning with SDK 6.9.0, the RTOS configurations options moved from the Micrium plugin to the RTOS common plugin and the
Zigbee Task call stack size is treated as words instead of bytes.
silabs.com | Building a more connected world. Rev. 0.9 | 6
AN1133: Dynamic Multiprotocol Development with Bluetooth and Zigbee
Working with the Zigbee/Bluetooth Examples
1. On the Plugins tab, check the following:
•RTOS
In SDKs 6.8.x or lower, check Micrium RTOS.
In SDKs 6.9.0 and higher, you have the option of using Micrium RTOS or Free RTOS. For Micrium RTOS, check Micrium RTOS and
RTOS Common.
From SDK 6.9.x you can use FreeRTOS by selecting the FreeRTOS plugin and unchecking the Micrium RTOS plugin
FreeRTOS is not supported yet. Theoriticially it should work, but we do not plan on testing it before Q4.
• BLE
• Idle/Sleep
silabs.com | Building a more connected world. Rev. 0.9 | 7
AN1133: Dynamic Multiprotocol Development with Bluetooth and Zigbee
The USART used to communicate with the external flash on Silicon Labs radio boards is the same USART that communicates with
the LCD display on the WSTK. In order to perform an OTA update on a sample app that uses the LCD display, check Dynamic Multiprotocol UI Demo Code Stub. This disables the LCD display but allows the OTA to take place.
2. On the Plugins tab, uncheck (disable) the following:
•Simple Main
3. On the Plugins tab, change settings for the following:
• HAL
• Uncheck Simulated EEPROM version 1 Library.
• Check Simulated EEPROM Version 2 to NVM3 Upgrade Library (this will also enable the NVM plugin).
silabs.com | Building a more connected world. Rev. 0.9 | 8
Loading...
+ 16 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.