zurück

Microcontroller STM32 "Blue Pill"

22.03.2020
Microcontroller STM32F103C8T6
Abb.: Der Microcontroller STM32F103C8T6 "Blue Pill" (Bild: http://wiki.stm32duino.com)

Eigenschaften und Features

Der STM32 besitzt eine 32Bit ARM-Cortex-M3-Architektur und arbeitet mit einer Taktfrequenz von 72 MHz. Es werden 64 KB (manchmal auch 128 KB) Flashspeicher und zusätzlich 20 KB RAM zur Verfügung gestellt. Zudem beinhaltet das Board eine mit einem separaten Quarz auf 32 MHz getaktete Echtzeituhr (RTC). Der Mikrocontroller unterstützt regulär ein Logiklevel von 3,3V. Es sind zwar auch 5V möglich, wobei einige, aber nicht alle Pins 5V vertragen.
Das Board verfügt über mehrere serielle Ports, und über mehrere SPI- und I2C-Busanschlüsse (siehe folgende Abbildung) sowie einen ADC mit 12-Bit-Auflösung.
Eine eingebaute LED ist ebenfalls vorhanden und befindet sich am Pin PC13.
Das Reference Manual von STMicroelectronics sollte alle weiteren Detailfragen beantworten.

Weitere Vorteile gegenüber Arduino

Allerdings hat der STM32 keine serielle UART-Schnittstelle zum Programmieren, man muss also mit einen extra seriellen Adapter (FTDI-Adapter) arbeiten. (siehe weiter unten)

Anschlüsse

Anschlüsse des STM32

Verwendete Bauteile

Aufbau zum Programmieren

Aufbau des STM32 mit dem FTDI-Programmer
Abb.: Aufbau des STM32 mit dem FTDI-Programmer

Darauf achten, dass je nach FTDI-Board die Pins etwas anders sein können!

STM32 FTDI
GND GND
5V VCC (Jumper auf 5V stellen!)
A9 Rx
A10 Tx

Um den STM32 programmieren zu können, muss er noch in den Programmiermodus gesetzt werden. Dies geschieht durch das umsetzen des oberen gelben Jumper (BOOT0) von Position 0 auf 1. Dannach muss noch die RESET-Taste gedrückt werden. Der untere Jumper BOOT1 bleibt unverändert.

Jumper-Modi des STM32
Abb.: Jumper-Modi des STM32:
1 - Programmierung
2 - normaler Betrieb

Integration in die Arduino-IDE

Dank der Community STM32duino ist es möglich den STM32 vollständig in die Arduino-IDE zu integrieren:

Board-Manager hinzufügen

Nun geht man in Menupunkt Werkzeuge > Board > Boardverwalter, sucht nach Arduino SAM Boards (ARM Cortex-M3) und installiert diesen Board-Manager:

Boardmanager für STM32 installieren

STM32duino Core installieren

Nun geht man auf https://github.com/rogerclarkmelbourne/Arduino_STM32 und lädt sich das gesamte Paket als ZIP-Archiv herunter (ca. 43MB). Anschließend entpackt man das Archiv und verschiebt den so entstandenen Ordner Arduino_STM32 in das Sketchbook-Verzeichnis der Arduino-IDE. (Unter Windows: C:\Users\BENUTZER\Documents\Arduino\hardware). Falls der Unterordner hardware nicht existieren sollte, dann muss er manuell angelegt werden. Nun muss die Ardiuno-IDE neu gestartet werden.
Unter dem Menupunkt Werkzeuge > Board kann nun das richtige Board mit den entsprechenden Optionen ausgewählt werden:

Auswahl des STM32-Boards

Sketch zum Testen des STM32

Blink (interne LED)

void setup()
{
    pinMode(PC13, OUTPUT); // internal LED
}

void loop()
{
    digitalWrite(PC13, !digitalRead(PC13));
    delay(1000);
}

Fehler bei Pullup-Widerstand

Leider ist bei vielen STM32-Boards ein Fehler mit einem Pullup eingebaut: Problembeschreibung und Lösungsansätze können auf amitesh-singh.github.io gefunden werden.