Ich möchte meine erste STM32-MCU im Projekt verwenden. Das Projekt umfasst einige Peripheriegeräte (UART/SPI/I2C) und hat hier und da ein bisschen Mathematik zu tun, hauptsächlich Bitverschiebung und/oder ganzzahlige Berechnungen, also fand ich mir eine MCU mit den Peripheriegeräten, die ich brauche, interner Oszillator, genug Flash-Programmplatz und RAM für meine Anwendung.
Also habe ich diesen Smol Boi gefunden: STM32L051K8T6 in LQFP-32, Datenblatt
Ich habe das Datenblatt durchgesehen, alles scheint klar zu sein, ich habe kein Problem damit, neue Sachen zu finden, IDE und alles, aber ich habe ein paar Fragen, auf die ich keine klare Antwort finden konnte, und die Community kann hilfreicher sein Trotzdem:
Ich würde es gerne über SWD programmieren können. Es ist eine 2-Draht-Kommunikation, richtig? SWDIO und SWCLK. Theoretisch brauche ich also, vorausgesetzt, ich versorge die MCU mit Strom, nur 2 Pins, um mich an die MCU anzuschließen (oder vielleicht auch zurückzusetzen? Masse verbunden, offensichtlich). Ich meine, ich brauche keinen großen 10-poligen Stecker oder so? Ziemlich ähnlich wie Atmegas über UART (die einen RX-, TX- und DTR-Impuls zum MCU-Reset benötigen). Das Googeln der ST-Link v2-Pinbelegung zeigte mir nur diese beiden und einen mir unbekannten "SWIM" -Pin. (was im Datenblatt nie erwähnt wird; ich habe tatsächlich ein ST-Link v2 und sogar ein Nucleo-Board mit integriertem Programmierer, aber auch hier schadet es nie, kluge Leute zu fragen).
SWDIO und SWCLK sind als „alternative Funktionen“ der Pins gekennzeichnet. Ich gehe also davon aus, dass ich es nicht standardmäßig über SWDIO/SWCLK programmieren kann, da die Pins standardmäßig nicht als SWDIO/SWCLK konfiguriert sind. Ist es etwas, wofür ich BOOT0 verwenden muss? Aktiviert der Bootloader aus dem internen Speicher SWD-Pins für mich, um den Flash zu programmieren? In diesem speziellen Fall gibt es auch keinen BOOT1-Pin (Strg + F "Boot1" ergibt keine nützlichen Erwähnungen im gesamten Datenblatt).
Ich möchte vom Benutzer aktualisierbare Software haben. Über USB. Mit ATMega ist das ganz einfach, ich habe gerade einen USB-UART CP2102N eingebaut, und es funktioniert wie ein Zauber, kann Software den ganzen Tag aktualisieren. Ich denke, ich könnte meinen eigenen UART-Bootloader für STM32 schreiben, es ist nur eine Frage der Entschlossenheit und der Einnahme von Pillen, um dabei bei Verstand zu bleiben. Aber wenn es einen einfacheren Weg gibt, möchte ich das Rad nicht neu erfinden (obwohl dieser Programmierteil auf dem Nucleo viel größer aussieht als nur der CP2102N-Chip). Dieses Dokument zur Verwendung von UART gefunden: STM32 Bootloader UART scheint vielversprechend zu sein, es scheint nicht allzu schwierig zu sein, CP2102N zum Programmieren von STM32 zu verwenden, denke ich?
Natürlich habe ich mir auch ein paar Videos auf YouTube über STM32 angesehen, aber sie sind im Grunde "blinky-blinky" mit Nucleo, nicht mit Standalone-Geräten, also nicht viel über Datenblätter, alternative Funktionen, Steuerung von Sachen über Register; und das Einrichten von I2C oder SPI ist sowieso kein Problem. Grundsätzlich habe ich kein Problem damit, die Register und das Zeug zu kontrollieren, ich muss es nur zuerst zum Laufen bringen. Es ist, als könnte ich ein Auto fahren, aber ich habe keinen Schlüssel, um den Motor zu starten – oder vielleicht habe ich einen und bin mir dessen nur nicht bewusst. Um das Auto nicht beim Zünden explodieren zu lassen, stelle ich lieber erst Fragen.
Danke
Übrigens wird der SWIM-Pin zum Programmieren und Debuggen von STM8-Teilen verwendet (ja, ST-Link ist dazu in der Lage). Es hat nichts mit STM32-Teilen zu tun.
Kartmann
Kartmann