1. Introduction
The STM32CubeWBa MCU Package[1] provides software components running on STM32WBA MCUs.
For all examples provided with the package, the following integrated development environments are supported:
- STMicroelectronics integrated development environment for STM32 products (STM32CubeIDE)
- IAR Systems® IAR Embedded Workbench® for Arm® (EWARM)
- Keil® microcontroller development kit (MDK-ARM)
The Firmware Package for the STM32WBA series is also available on STM32CubeWBA github[2].
2. STM32WBA Zigbee software architecture
The single Core Arm® Cortex®-M33 STM32WBA Zigbee solution is designed to develop application firmware including clusters and smart energy objects on top of the Zigbee Stack and 802.15.4 MAC & PHY, as depicted in the figure below.
STM32WBA Zigbee architecture |
---|
STM32WBA5xxG Memory system:
- 1-Mbyte flash memory from address offset 0x00 0000 to 0x0F FFFF
- 128-Kbyte SRAMs:
- SRAM1 64-Kbyte from address offset 0x0 0000 to 0x0 FFFF. (continuous SRAM space with SRAM2)
- SRAM2 64-Kbyte
Power Efficiency Features of Zigbee with STM32WBA
Zigbee with STM32WBA offers the ability to handle power efficiency by defining different levels of low power that can be configured based on the specific needs of the application.
Clock Frequency
At runtime, clocks will be managed dynamically by the System Clock Manager (SCM) module. Input Frequency = 32MHz.
3. STM32WBA Zigbee applications
3.1. Stack and Clusters Libraries
The STM32WBA utilizes the Zigbee stack R23, which is available in two library types, FFD and RFD.
ZigBee Cluster Library ZCL8.0 is provided as a library, with the option to receive the source code under a non-disclosure agreement (NDA).
List of the clusters included :
Cluster ID | Cluster |
---|---|
0x0000 | Basic |
0x0001 | Power Configuration |
0x0003 | Identify |
0x0004 | Groups |
0x0005 | Scenes |
0x0006 | On/Off |
0x0008 | Level Control |
0x000a | Time |
0x0019 | OTA Upgrade |
0x0020 | Poll Control |
0x0021 | Green Power Proxy |
0x0102 | Window Covering |
0x0202 | Fan Control |
0x0204 | Thermostat User Interface Configuration |
0x0300 | Color control |
0x0301 | Ballast Configuration |
0x0400 | Illuminance Measurement |
0x0402 | Temperature Measurement |
0x0406 | Occupancy Sensing |
0x0502 | IAS Warning Device (WD) |
0x0b05 | Diagnostics |
0x0002 | Device Temperature Configuration |
0x0007 | On/Off Switch Configuration |
0x0009 | Alarms |
0x000b | RSSI Location |
0x0015 | Commissioning |
0x001a | Power Profile Cluster |
0x0024 | Nearest Gateway Cluster |
0x0101 | Door Lock |
0x0200 | Pump Configuration and Control |
0x0201 | Thermostat |
0x0203 | Dehumidification Control |
0x0401 | Illuminance Level Sensing |
0x0403 | Pressure Measurement |
0x0405 | Relative Humidity Measurement |
0x0500 | IAS Zone |
0x0501 | IAS Ancillary Control Equipment (ACE) |
0x0700 | Price (*) |
0x0701 | Demand Response and Load Control(*) |
0x0702 | Metering (*) |
0x0703 | Messaging (*) |
0x0704 | Smart Energy Tunneling (Complex Metering) (*) |
0x0705 | Prepayment (*) |
0x0706 | Energy Management (*) |
0x0707 | Calendar (*) |
0x0708 | Device management (*) |
0x0709 | Events (*) |
0x0800 | Key Establishment |
0x0904 | Voice Over ZigBee |
0x0b01 | Meter Identification |
0x0b04 | Electrical Measurement |
0x1000 | Touchlink |
(*) : Smart Energy Clusters
Different operating systems are supported:
- Bare metal
- FreeRTOS
- ThreadX
In order to be compliant with Smart Energy 1.4, STM32WBA will also support Zigbee R22.2 in the next release.
3.2. Package Applications
The following Zigbee applications are delivered as source codes. These applications are available on P-NUCLEO-WBA55 boards. The purpose of these applications is mainly to provide simple examples that highlight the use of specific clusters.
Application | Description | |
---|---|---|
Zigbee Clusters | Zigbee_Thermostat_Client_Coord Zigbee_Thermostat_Server_Router |
How to use thermostat cluster on a centralized Zigbee network |
Zigbee_TempMeas_Client_Coord Zigbee_TempMeas_Server_Router |
How to use device temperature measurement cluster on a centralized Zigbee network | |
Zigbee_Diagnostic_Server_Coord Zigbee_Diagnostic_Client_Router |
How to use diagnostic cluster on a centralized Zigbee network | |
Zigbee_DoorLock_Server_Coord Zigbee_DoorLock_Client_Router |
How to use door lock cluster on a centralized Zigbee network | |
Zigbee_IAS_WD_Server_Coord Zigbee_IAS_WD_Client_Router |
How to use IAS WD cluster on a centralized Zigbee network | |
Zigbee_MeterId_Server_Coord Zigbee_MeterId_Client_Router |
How to use meter identification cluster on a centralized Zigbee network | |
Zigbee_OnOff_Server_Coord Zigbee_OnOff_Client_Router Zigbee_OnOff_Client_SED |
How to use OnOff cluster on a centralized Zigbee network ThreadX version available | |
Zigbee_OnOffSwCfg_Client_Coord Zigbee_OnOffSwCfg_Server_Router |
How to use the OnOff Switch Config cluster on a centralized Zigbee network | |
Zigbee_OccupSensing_Client_Coord Zigbee_OccupSensing_Server_Router |
How to use Occupancy Sensing cluster on a centralized Zigbee network | |
Zigbee_PowerProfile_Client_Coord Zigbee_PowerProfile_Server_Router |
How to use power profile cluster on a centralized Zigbee network | |
Zigbee_PressMeas_Server_Coord Zigbee_PressMeas_Client_Router |
How to use pressure measurement cluster on a Centralized Zigbee network | |
Zigbee_Messaging_Client_Coord Zigbee_Messaging_Server_Router |
How to use messaging cluster on a Centralized Zigbee network | |
Zigbee_PowerConfig_Client_Coord Zigbee_PowerConfig_Server_SED |
How to use the Power Config cluster on a centralized Zigbee network | |
Zigbee_PressMeas_Client_Coord Zigbee_PressMeas_Server_Router |
How to use the Pressure Measure cluster on a centralized Zigbee network | |
Others | Zigbee_OnOff_Client_Distrib Zigbee_OnOff_Server_Distrib |
How to use OnOff cluster on a distributed Zigbee network |
Zigbee_APS_Coord Zigbee_APS_Router |
How to use APSDE interface on a customer application | |
Zigbee_FindBind_Coord Zigbee_FindBind_OnOff_Router Zigbee_FindBind_IAS_Router |
How Finding and Binding (F&B) feature works on a Zigbee centralized network | |
Zigbee_Basic_Client_Coord Zigbee_Basic_Server_Router |
How to use the basic attributes of an OnOff cluster |
4. References