STMicroelectronics bietet Mikrocontroller mit Funk-Interface und passenden Developer-Kits für den Aufbau von Matter-Geräten an. Programmiert werden die MCUs mit der Entwicklungsumgebung STM32CubeIDE, wofür Matter-Software-Packages bereitstehen. Wie funktioniert die Matter-Geräteentwicklung damit?
STMicroelectronics oder kurz ST ist ein europäischer Hableiterhersteller mit den wichtigsten Standorten in Frankreich und Italien. Das Produktportfolio ist sehr umfangreich und reicht von diskreten Halbleitern (Dioden, Transistoren, Thyristoren), über Verstärker (Operationsverstärker, Audio), Converter (ADC, DAC), Mikroprozessoren und Mikrocontrollern (STM8, STM32) bis hin zu Wireless-Chips für NFC, LoRa, Sigfox, LoWPAN, ZigBee, UWB, Wi-Fi, Bluetooth und Thread, was fast zwangsläufig auch zu Matter führt.
ST unterstützt den Matter-Standard mit verschiedenen ARM-Cortex-basierten STM32WBA-MCUs, den passenden Entwicklungs-Kits (Nucleo-WB55RG, STM32WB) und der Software STM32CubeIDE. Für den Test standen das STM32WBA55G-DK1 sowie das neuere STM32WBA65I-DK1 Discovery-Kit zur Verfügung, bei denen außer dem Entwicklungsboard keinerlei Zubehör mitgeliefert wird.
Das Entwicklungsboard setzt sich jeweils aus zwei Platinen zusammen, einer Trägerplatine (MB1802B, MB2143A) und einer darauf gesteckten Radioplatine (MB1803B, MB2130A), was als funktionale Einheit betrachtet wird. Auf der Trägerplatine arbeitet ein STM32F723 (Cortex M7), der eine STLINK-V3EC-Schaltung für die Programmierung und das Debugging auf dem Board integriert. Zur Peripherie zählen im Wesentlichen ein Reset-Taster, eine LED, ein Joystick, ein OLED-Display sowie ein Audioeingang (Mikrophon) und ein Audioausgang (Line Out). Die STLINK-Verbindung wird wie die Spannungsversorgung über einen USB-C-Anschluss hergestellt.
Das aufgesteckte Radio-Board (MB1803B) arbeitet mit einem STM32WBA55CGU7-Mikrocontroller (Cortex M33, 1 MB Flash, 128 kB SRAM), der BLE, ZigBee, Thread und Matter unterstützt. Im dazugehörigen User Manual UM3255 [1] für das STM32WBA55G-DK1 ist lediglich das Board beschrieben – mit keinerlei Handreichungen. Unter »getting started« ist als Beispiel lediglich kurz erläutert, wie es als BLE Audio Device mit einem Smartphone funktionieren kann. Das funktioniert jedoch so nicht, weil die hierfür notwendige Firmware, entgegen der Angabe im Manual, nicht programmiert worden ist, weshalb sich dieses Beispiel als Einstieg in die Board-Programmierung nicht eignet.
Um die Software STM32Cube [2] herunterzuladen, ist ein Account bei ST notwendig. Dies als Gast durchzuführen, war nicht möglich, obwohl diese Option vorhanden ist. Denn nach Angabe der E-Mail-Adresse und Empfang einer Bestätigungs-E-Mail lässt sich diese laut Fehlermeldung nicht validieren, weshalb nachfolgend kein Download erlaubt ist.
Der Account wird zügig eingerichtet, womit der Zugang zur Software gegeben ist, wobei diese auf den STM-Seiten jedoch zunächst nicht gefunden wird, sodass der Weg zu STM32Cube erst über eine Google-Suche mit der darauf folgenden Anmeldung bei STM zum Erfolg führt. Der Download und die anschließende Installation sind danach schnell erledigt.
Die STM32CubeIDE ist eclipse-basiert, was bei erfahrenen Entwicklern die Hoffnung auf eine gewisse Vertrautheit in der Entwicklungsumgebung weckt, gleichwohl ist die Orientierung in der von STM angepassten IDE nicht besonders intuitiv gestaltet und wirkt in Teilen überfrachtet.
Der Startbildschirm nennt sich »STM32CubeIDE Home«. Von ihm aus lassen sich die wichtigsten Funktionen starten. Er lässt sich stets über »i – Home« (i-Zeichen und Haussymbol rechts) von der Menüleiste aus aufrufen.
Um ein Projekt direkt vom Startbildschirm (Bild 2) aus zu beginnen, gibt es unter »Start a Project« vier Optionen, wobei bei den beiden ersten Optionen der Target Selector eine wichtige Rolle spielt, mit dem die zu verwendende Hardware zu selektieren ist, was entweder nach MCU/MPU- oder Board-Typ stattfinden kann.
Damit dies auch mit der aktuellen Hardware funktioniert, empfiehlt es sich zunächst, über »Help – Check for Updates« das System zu aktualisieren, wenn hier ein Update zur Verfügung steht. Nach dem Update ist ein Neustart der IDE notwendig.
Je nach gewähltem MCU/MPU- oder Board-Typ oder auch Programmbeispiel wird während der Projektgenerierung noch Software nachgeladen, was nach einer entsprechenden Meldung automatisch funktionieren sollte. Das setzt allerdings voraus, dass man bei ST angemeldet ist, andernfalls wird der Vorgang nicht erfolgreich beendet, und ein Weiterkommen ist nicht möglich.
In den Anleitungen und den zahlreichen Videos zum Thema ist angegeben, dass die Anmeldung über den Button »myST« in der IDE in der Menüleiste (neben Help) erfolgt. Dieser Button ist seit der Version 1.17 dort aber nicht mehr zu finden, was in der Community zu vielen Diskussionen und oftmals fehlerhaften Vermutungen geführt hat. Stattdessen ist die Anmeldefunktion mit myST an eine andere Position verschoben worden, und zwar nach »Help – STM32Cube updates – Connection to myST«.
Mitunter funktioniert die Anmeldung bei myST nicht korrekt, und es erscheint stattdessen eine Fehlermeldung, dass mit der Authentifizierung etwas nicht stimmt und kein Zugriff möglich ist. Falls man sich stattdessen vor dem Start der IDE mit seinem Account auf der STM-Website anmeldet, ist der Internetzugriff in der IDE jedoch gegeben. Das erscheint doch etwas befremdlich. Genauso wie der Umstand, dass der Import eines STM32-Cube-Beispiels (Option 4 in Bild 2) am Target Selector scheitert, denn auch wenn hier das vorhandene Board und/oder die Commercial Part Number korrekt ausgewählt werden, ist lediglich der Cancel-Button aktiv und nicht etwa der Next-Button, sodass es auf diesem Weg nicht weitergeht. Dieses Verhalten konnte selbst in einer Support-Anfrage bei STM nicht geklärt werden.
ST macht es einem ohnehin nicht leicht, sich zu orientieren und ein einfaches Beispiel zu laden, zu kompilieren (build) und den jeweiligen Mikrocontroller auf einem Board abschließend zu »flashen«, was zunächst daran liegt, dass im Internet geradezu eine Unmenge an Dokumentationen und Videos zur STM32CubeIDE zu finden sind, und zwar nicht nur von ST selbst, sondern auch von vielen Anwendern und (selbsternannten) Experten, sodass es nicht verwundert, dass hier auch eine Menge Veraltetes und Unsinn dabei ist.
Deshalb sollte man sich an die ST-Dokumentationen und Videos halten, die direkt aus der STM32CubeIDE aufrufbar sind. Leider sind diese Inhalte aber oft viel zu überdimensioniert und enthalten alle möglichen Spezialitäten, die sich an erfahrene STM32CubeIDE-Anwender richten, Einsteiger jedoch überfordern. Bestimmte Boards werden dabei eher selten berücksichtigt, und wenn dies tatsächlich der Fall ist, hat man mit großer Wahrscheinlichkeit ein ganz anderes Board vor sich liegen.
Die zu den benutzten Developer Boards vorhandenen User Manuals (UM3255, UM3462) sind hingegen viel zu knapp gehalten. Wünschenswert wäre es, wenn hier ein paar Sätze stehen würden, wie man das jeweilige Board mit der STM32CubeIDE in Betrieb nimmt, und zwar ganz konkret, gewissermaßen ohne Ballast.
Außerdem sucht man in den besagten User Guides ganz essenzielle Dinge vergeblich (Stand April 2025), wie etwa den Pin, an dem die User-LED angeschlossen ist, die gern mit dem ersten Testprogramm (Blink LED) angesteuert wird. Für diese Information wird noch der Schaltplan des Boards benötigt, der entsprechend zu analysieren ist, wenn er denn zur Verfügung gestellt wird. Für das STM32WBA55G-DK1 wird man bei STM fündig (MB1802), für das neuere STM32WBA65I-DK1, der als Nachfolger des WBA55G gehandelt wird, ist jedoch kein Schaltplan zu finden. Dafür sind die Pins, wo die LEDs angeschlossen sind, jedoch im User Guide [3] auf der Seite 24 angegeben.
Die wesentlichen Unterschiede zwischen dem STM32WBA55G (Bild 1) und dem STM32WBA65I (Bild 5) sind, dass der STMod-Connector beim neueren Board durch einen User-USB-Anschluss ersetzt wurde, die Power Jumper sowie einige Portanschlüsse – wie für die LEDs – geändert wurden und dass das Radio Board jetzt über einen Antennenanschluss verfügt. Außerdem sind jetzt drei statt nur einer User-LED integriert. Beide Boards verwenden einen ARM Cortex M33, wobei der Mikrocontroller STM32WBA65RIV7 über 2 MB Flash- und 512 kB SRAM-Speicher verfügt, während der STM32WBA55CGU nur 1 MB Flash- und 128 kB SRAM-Speicher hat.
Der übliche Ablauf der Softwareentwicklung sieht vor, dass ein neues Projekt (Bild 2, Option 1) angelegt und etwas Code geschrieben wird, was aber lediglich zwei Zeilen sein müssen, um etwa eine LED anzusteuern. Dieser Code ist in ein vorgegebenes »Code-Gerüst« zu integrieren, was sich aus dem Typ des verwendeten Mikrocontrollers bzw. dem Developer Board und der jeweiligen Konfiguration ergibt. Dies wird mit der in der STM32CubeIDE integrierten Software STM32CubeMX durchgeführt, die auch als separates Programm erhältlich ist, um die damit generierte Konfiguration exportieren und sie dann mit einer anderen Entwicklungsumgebung verarbeiten zu können.
CubeMX arbeitet grafisch orientiert, indem den Pins des Mikrocontrollers die jeweiligen Elemente und Funktionen mit wenigen Mausklicks zugeordnet werden, woraus sich gewissermaßen das »Code-Gerüst« ergibt. Dies funktioniert im Grunde genommen recht einfach, wenn man genau weiß, mit welchen Parametern, wie Spannung und Taktfrequenz, der Mikrocontroller betrieben wird und, vor allem, wie er mit der Peripherie auf dem Board verschaltet ist (was nicht immer deutlich wird, s.o.).
Bei einer selbst aufgebauten Schaltung ist klar, dass Elemente wie LED, Taster, Display oder auch Schnittstellen entsprechend anzugeben sind, woraus CubeMX den Initialisierungscode generiert. Diese Dinge stehen beim Einsatz eines unterstützten Developer Boards hingegen fest, weshalb es verwundert, dass diese Informationen nicht automatisch vom Target Selector weitergereicht werden, sondern in CubeMX anzugeben sind.
Diesen Aufwand muss man jedoch nicht betreiben, was besonders für Einsteiger etwas aufwändig erscheint, wenn es für das Developer Board ein spezielles Package gibt, wie das STM32CubeWBA-MCU-Package für die verwendeten beiden Kits. Es ist wie üblich von STM zu beziehen und zu entpacken, was in jedem beliebigen Verzeichnis erfolgen kann, weil das Package nicht in die STM32CubeIDE integriert wird.
Die einzelnen Beispielprojekte lassen sich vielmehr über »Import Project« (Bild 2, Option 3) aus dem für das jeweilige Board angegebenen Verzeichnis laden. Dabei ist es wichtig, das richtige Verzeichnis bzw. die richtige Datei zu selektieren, wie über File – Open Projects from file System – Import Source – Directory – STM32WBA55G-DK1 – Examples – GPIO – GPIO_IOToggle – STM32CubeIDE – Ordner auswählen – Finish. Andernfalls ist die nachfolgende Ausführung fehlerhaft, wobei es nicht immer offensichtlich wird, dass der Fehler lediglich in einem falschen Link begründet ist. Die Daten des Projekts werden daraufhin im Project Explorer dargestellt (Bild 6). Falls er nicht zu sehen sein sollte, ist der Restore-Button zu betätigen, oder er wird über Window – Show View – Project Explorer zur Ansicht gebracht.
Spätestens jetzt ist das Board über USB an den PC anzuschließen. Nach der Betätigung des Run-Button in der STM32CubeIDE sollte quasi alles wie von selbst ablaufen, d.h. der Build-Vorgang wird absolviert und abschließend auch der Mikrocontroller programmiert. Nach einem Board-Reset sollte dann auch die blaue LD3 blinken.
Bei unserem Test war das jedoch nicht der Fall: Nach längerer Kommunikation mit dem Support stellte sich heraus, dass die LED an PB15 des Mikrocontrollers angeschlossen ist und nicht an PA0, wovon die Software im MCU-Package (Version 1.6) jedoch ausgeht, was in der folgenden Version behoben sein soll. Durch eine Ergänzung (#define STM32WBA55G_DK1_LD3_ON_PB15) in der Datei stm32wba55g_discovery.h (in …Drivers\BSP\STM32WBA55G-DK1) lässt sich dieses Problem auch manuell beheben.
Bemerkenswert ist sicherlich, dass ein derart grundlegender Fehler, der nicht nur STM32-Einsteiger durchaus zur Verzweiflung bringen kann, bei einem Board, das bereits seit über einem Jahr auf dem Markt ist, zuvor noch nicht bemerkt worden ist. Dabei spielt der Support eine durchaus unrühmliche Rolle, weil der Grund für das Nichtfunktionieren – wie eigentlich immer – bei den Anwendern vermutet wird, die bei der Fehlersuche deshalb auf völlig falsche Fährten geraten.
Für das neuere Board STM32WBA65I gibt es leider kein GPIO_IOToggle-Beispiel, dafür werden jedoch Bluetooth LE und auch Matter umfassend unterstützt, weshalb dieses Board im Folgenden verwendet wird, zumal die Matter-Unterstützung für das STM32WBA55G-DK1 mittlerweile eingestellt worden ist. Wichtig war das ältere Board dennoch, um damit die »STM-Eigenarten« zu ergründen, was mit dem erfolgreichen Flash-Vorgang (Bild 6) seinen Abschluss findet, sodass man sich der eigentlichen Aufgabe zuwenden kann.
Für die Entwicklung von Matter-Applikationen ist eine Erweiterung für die STM32CubeIDE mit der Bezeichnung »Matter Software Expansion for STM32Cube« [4], auch als »X-Cube-Matter Expansion« bezeichnet, zu installieren. Dabei ist genauso zu verfahren, wie es oben mit dem MCU-Package beschrieben ist. Es findet also keine Integration der Software in der IDE statt, sondern die Expansion lässt sich letztlich irgendwo im PC speichern, um später beim Aufruf zu diesem Verzeichnis zu navigieren.
Diese Ergänzung ist speziell für das Design von Matter-End-Devices vorgesehen und umfasst daher die Unterstützung von Bluetooth LE und Thread mit den entsprechenden Stacks. Dabei kommen eine Reihe von Open-Source-Komponenten der CSA (Connectivity Standards Alliance) zum Einsatz, wie das Matter SDK oder auch FreeRTOS und Open Thread.
ST bietet eine ganze Reihe von Dokumentationen und auch Videos zu Matter und der End-Device-Geräteentwicklung [5]. Wie bereits zuvor erwähnt, können Einsteiger damit jedoch relativ wenig anfangen, weil es doch sehr speziell wird. Außerdem wird nicht davon ausgegangen, dass Entwicklern bereits ein funktionierendes Matter-Netzwerk mit entsprechendem Hub zur Verfügung steht, dem lediglich ein ST-Matter-Thread-Device hinzugefügt werden soll.
Stattdessen wird der Aufbau eines Open Thread Border Routers (OTBR) ausführlich behandelt, der für den Betrieb eines Matter-End-Device vorausgesetzt wird, was wenig praxisorientiert ist, weil damit (mindestens) zwei »Baustellen« aufgemacht werden, eine für das End-Device und eine für den OTBR. Für diesen sind Python und ein separater Linux-PC (z. B. Raspberry Pi) mit der grundlegenden Matter-Software CHIP Tool notwendig, die auf der Kommandozeile zu bedienen ist, was sicher nicht jedermanns Sache ist.
Das Laden des Lightning-Beispiels (Dimmable Light) erfolgt über …\STM32CubeExpansion_MATTER_V1.4.0\Projects\STM32WBA65I-DK1\Applications\Matter\Lightning-App, was von der Bezeichnung wieder etwas verwirrend sein mag, denn dies ist keine App für ein Smartphone, sondern die Firmware für das Developer Board. Danach ist lediglich »Run« anzuklicken, woraufhin das anschließende Build & Flash ohne jegliche Probleme abläuft. Dieser Vorgang ist im Vergleich mit den Matter-Beispielen anderer Hersteller [7] sehr schnell, obwohl auch hier eine Vielzahl von Includes zu verarbeiten sind. Den nimmermüden C/C++-Indexer sowie die möglicherweise auftretenden Hinweise auf neue Updates sollte man dabei ignorieren.
Nach dem Download erscheinen auf dem Display des Boards (Bild 8) verschiedene Meldungen über den Verbindungsstatus, was als sicheres Zeichen gelten kann, dass die programmierte Firmware funktioniert. Als »Light« fungiert die LD3 (grün) und nicht das Display, wie es etwa beim System von Silicon Labs [8] der Fall ist.
Wichtig für ein Matter-Device ist der dazugehörige QR-Code, mit dem die Integration in ein Matter-Netzwerk initiiert wird. Er ist über einen – etwas versteckten – Link auf der »Matter Develop and Prototype Site« [5] zu finden [6]. Auch wenn dort zu lesen ist »Please scan with your CHIPTool app«, ist das der richtige QR-Code für das mit der Lightning-Firmware programmierte STM32WBA65I-Board, der von allen Matter-Implementierungen, wie beispielsweise SmartThings von Samsung, akzeptiert wird. Das STM32WBA65I mit der programmierten Lightning-Firmware wird daraufhin ohne jegliche Fehlermeldung im Matter-Netzwerk aufgenommen (Bild 9).
Nach den Schwierigkeiten beim Anmeldevorgang, den teilweise unpassenden und verwirrenden Bezeichnungen, den einerseits überfrachteten, andererseits unvollständigen Dokumentationen, den offenen Fragen zur STM32CubeIDE, dem wenig zielgerichteten Support und dem Fehler im MCU-Package war die Befürchtung groß, dass die Matter-Geräteentwicklung eine weitere Eskalationsstufe bietet. Dem war jedoch nicht so. Ganz im Gegenteil, denn das Matter-Lightning-Beispiel funktioniert auf Anhieb völlig reibungslos und liefert auch aufgrund der logischen Software-Modularisierung eine gute Ausgangsbasis für eigene Matter-Entwicklungen.
Update von STMicroelectronics |
---|
Bei ST arbeiten wir kontinuierlich an Verbesserungen unserer Produkte, unseres Ecosystems, unserer Dienstleistungen sowie der Erfahrung und Zufriedenheit unserer Kunden und Nutzer. Wir entschuldigen uns für die Unannehmlichkeiten, die der Autor während seiner Bewertung bei der Erstellung dieses Artikels erfahren hat. Wir sind dankbar für das Feedback, die Anregungen und Verbesserungsvorschläge. Die Versionen von STM32CubeIDE und STM32CubeWBA, die sowohl STM32WBA55 als auch die neueren STM32WBA65 unterstützen, sind inzwischen auf der Website von ST verfügbar [1][2]. STM32CubeIDE wird verbessert, um potenzielle Probleme mit der Option »Import STM32Cube Beispiel« zu vermeiden. Alle STM32WBA55G-DK1 Boards, die über die offiziellen Vertriebskanäle auf den Markt gebracht wurden, sind mit einem sofort einsatzbereiten Bluetooth-Audio-Beispiel aus unserem STM32CubeWBA-Paket vorinstalliert. Dieses Beispiel ist in [3] beschrieben. Die Schaltpläne zur STM32WBA55G-DK1 Revision B01 sind jetzt auf der Website von ST verfügbar [4], und die zugehörigen Beispiele im STM32CubeWBA werden in der kommenden Paketversion aktualisiert, um die neue Montageoption für die Benutzer-LED LD3, die jetzt an PB15 angeschlossen ist, widerzuspiegeln. Das aktuelle X-CUBE-MATTER-Paket, das die Matter-over-Thread-Lösung für den Matter-Zubehör-(Endgerät-)Anwendungsfall einführt, unterstützt die auf STM32WBA65 und STM32WB55 basierenden Verkaufstypen. STM32WBA55 wurde für dieses Szenario aufgrund der Anforderungen an die Speicherressourcen nie als geeigneter Verkaufstyp prognostiziert. Die vollständige Schritt-für-Schritt-Anleitung zum Einstieg ist in unserem Wiki verfügbar [5], und der Link sowie die Anweisungen sind in der Datei »readme.txt« jedes Anwendungsbeispiels enthalten. |
Literatur
[1] STM Discovery Kit with STM32WBA55CG MCU, UM3255: https://www.st.com/resource/en/user_manual/um3255-discovery-kit-with-stm32wba55cg-mcu-stmicroelectronics.pdf
[2] Software STM32CubeIDE: https://www.st.com/en/embedded-software/stm32cubewba.html?ecmp=tt9470_gl_link_feb2019&rt=um&id=UM3103
[3] STM Discovery Kit with STM32WBA65RI MCU, UM3462: https://www.st.com/resource/en/user_manual/um3462-discovery-kit-with-stm32wba65ri-mcu-stmicroelectronics.pdf
[4] Matter Expansion for STM32Cube: https://www.st.com/en/embedded-software/x-cube-matter.html
[5] Matter develop and prototype: https://wiki.stmicroelectronics.cn/stm32mcu/wiki/Connectivity:Matter_develop_and_prototype
[6] Matter QR-Code: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A4CT9142C00KA0648G00
[7] Klaus Dembowski, Matter-Geräteentwicklung mit Nordic-Systemen, Elektronik 4/2025: https://www.elektroniknet.de/kommunikation/wireless/matter-geraeteentwicklung-mit-nordic-systemen.223709.html
[8] Klaus Dembowski, Matter in der Praxis, Elektronik 1-2/2024: https://www.elektroniknet.de/kommunikation/wireless/matter-in-der-praxis.213745.html
[1] STM32CubeIDE
https://www.st.com/en/development-tools/stm32cubeide.html
[2] STM32CubeWBA
https://www.st.com/en/embedded-software/stm32cubewba.html
[3] STM32WBA55G-DK Bluetooth LE Audio Out Of Box Demonstration
https://wiki.st.com/stm32mcu/wiki/STM32StepByStep:STM32WBA55_Discovery_Kit_Out_Of_Box_Demonstration
[4] STM32WBA55G-DK1 Produktseite
https://www.st.com/en/evaluation-tools/stm32wba55g-dk1.html#cad-resources
[5] Connectivity: Matter Test und Demonstration
https://wiki.st.com/stm32mcu/wiki/Connectivity:Matter_test_and_demonstrate