STM32-Logo

STM32F103C8T6 Minimales Systementwicklungsboard

STM32F103C8T6-Minimum-System-Development-Board-Produkt

Produktinformationen

Das STM32F103C8T6 ARM STM32 Minimum System Development Board-Modul ist ein Entwicklungsboard, das auf dem STM32F103C8T6-Mikrocontroller basiert. Es ist für die Programmierung mit der Arduino-IDE konzipiert und mit verschiedenen Arduino-Klonen, -Varianten und Boards von Drittanbietern wie ESP32 und ESP8266 kompatibel.

Das Board, auch Blue Pill Board genannt, arbeitet mit einer etwa 4.5-mal höheren Frequenz als ein Arduino UNO. Es ist für verschiedene Projekte einsetzbar und kann an Peripheriegeräte wie TFT-Displays angeschlossen werden.

Zu den erforderlichen Komponenten zum Erstellen von Projekten mit dieser Platine gehören die STM32-Platine, der FTDI-Programmierer, ein Farb-TFT-Display, ein Druckknopf, ein kleines Steckbrett, Kabel, eine Powerbank (optional für den Standalone-Modus) und ein USB-zu-Seriell-Konverter.

schematisch

Um die STM32F1-Karte mit dem 1.8 ST7735-basierten Farb-TFT-Display und einem Druckknopf zu verbinden, befolgen Sie die in den bereitgestellten Schaltplänen beschriebenen Pin-zu-Pin-Verbindungen.

Einrichten der Arduino IDE für STM32

  1. Öffnen Sie die Arduino-IDE.
  2. Gehen Sie zu Extras -> Board -> Board-Manager.
  3. Suchen Sie im Dialogfeld mit Suchleiste nach „STM32F1“ und installieren Sie das entsprechende Paket.
  4. Warten Sie, bis der Installationsvorgang abgeschlossen ist.
  5. Nach der Installation sollte das STM32-Board nun in der Arduino IDE-Board-Liste zur Auswahl verfügbar sein.

STM32-Boards mit der Arduino IDE programmieren

Seit ihrer Einführung hat die Arduino IDE den Wunsch gezeigt, alle Arten von Plattformen zu unterstützen, von Arduino-Klonen und Variationen verschiedener Hersteller bis hin zu Boards von Drittanbietern wie ESP32 und ESP8266. Je mehr Menschen sich mit der IDE vertraut machen, desto mehr Boards werden unterstützt, die nicht auf ATMEL-Chips basieren. Im heutigen Tutorial werden wir uns eines dieser Boards ansehen. Wir werden untersuchen, wie man das STM32-basierte Entwicklungsboard STM32F103C8T6 mit der Arduino IDE programmiert.

STM32F103C8T6-Minimum-System-Development-Board-fig-1

Das für dieses Tutorial zu verwendende STM32-Board ist kein anderes als das auf dem STM32F103C8T6-Chip basierende STM32F1-Entwicklungsboard, das aufgrund der blauen Farbe seiner Leiterplatte allgemein als „Blue Pill“ bezeichnet wird. Blue Pill wird vom leistungsstarken 32-Bit-ARM-Prozessor STM32F103C8T6 angetrieben, der mit 72 MHz getaktet ist. Das Board arbeitet mit 3.3-V-Logikpegeln, seine GPIO-Pins wurden jedoch auf 5-V-Toleranz getestet. Obwohl es nicht wie die ESP32- und Arduino-Varianten über WLAN oder Bluetooth verfügt, bietet es 20 KB RAM und 64 KB Flash-Speicher, was es für große Projekte geeignet macht. Es verfügt außerdem über 37 GPIO-Pins, von denen 10 für analoge Sensoren verwendet werden können, da sie ADC-fähig sind, zusammen mit anderen, die für SPI, I2C, CAN, UART und DMA aktiviert sind. Für ein Board, das etwa 3 US-Dollar kostet, werden Sie mir zustimmen, dass dies beeindruckende Spezifikationen sind. Eine zusammengefasste Version dieser Spezifikationen im Vergleich zu denen eines Arduino Uno ist in der Abbildung unten dargestellt.

STM32F103C8T6-Minimum-System-Development-Board-fig-2

Basierend auf den oben genannten Spezifikationen ist die Frequenz, mit der Blue Pill arbeitet, für das heutige Tutorial etwa 4.5-mal höher als bei einem Arduino UNO als ExampUm die Verwendung der STM32F1-Karte zu erklären, schließen wir sie an ein 1.44-Zoll-TFT-Display an und programmieren sie zur Berechnung der „Pi“-Konstante. Wir werden feststellen, wie lange es gedauert hat, bis das Board den Wert ermittelt hat, und ihn mit der Zeit vergleichen, die ein Arduino Uno benötigt, um dieselbe Aufgabe auszuführen.

Erforderliche Komponenten

Zum Erstellen dieses Projekts sind die folgenden Komponenten erforderlich:

  • STM32-Platine
  • FTDI-Programmierer
  • Farb-TFT
  • Druckknopf
  • Kleines Steckbrett
  • Drähte
  • Powerbank
  • USB-zu-Seriell-Konverter

Wie üblich können alle für dieses Tutorial verwendeten Komponenten über die beigefügten Links erworben werden. Die Powerbank wird jedoch nur benötigt, wenn Sie das Projekt im Standalone-Modus bereitstellen möchten.

schematisch

  • Wie bereits erwähnt, werden wir die STM32F1-Karte zusammen mit einem Druckknopf an das 1.8″ ST7735-basierte Farb-TFT-Display anschließen.
  • Der Druckknopf wird verwendet, um die Platine anzuweisen, die Berechnung zu starten.
  • Verbinden Sie die Komponenten wie im folgenden Schema gezeigt.

STM32F103C8T6-Minimum-System-Development-Board-fig-3

Um die Replikation der Verbindungen zu vereinfachen, werden im Folgenden die Pin-zu-Pin-Verbindungen zwischen dem STM32 und dem Display beschrieben.

STM32 – ST7735

STM32F103C8T6-Minimum-System-Development-Board-fig-4

Gehen Sie die Anschlüsse noch einmal durch, um sicherzugehen, dass alles so ist, wie es sein sollte, denn es kann etwas knifflig werden. Nachdem dies erledigt war, richteten wir das STM32-Board für die Programmierung mit der Arduino IDE ein.

Einrichten der Arduino IDE für STM32

  • Wie bei den meisten Boards, die nicht von Arduino hergestellt werden, müssen einige Einstellungen vorgenommen werden, bevor das Board mit der Arduino IDE verwendet werden kann.
  • Dazu gehört die Montage der Platine file entweder über den Arduino Board Manager oder durch Herunterladen aus dem Internet und Kopieren des files in den Hardware-Ordner.
  • Der Board-Manager-Weg ist der weniger mühsame Weg und da das STM32F1 zu den aufgelisteten Boards gehört, werden wir diesen Weg wählen. Fügen Sie zunächst den Link für das STM32-Board zu den Arduino-Präferenzlisten hinzu.
  • Gehe zu File -> Einstellungen, dann geben Sie dies ein URL ( http://dan.drown.org/stm32duino/package_STM32duino_index.json ) in das unten angegebene Feld ein und klicken Sie auf „OK“.

STM32F103C8T6-Minimum-System-Development-Board-fig-5

  • Gehen Sie jetzt zu Tools -> Board -> Board Manager. Es wird ein Dialogfeld mit einer Suchleiste geöffnet. Suchen nach STM32F1 und installieren Sie das entsprechende Paket.

STM32F103C8T6-Minimum-System-Development-Board-fig-6

  • Der Installationsvorgang dauert einige Sekunden. Danach sollte das Board nun in der Arduino-IDE-Board-Liste zur Auswahl verfügbar sein.

Code

  • Der Code wird auf die gleiche Weise geschrieben, wie wir jede andere Skizze für ein Arduino-Projekt schreiben würden, mit dem einzigen Unterschied, wie auf die Pins verwiesen wird.
  • Um den Code für dieses Projekt einfach entwickeln zu können, werden wir zwei Bibliotheken verwenden, die beide Modifikationen von Standard-Arduino-Bibliotheken sind, um sie mit dem STM32 kompatibel zu machen.
  • Wir werden die modifizierte Version der Adafruit GFX- und der Adafruit ST7735-Bibliotheken verwenden.
  • Beide Bibliotheken können über die beigefügten Links heruntergeladen werden. Wie üblich werde ich eine kurze Aufschlüsselung des Codes durchführen.
  • Wir beginnen den Code mit dem Import der beiden Bibliotheken, die wir verwenden werden.

STM32F103C8T6-Minimum-System-Development-Board-fig-7

  • Als nächstes definieren wir die Pins des STM32, mit denen die CS-, RST- und DC-Pins des LCD verbunden sind.

STM32F103C8T6-Minimum-System-Development-Board-fig-8

  • Als nächstes erstellen wir einige Farbdefinitionen, um es einfacher zu machen, Farben später im Code anhand ihrer Namen anstelle ihrer Hexadezimalwerte zu verwenden.

STM32F103C8T6-Minimum-System-Development-Board-fig-9

  • Als Nächstes legen wir die Anzahl der Iterationen fest, die das Board durchlaufen soll, sowie die Aktualisierungsdauer für die Verwendung des Fortschrittsbalkens.

STM32F103C8T6-Minimum-System-Development-Board-fig-10

  • Nachdem dies erledigt ist, erstellen wir ein Objekt der ST7735-Bibliothek, das im gesamten Projekt als Referenz auf die Anzeige verwendet wird.
  • Wir geben außerdem den Pin des STM32 an, an den der Taster angeschlossen ist, und erstellen eine Variable, um seinen Zustand zu halten.

STM32F103C8T6-Minimum-System-Development-Board-fig-11

  • Nachdem dies erledigt ist, gehen wir zur Funktion void setup() über.
  • Wir beginnen mit der Einstellung von pinMode() des Pins, an den der Taster angeschlossen ist, und aktivieren so einen internen Pull-up-Widerstand am Pin, da der Taster beim Drücken eine Verbindung zur Masse herstellt.

STM32F103C8T6-Minimum-System-Development-Board-fig-12

  • Als nächstes initialisieren wir die serielle Kommunikation und den Bildschirm, indem wir den Hintergrund des Displays auf Schwarz setzen und die Funktion print() aufrufen, um die Schnittstelle anzuzeigen.

STM32F103C8T6-Minimum-System-Development-Board-fig-13

  • Als nächstes folgt die Funktion void loop(). Die Void-Loop-Funktion ist dank der Verwendung von Bibliotheken/Funktionen recht einfach und kurz.
  • Wir beginnen mit dem Auslesen des Zustands des Druckknopfes. Wenn die Schaltfläche gedrückt wurde, entfernen wir die aktuelle Meldung auf dem Bildschirm mit der Funktion „removePressKeyText()“ und zeichnen den sich ändernden Fortschrittsbalken mit der Funktion „drawBar()“.
  • Anschließend rufen wir die Funktion „Berechnung starten“ auf, um den Wert von Pi zusammen mit der für die Berechnung benötigten Zeit zu erhalten und anzuzeigen.

STM32F103C8T6-Minimum-System-Development-Board-fig-14

  • Wenn die Taste nicht gedrückt wird, bleibt das Gerät im Leerlaufmodus und der Bildschirm verlangt, dass eine Taste gedrückt wird, um mit dem Gerät zu interagieren.

STM32F103C8T6-Minimum-System-Development-Board-fig-15

  • Schließlich wird am Ende der Schleife eine Verzögerung eingefügt, um vor dem Skizzieren von „Schleifen“ etwas Zeit zu geben.

STM32F103C8T6-Minimum-System-Development-Board-fig-16

  • Der verbleibende Teil des Codes besteht aus den Funktionen, die aufgerufen werden, um die Aufgaben vom Zeichnen des Balkens bis zur Berechnung des Pi zu erfüllen.
  • Die meisten dieser Funktionen wurden in mehreren anderen Tutorials behandelt, die die Verwendung des ST7735-Displays beinhalten.

STM32F103C8T6-Minimum-System-Development-Board-fig-17STM32F103C8T6-Minimum-System-Development-Board-fig-18STM32F103C8T6-Minimum-System-Development-Board-fig-19STM32F103C8T6-Minimum-System-Development-Board-fig-20STM32F103C8T6-Minimum-System-Development-Board-fig-21STM32F103C8T6-Minimum-System-Development-Board-fig-22

  • Der vollständige Code für das Projekt ist unten verfügbar und im Download-Bereich angehängt.

STM32F103C8T6-Minimum-System-Development-Board-fig-23STM32F103C8T6-Minimum-System-Development-Board-fig-24 STM32F103C8T6-Minimum-System-Development-Board-fig-25 STM32F103C8T6-Minimum-System-Development-Board-fig-26 STM32F103C8T6-Minimum-System-Development-Board-fig-27 STM32F103C8T6-Minimum-System-Development-Board-fig-28 STM32F103C8T6-Minimum-System-Development-Board-fig-29 STM32F103C8T6-Minimum-System-Development-Board-fig-30 STM32F103C8T6-Minimum-System-Development-Board-fig-31 STM32F103C8T6-Minimum-System-Development-Board-fig-32 STM32F103C8T6-Minimum-System-Development-Board-fig-33 STM32F103C8T6-Minimum-System-Development-Board-fig-34

Hochladen von Code auf den STM32

  • Das Hochladen von Skizzen auf den STM32f1 ist im Vergleich zu Standard-Arduino-kompatiblen Boards etwas komplex. Um Code auf die Platine hochzuladen, benötigen wir einen FTDI-basierten USB-zu-Seriell-Konverter.
  • Schließen Sie den USB-Seriell-Konverter an den STM32 an, wie in den folgenden Schaltplänen gezeigt.

STM32F103C8T6-Minimum-System-Development-Board-fig-35

Hier ist eine Pin-zu-Pin-Karte der Verbindung

FTDI – STM32

  • Nachdem dies erledigt ist, ändern wir dann die Position des Status-Jumpers der Platine auf Position eins (wie im GIF unten gezeigt), um die Platine in den Programmiermodus zu versetzen.
  • Drücken Sie anschließend einmal die Reset-Taste auf der Platine und wir sind bereit, den Code hochzuladen.

STM32F103C8T6-Minimum-System-Development-Board-fig-37

  • Stellen Sie sicher, dass Sie auf dem Computer „Generic STM32F103C Board“ und „Seriell“ als Upload-Methode auswählen. Anschließend können Sie auf die Schaltfläche „Upload“ klicken.

STM32F103C8T6-Minimum-System-Development-Board-fig-38

  • Sobald der Upload abgeschlossen ist, ändern Sie den Status-Jumper in die Position "O" Dadurch wird das Board in den „Ausführungs“-Modus versetzt und sollte nun basierend auf dem hochgeladenen Code mit der Ausführung beginnen.
  • An diesem Punkt können Sie das FTDI trennen und das Board über USB mit Strom versorgen. Falls der Code nach dem Einschalten nicht ausgeführt wird, stellen Sie sicher, dass Sie den Jumper ordnungsgemäß wiederhergestellt haben, und schalten Sie die Platine wieder ein.

Demo

  • Wenn der Code vollständig ist, befolgen Sie den oben beschriebenen Upload-Vorgang, um den Code in Ihr Setup hochzuladen.
  • Die Anzeige sollte wie im Bild unten dargestellt angezeigt werden.

STM32F103C8T6-Minimum-System-Development-Board-fig-39

  • Drücken Sie die Drucktaste, um die Berechnung zu starten. Sie sollten sehen, wie der Fortschrittsbalken schrittweise bis zum Ende gleitet.
  • Am Ende des Vorgangs wird der Wert von Pi zusammen mit der für die Berechnung benötigten Zeit angezeigt.

STM32F103C8T6-Minimum-System-Development-Board-fig-40

  • Der gleiche Code ist auf einem Arduino Uno implementiert. Das Ergebnis ist im Bild unten dargestellt.

STM32F103C8T6-Minimum-System-Development-Board-fig-41

  • Beim Vergleich dieser beiden Werte sehen wir, dass „Blue Pill“ mehr als siebenmal schneller ist als der Arduino Uno.
  • Dies macht es ideal für Projekte, die einen hohen Bearbeitungs- und Zeitaufwand erfordern.
  • Auch die geringe Größe der Blue Pill dient als Vorteiltage hier, da es nur etwas größer als der Arduino Nano ist und an Orten verwendet werden kann, an denen der Nano nicht schnell genug ist.

Dokumente / Ressourcen

STM32 STM32F103C8T6 Mindestsystementwicklungsplatine [pdf] Benutzerhandbuch
STM32F103C8T6 Mindestsystem-Entwicklungsplatine, STM32F103C8T6, Mindestsystem-Entwicklungsplatine, Systementwicklungsplatine, Entwicklungsplatine, Platine

Verweise

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind markiert *