Allen, die Mikrocontroller von STMicroelectronics verwenden oder sich dafür interessieren, möchte ich mein kleines Hobbyprojekt vorstellen.
Sowohl Habré als auch geektimes haben bereits viele Artikel über Mikrocontroller der STM32F-Serie, zum Beispiel: Günstiges STM32-Board + Arduino IDE , Der Versuch, sich mit STM32 anzufreunden, und die Antwort darauf Wie man sich mit STM32 und vielen anderen anfreundet . Insgesamt behandeln sie dieses Thema sehr gut, aber es gibt eine Sache, aber ... In all diesen Artikeln werden vorgefertigte Karten und ein bestimmter Controller, die sich auf dieser Karte befinden, berücksichtigt. Und was ist mit denen, die mit verschiedenen Controllern und sogar auf dem Steckbrett spielen wollen? Beispielsweise können viele Karten, die ich mit dem STM32F4-Controller kenne (dieselbe STM32F4-Discovery), nicht in das Steckbrett eingesetzt werden. Aber ich persönlich möchte so etwas (Achtung, alle Bilder sind anklickbar):

Gleichzeitig möchte ich, wie ich bereits geschrieben habe, nicht mit einem bestimmten Controller verbunden sein, sondern ihn einfach ersetzen können. Diejenigen, die daran interessiert sind, wie ich diese nicht ganz gewöhnliche Wunschliste realisiert habe, bitte ich um Katze.
Einführung (inspiriert von Kommentaren zum Artikel, bitte überspringen, bevor Sie sie lesen)Ob Breadboards mit Anschlüssen verwendet werden sollen oder nicht, ist ein strittiger Punkt. Ab einer bestimmten Anzahl von Komponenten werden sie natürlich unangenehm. Obwohl die Komponente nicht sehr groß ist und die Anzahl der Experimente in der Anfangsphase des Prototyping noch groß ist, sind Steckbretter meiner Meinung nach praktisch. Und hier, wenn Sie STM32 verwenden möchten, erwartet uns ein Hinterhalt - sie sind im Gegensatz zu Atmega einfach nicht in DIP-Paketen enthalten. Sie können fertige Demo-Boards kaufen, aber auch hier gibt es einen Hinterhalt - die meisten dieser Boards mit älteren Controllern können wegen der Doppelkämme nicht im Steckbrett stecken bleiben. Das heißt, mit vorgefertigten Demo-Boards müssen wir mit den jüngeren Controllern der Serie arbeiten (siehe denselben Nucleo in der DIP-Version oder Blue Pill ). Der zweite Weg besteht darin, spezielle Adapter herzustellen. Dieser Artikel beschreibt diesen zweiten Pfad.
Zeigen Sie sofort das Endergebnis. Dies sind kleine doppelseitige Schals für verschiedene Fälle, deren Druck im Reich der Mitte bestellt werden kann (die Chinesen haben nichts gegen das Drucken doppelseitiger Platten mit einem Paneel-Design):

Ein Satz (rechts) besteht einfach aus einfachen Adaptern für das Steckbrett für LQFP32 / 48/64-Gehäuse, der zweite Satz (links) besteht ebenfalls aus Adaptern, jedoch mit einem JTAG-Anschluss, Strom-, Niederfrequenz- und Hochfrequenzquarz und einer Reset-Taste. Alle anderen Controller-Pins befinden sich am Kamm. Im Allgemeinen das Minimum. Leider ist der JTAG-Anschluss nicht Standard, daher ist auch die Adapterplatine von JTAG-20 zu demselben JTAG-10 enthalten.
Diese Platinen können von einem Haartrockner zu Hause leicht genug gelötet werden. Wenn Sie also mehrere Controller, mehrere Platinen und passive Komponenten der Größe 0805 haben, können Sie in angemessener Zeit so etwas erhalten:

Und das scheint mir eine gute Freiheit der Kreativität zu geben. Wenn jemand das Thema erschöpft zu haben scheint, dann ist hier ein Link zum Github-Repository .
Aber ich möchte Ihnen Schritt für Schritt weiter erklären, wie Sie zu einem solchen Leben gelangen. Bild, um Aufmerksamkeit zu erregen (grafische Darstellung des Problems):

Es gibt eine Streuung von Controllern (Serie L0, F3, F4), Stromversorgung, USART-USB-Konverter und Steckbrett. Ich möchte die LEDs blinken lassen. Dieser Schritt ist sehr einfach gemacht. Wir nehmen jeden Controller, Adapterkarte aus dem ersten Satz, wir löten mit einem Haartrockner. Als nächstes benötigen Sie eine Dokumentation zum Anschließen der Stromversorgung, des Programmiergeräts und des Quarzes. Hier hat ST die komplette Bestellung, alles ist auf der Seite mit der Dokumentation des ausgewählten Controllers. Für STM32F303K8 benötigen wir beispielsweise nur ein Dokument: AN4206: Erste Schritte mit der Hardwareentwicklung der STM32F3-Serie , bei der es Stromversorgungsschaltungen, Oszillatoren und einen Programmierer gibt, auf deren Grundlage Sie ein solches Modell erstellen können:

Dieser Controller hat keinen externen Niederfrequenzquarz, daher habe ich nur Hochfrequenz mit 16 MHz angeschlossen. Für die Programmierung wird ein Standard-JTAG-20-Anschluss verwendet, der mit einem Standardprogrammierer von ST
ST-LINK / V2 ausgestattet ist .
Wenn Sie Linux verwendenEs gibt bereits Treiber im Kernel, aber Sie müssen der Datei /etc/udev/rules.d manuell einige Regeln hinzufügen, siehe zum Beispiel hier
Da der Artikel hauptsächlich dem Hardwareteil gewidmet ist, werde ich den Softwareteil nur kurz erwähnen. Betriebssystem: Fedora 25. Entwicklungsumgebung: System Workbench für STM32 ist ein völlig kostenloses System, das auf Eclipse von OpenSTM32 Community basiert. Das einzige Mal - zum Herunterladen müssen Sie sich unter http://www.openstm32.org registrieren. Es ist praktisch, das grafische Dienstprogramm STM32CubeMX zum Modellieren, Dokumentieren und Generieren von Beispielen zu verwenden. Die Controller-Konfiguration auf dem Foto oben sieht beispielsweise folgendermaßen aus:

Dateien mit diesen Schemata befinden sich ebenfalls im Repository. Zum Beispiel für STM32F303K8 siehe hier
System Workbench für STM32 verfügt über einen integrierten, ziemlich erweiterten Projektassistenten, der die anfängliche Projektstruktur generiert und optional in das Projekt aufnehmen kann: CMSIS (Low-Level-Controller-Treiber), HAL-Bibliothek (Hardware Abstraction Layer), FatFS, FreeRTOS. Ich selbst benutze meine objektorientierte Treiberbibliothek, die auf der HAL läuft. Wen kümmert es, siehe hier .
Hier ist ein Beispiel für einen Code , der diese Bibliothek verwendet und die LEDs eines Timers (während einer Unterbrechung) blinkt und (über einen USART-USB-Konverter an die Workstation-Konsole) den Status des an die Echtzeituhr angeschlossenen Zählers protokolliert. All dies ähnelt etwas der Ideologie von Arduino, aber ich programmiere solche Dinge einfach gerne selbst.
Hier ist ein Beispiel für die Verwendung eines ziemlich leistungsstarken STM32F410RB- Controllers:
In ähnlicher Weise lautet das Hauptdokument AN4488: Erste Schritte mit der STU32F4xxxx-MCU-Hardwareentwicklung , bei der alle erforderlichen Verbindungsschemata vorhanden sind. Das zweite wichtige Dokument ist AN2867: Oszillator-Konstruktionshandbuch für STM8AF / AL / S- und STM32-Mikrocontroller , in dem detailliert beschrieben wird, wie ein Hochfrequenzoszillator angeschlossen wird.
Das ständige Fechten solcher Schemata ist natürlich ziemlich zeitaufwändig, deshalb habe ich beschlossen, die nächstmöglichen Universalschals herzustellen, die diese Schemata realisieren. Vielseitigkeit wird durch die Tatsache erreicht, dass die Steuerungen verschiedener Serien, jedoch im selben Fall (z. B. STM32F303RB und STM32F410RB, beide im Fall LQFP64) dieselben Schlussfolgerungen ziehen (mit Ausnahme kleiner Unterschiede im Stromversorgungskreis). Diese Unterschiede führen dazu:

Alle Elemente mit vorzeichenbehafteten Werten sind verschiedenen Steuerungen gemeinsam, aber Elemente wie P30, P31, P47, wobei die Nummer die Pin-Nummer bedeutet, müssen je nach Modell ausgewählt werden. Infolgedessen sieht das Steckbrett folgendermaßen aus:

Hier ist so eine kleine Verbesserung.
→ Projekt auf Github
Lizenz: GNU General Public License, Version 3
Leiterplatte und Leiterplatten von Eagle Cad vorbereitet. Das immens angesehene DiHalt hat eine wunderbare Reihe von Artikeln über dieses System . Die kostenlose Version von Eagle Cad für den Heimgebrauch kann von der offiziellen Website heruntergeladen werden .
Ich lade alle ein, sich dem Projekt anzuschließen.