STM32CubeWBA Zigbee MCU Package


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
Connectivity Zigbee MCU STM32WBA.png

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 are 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 also supports 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