- Auswahl der Hardware- und Softwareentwicklungstools
- STM8S103F3P6 Entwicklung
- STM8S103F3P6 Programmierer
- STM8S103F3P6 IDE und Compiler
- STM8S mit Arduino unter Verwendung von Sduino
- Herunterladen der erforderlichen Software
- Einrichten des STVD- und Cosmic C-Compilers
- Standard-Peripheriebibliothek für STM8S103F3P6
- Das erste Programm kompilieren
- Hochladen des Codes von STVD auf STM8S Development Board mit ST-Link V2
Der STM8 ist eine Reihe von 8-Bit-Mikrocontrollern von STMicroelectronics, die zu einer gängigen Wahl von Mikrocontrollern für die kostensensitive Produktentwicklung geworden sind. Ich habe zuvor mit AVR, PIC und einigen anderen ARM Cortex-Mikrocontrollern gearbeitet, aber in einigen Anwendungen werden sie sicherlich übertrieben und erhöhen die Stücklistenkosten erheblich. Kürzlich, nachdem ich einige billige chinesische Produkte abgerissen hatte, stellte ich fest, dass die meisten von ihnen einen STM8-Mikrocontroller enthielten. Der IC ist nicht nur billig, sondern auch mit vielen Funktionen und Optionen ausgestattet, sodass er für viele verschiedene Anwendungen geeignet ist. Zum Beispiel der STM8S Eine Reihe von Steuerungen (die wir in dieser Lernserie kennenlernen werden) ist eine Allzwecksteuerung. Es gibt jedoch auch andere Serien wie die STM8A für Fahrzeugkonstruktionen und die STM8L für batteriebetriebene Konstruktionen mit geringem Stromverbrauch, die die Anwendung dieser Steuerungen erweitern.
In dieser Reihe von Tutorials erfahren Sie, wie Sie die STM8S-Mikrocontroller programmieren, insbesondere den STM8S103F3P6. Der Grund für den Einstieg in diese spezielle Teilenummer liegt nur im Preis-Leistungs-Verhältnis. Mögen!! Schauen Sie es sich nur für 0,25 $ (ca. 20 Rubine) an. Wir erhalten einen 8-Bit-Mikrocontroller mit 16-MHz-Innenoszillator, 8-kB-Flash, 10-Bit-ADC, UART, SPI und I2C. Wer wäre nicht fasziniert? Auch der STM8S103F3P6 ist weit verbreitet, und daher finden Sie als Anfänger genügend Unterstützung, wenn Sie Hilfe außerhalb der Tutorials benötigen. Ausgehend davon werden wir eine Reihe von Tutorials haben, ähnlich den PIC-Programmier-Tutorials, in denen wir lernen, wie man diesen Controller von einem einfachen Blinken bis zu verschiedenen Anzeige- und Sensorschnittstellen programmiert. Sie können sich auch das STM32F103C8-Lernprogramm und Projekte ansehen, wenn Sie an 32-Bit-STM-Mikrocontrollern interessiert sind.
Auswahl der Hardware- und Softwareentwicklungstools
Nachdem wir den Mikrocontroller deizidiert haben, müssen wir Hardware- und Software-Entwicklungstools auswählen, um unseren Lernprozess zu beginnen. Es gibt viele Optionen, hier habe ich diejenigen ausgewählt, die kostenlos verwendet werden können und für alle leicht verfügbar sind.
STM8S103F3P6 Entwicklung
Das offizielle Entwicklungsboard für den 8-Bit-Mikrocontroller von ST heißt STM8 Discovery Kit. Wir werden jedoch ein anderes kostengünstiges Entwicklungsboard verwenden, das Sie bei einem lokalen Lieferanten oder im Online-Shop leicht finden können. Das Bild des STM8S103F3P6-Entwicklungsboards, das wir in diesem Tutorial verwenden werden, ist unten dargestellt.
Die Platine besteht nur aus den Mindestkomponenten, die für den Beginn der Entwicklung erforderlich sind. Es ist Steckbrett freundlich und für kompakte Anwendungen geeignet. Das interne Schaltbild für die Entwicklungsplatine ist unten dargestellt.
Bei näherer Betrachtung werden Sie feststellen, dass wir neben dem STM8S103F3p6-Controller eine Reset-Taste zum Zurücksetzen des Controllers haben. Eine Stromversorgungs-LED und eine Test-LED sind an PB5 (Port B, Pin 5) und einen Spannungsregler AMS1117 angeschlossen, der die 5 V von einem USB-Port in 3,3 V für den Controller umwandelt. Die Steuerung kann bei Bedarf auch mit 5 V betrieben werden. Die verschiedenen Teile der Steuerung sind unten markiert. Wir haben auch 4 Programmierstifte, nämlich 3,3 V, GND, SWIM und NRST, mit denen wir unseren Mikrocontroller einfach programmieren und debuggen können.
STM8S103F3P6 Programmierer
Für die Programmierung unseres Controllers verwenden wir den ST-LINK v2, der billig und online leicht verfügbar ist. Es gibt viele Varianten (Metall, Kunststoff, Gold, Pink, blankes Board) dieses ST-LINK v2-Boards, die alle dem gleichen Zweck dienen. Meins ist unten abgebildet, aber Sie können jeden ST-LINK-Programmierertyp verwenden. Die Pinbelegung ist unterschiedlich. Lesen Sie daher die Pinbelegung auf dem Gehäuse richtig durch. Es gibt auch ST-LINK V3 von ST-Microelectronics selbst, das für einige ernsthafte Fehlerbehebungen verwendet werden kann. Wir werden das vorerst nicht verwenden, da es ein bisschen teuer ist, wir werden es für die Zukunft speichern.
STM8S103F3P6 IDE und Compiler
Die Auswahl der richtigen IDE und des richtigen Compilers für STM8S103F3P6 ist verwirrend, einfach weil viele Optionen zur Auswahl stehen. Die offiziellen Tools, die für den STM8-Mikrocontroller verfügbar sind, sind in der folgenden Abbildung dargestellt.
Auf der Konfigurationsseite haben wir den STM8CubeMx, ich habe die Software ausprobiert und es war eine völlige Enttäuschung für mich. Im Gegensatz zum STM32Cube kann der STM8Cube keinen Code automatisch generieren. Es kann nur zu Visualisierungszwecken eine Pin-Zuordnung generieren und ist möglicherweise nützlich, wenn Sie Ihren Code von einem Controller auf einen anderen portieren. Davon abgesehen würde ich es nicht benutzen. In dieser Tutorial-Reihe werden wir dies also nicht verwenden.
Für die IDE und den Compiler haben wir viele Optionen zur Auswahl. Die beiden wichtigsten Optionen für IDE sind IAR Workbench und ST Visual Develop (STVD). Beide Software fühlt sich wie aus den 90ern an, aber nach einiger Zeit fand ich, dass STVD nur deshalb eine gute Wahl ist, weil es völlig kostenlos ist. In ähnlicher Weise werden wir für den Compiler den Cosmic C Compiler wieder verwenden, nur weil er völlig kostenlos ist. Ein weiterer Grund für die Wahl dieser IDE und dieses Compilers ist, dass es, sobald wir uns mit der Umgebung vertraut gemacht haben, einfach sein sollte, jeden anderen 8-Bit-Mikrocontroller von ST ohne großen Aufwand zu verwenden. Wir werden später in diesem Artikel erfahren, wie Sie STVD mit dem Cosmic C-Compiler installieren und einrichten.
Für das Flashen verwenden wir ST Visual Programmer (STVP). Dieses Tool wird automatisch installiert, wenn wir STVD installieren. Es wird in die IDE selbst integriert und hilft uns, schnell zu programmieren und zu debuggen. Die endgültige Software ist STMStudio, eine STM8-Überwachungssoftware. Die Software kann beim Debuggen von STM8 in Echtzeit helfen und verfügt über einige coole Funktionen wie die Überwachung des Variablenwerts, das Zeichnen von Diagrammen usw. Ich habe nicht genug mit dieser Software experimentiert. Und zumindest für die ersten Tutorials werden wir diese Software nicht verwenden, da wir keine großen Debugging-Anforderungen benötigen.
STM8S Standard Peripheral Library: ST Microelectronics bietet eine Reihe von Bibliotheken, um die Codeentwicklung für die STM8S Microcontroller zu vereinfachen. Diese Bibliothek wird kurz als „ Standard Peripheral Library “ oder SPL bezeichnet. Die Bibliothek ist cool, außer dass sie unter Berücksichtigung aller möglichen Controller in der 8-Bit-Familie STM8S / A und nicht nur des STM8S103F3P6-Controllers geschrieben wird, den wir verwenden werden. Daher müssen wir hier und da einige Verbesserungen vornehmen, damit es funktioniert (was ich später mitteilen werde). Trotzdem glaube ich, dass es sich lohnt, es auszuprobieren, da es die Entwicklung sehr schnell machen kann, und daher werden wir es in unserem Tutorial verwenden.
Wenn Sie die Bibliothek nicht verwenden möchten, müssen Sie direkt auf die Register der Steuerung zugreifen oder die Bare-Metal-Assembly-Programmierung durchführen. Beides macht Spaß, vorausgesetzt, Sie haben die Zeit, es zu lernen und zu verwenden. Meine Idee ist es, die SPL-Bibliothek überall dort zu verwenden, wo sie gut funktioniert, und bei Bedarf auch auf Register- und Assemblyebene zu arbeiten. Versuchen wir, das Rad nicht neu zu erfinden!
STM8S mit Arduino unter Verwendung von Sduino
Die Diskussion der Softwareoptionen wird niemals abgeschlossen sein, wenn ich die Arduino IDE- Unterstützung STM8S nicht erwähne. Ja, dank Michael Mayer kann dieselbe STM8S103F3P6-Karte mit Sduino direkt aus der Arduino IDE programmiert werden. Das Projekt befindet sich jedoch noch in der Entwicklungsphase und würde wahrscheinlich einige Zeit und Community-Unterstützung für Sduino benötigen, um vollständige Plattformunterstützung bereitzustellen. Nur wenige Minuten nach dem Spielen mit Sduino fing ich an, es zu mögen und beschloss daher, auch einen separaten Artikel darüber zu schreiben, wie man STM8S Microcontroller mit Arduino programmiert. Ich werde den Artikel hier verlinken, wenn er fertig ist. In diesem Artikel wird erläutert, warum und warum Sie die Arduino IDE nicht zum Programmieren Ihrer STM8S-Mikrocontroller verwenden sollten.
Dies sind meine Entscheidungen für Software und Hardware. Lassen Sie mich im Kommentarbereich wissen, ob Sie der Meinung sind, dass eine andere Software die bessere Wahl gewesen wäre und warum. Ich möchte auch andere Optionen untersuchen.
Herunterladen der erforderlichen Software
Nachdem wir uns für die Software entschieden haben, die wir für dieses Tutorial verwenden, laden wir sie über den folgenden Link herunter. Die gesamte Software kann kostenlos heruntergeladen und verwendet werden. Sie müssten lediglich ein kostenloses Konto bei ST und Cosmic registrieren, wenn Sie dies noch nicht getan hätten.
- ST Visual Develop (STVD)
- Cosmic C Compiler
- Standard-Peripheriebibliothek
- STM8Cube Mx (optional)
- STMStudio für STM8 (optional)
Einrichten des STVD- und Cosmic C-Compilers
Nachdem Sie beide Software heruntergeladen haben, befolgen Sie einfach die Anweisungen auf dem Bildschirm, um sie zu installieren. Ich würde empfehlen, sie in den Standardverzeichnissen zu belassen, um spätere Verwirrung zu vermeiden. Die STVD-IDE wird ohne Aufwand installiert. Für den Cosmic C-Compiler benötigen Sie während des Installationsvorgangs einen kostenlosen Lizenzschlüssel. Sie müssen nur Unternehmensinformationen mit E-Mail-ID angeben. Wenn Sie Student sind, erwähnen Sie dies einfach. Das Abrufen des Lizenzschlüssels erfolgt sofort und automatisch. Obwohl die Einrichtungsanweisungen besagen, dass es ein oder zwei Tage dauern kann, habe ich den Lizenzschlüssel automatisch auf meiner E-Mail-ID erhalten, sobald ich ihn übermittelt habe Überprüfen Sie den SPAM. Meine Bestätigungs-E-Mail wird unten angezeigt.
Kopieren Sie gemäß der E-Mail-Anweisung einfach die Datei license.lic und fügen Sie sie in den Unterordner "license" in Ihrem Installationsordner ein. Für mich war der Pfad "C: \ Programme (x86) COSMIC \ FSE_Compilers \ CXSTM8 \ License" . Fügen Sie die Datei einfach wie unten gezeigt an ihrem Speicherort ein.
Standard-Peripheriebibliothek für STM8S103F3P6
Wie bereits erwähnt, bietet ST Microelectronics Bibliotheken mit der Bezeichnung SPL an, die für alle 8-Bit-STM8S / A-Mikrocontroller verwendet werden können. Sie können entweder die Original-SPL von ST Microelectronics herunterladen und die erforderlichen Änderungen vornehmen oder meine STM8S103F3P6-SPL-Bibliotheken herunterladen und als solche verwenden. Ich würde das später empfehlen.
Original SPL von ST Microelectronics
STM8S103F3P6 SPL
Während Sie dort sind, müssen Sie auch das SPL-Benutzerhandbuch herunterladen, das beim Programmieren des Controllers sehr praktisch ist.
Das erste Programm kompilieren
Nachdem alles fertig ist, versuchen wir, unser erstes Programm zu kompilieren, um zu überprüfen, ob IDE, Compiler und Bibliothek ordnungsgemäß funktionieren. Sie können auch das Video unten auf der Seite überprüfen, um detaillierte Anweisungen zu erhalten.
Öffnen Sie zunächst STVD und wählen Sie Datei -> Arbeitsbereich. Wählen Sie im Popup-Fenster "Neuer Arbeitsbereich" aus und geben Sie den Projektnamen und den Pfad ein, in dem das Programm gespeichert werden soll. Ich benenne mein Programm BareMinimum und speichere es in einem Ordner auf dem Desktop. Klicken Sie auf OK und Sie erhalten das Dialogfeld Neues Projekt wie unten gezeigt.
Ich benenne das Projekt wieder als Bareminimum und unter Toolchain müssen wir den Toolchain-Stamm für den Pfad angeben, in dem der STM8 Cosmic-Compiler installiert ist. Die Standardpfadadresse lautet "C: \ Programme (x86) COSMIC \ FSE_Compilers \ CXSTM8" . Danach klicken Sie einfach auf OK, um das Fenster „MCU-Auswahl“ aufzurufen.
Suchen Sie nach STM8S103F3P, wählen Sie es aus und klicken Sie auf OK. Dadurch wird ein neues Projekt für STM8S103F3P auf STVD geöffnet. Die Fenster sollten dann so aussehen, wenn sie fertig sind.
Klicken Sie mit der rechten Maustaste auf "Quelldatei" und wählen Sie "Dateien zum Ordner hinzufügen", um alle c-Dateien aus unserer SPL-Bibliothek einzuschließen. Klicken Sie ebenfalls mit der rechten Maustaste auf "Dateien einschließen", um alle Header-Dateien einzuschließen. Wenn Sie Fragen haben, können Sie sich auf das folgende Video beziehen. Wenn alle Dateien hinzugefügt wurden, klicken Sie auf Erstellen -> Alle neu erstellen und dann auf Kompilieren, um zu überprüfen, ob der Compiler und die SPL wie erwartet funktionieren. Wenn alles gut geht, sollte der folgende Bildschirm mit Fehler 0 und Warnung 0 angezeigt werden.
Nachdem dies erledigt ist, können wir jetzt sicher sein, dass alle unsere SPL-Bibliotheken mit Cosmic Compiler und STVD arbeiten. Dies ist das Standardverfahren, das wir für jedes neue Projekt befolgen werden. Sie können auch nur die erforderlichen Header- und Quelldateien einschließen, die für das Projekt erforderlich sind, um die Erstellungszeit bei Bedarf zu verkürzen.
Hochladen des Codes von STVD auf STM8S Development Board mit ST-Link V2
Verbinden Sie den ST-Link V2 wie unten gezeigt mit der Entwicklungsplatine.
Die Verbindungen sind ziemlich einfach und das Beste daran ist, dass Sie keine externen Komponenten benötigen. Mein Hardware-Setup für die Programmierung ist unten dargestellt. Ich habe gerade die weiblichen Header-Drähte verwendet, um meine Verbindung herzustellen. Beachten Sie jedoch, dass die Pinbelegung Ihres ST-Links von meiner abweichen kann. Befolgen Sie vor dem Herstellen der Verbindungen unbedingt die Pinbelegung auf dem Gerät.
Stellen Sie die Verbindung her und verbinden Sie das Gerät mit Ihrem Computer. Die Treiberinstallation sollte automatisch beginnen. Mit dem Geräte-Manager können Sie sicherstellen, dass Ihr Computer ST-LINK V2 korrekt erkannt hat. Sie werden auch feststellen, dass die Test-LED auf der Karte blinkt, wenn die Karte zum ersten Mal mit Strom versorgt wird. Sobald wir den Code auf STVD erfolgreich kompiliert haben, erhalten wir eine "S19" -Erweiterungsdatei im Debug-Verzeichnis des Projektordners. Meine S19-Datei wird unten angezeigt.
Dieser S19 ähnelt der Hex-Datei, die auf den Controller hochgeladen werden soll. Öffnen Sie zum Hochladen des Programms ST Visual Programmer (STVP), das zusammen mit STVD installiert sein sollte. Wählen Sie dann im Konfigurationsfenster wie im folgenden Bild gezeigt aus und klicken Sie auf OK.
Klicken Sie dann auf Datei-> Öffnen und navigieren Sie zu der zuvor gezeigten S19-Datei. Um das Gerät zu flashen, folgen Sie Programm -> Registerkarte Aktuell . Wenn das Blinken erfolgreich war, sollte die folgende Ausgabe angezeigt werden.
Wenn Sie den STM8S kaufen, verfügt dieser standardmäßig über ein Blin-Programm, das die Test-LED blinkt. Nach dem Hochladen dieses leeren Codes blinkt die LED nicht mehr.
Wichtig: Ich habe festgestellt, dass mein ST-Link die Karte nach dem Programmieren nicht automatisch zurückgesetzt hat. Ich musste die Verbindung trennen und wieder herstellen, um die Ausgabe meines Programms zu überprüfen. Ich bin nicht sicher, ob dies ein Problem für alle ist. Lassen Sie es mich im Kommentarbereich wissen. Schauen Sie sich auch das Video unten an, in dem die Lösung dafür erläutert wird.
Lassen Sie uns dieses Tutorial abschließen. Wir haben die Grundlagen der Hardware gelernt, die Entwicklungsumgebung eingerichtet und gelernt, wie man Code kompiliert und hochlädt. Wir sind jetzt bereit, Fortschritte zu erzielen, und wir werden dies in all unseren kommenden Tutorials verwenden. Wenn Sie Fragen haben, posten Sie diese bitte in unseren Foren und bleiben Sie auf dem Laufenden!