STM8S Slow Start lernen. Teil 0

Die MK- Familie STM8S verfügt im Vergleich zum STM8L / 32 über ein kleineres Arsenal an Peripheriegeräten, ermöglicht es Ihnen jedoch, die Grundlagen leicht zu verstehen und die erforderlichen Fähigkeiten für die Arbeit mit seinen älteren Brüdern zu erwerben.

0. An wen richtet sich das Material, warum und warum


Beim Schreiben dieses Artikels gehe ich davon aus, dass der Leser:

  • Lesen Sie sorgfältig (was selten ist)
  • Ein wenig Arbeit mit englischsprachiger Fachliteratur (na ja, oder die Motivation zum Lernen, denn die Muttersprache des Programmierers ist Englisch)
  • Löten (zumindest minimale Fähigkeiten)
  • Programmieren in C (wieder ist nicht alles so kompliziert)
  • Google (ohne es irgendwo)
  • Verwenden Sie ein Multimeter und verfügen Sie über andere grundlegende Fähigkeiten (z. B. „Stecken Sie Ihre Finger nicht in die Steckdose“).

Ich betrachte die Ziele des Artikels:

  • Übersicht für alle Phasen der Entwicklung eines Systems auf Basis eines Mikrocontrollers
  • Geben Sie die notwendigen einleitenden Anmerkungen für eine Person, die praktisch nicht engagiert ist
  • Wenn möglich, hat der Leser ein Verständnis dafür, wo, was und wie zu finden ist


(Nicht signifikant)
Warum und warum?

Ich denke, es ist sinnvoll, einen detaillierten MK-Programmierkurs zu machen.

Ich werde eine Gelegenheit sein, die gesamte Peripherie genauer zu studieren und dabei anderen zu helfen.
Ich weiß, dass es bereits eine große Anzahl von Artikeln und sogar Schulungen gibt, aber ich habe einen etwas anderen Ansatz. (Vielleicht werde ich angemessene Kritik bekommen, meine Meinung ändern und mich den MX Cube-Jungs anschließen).

Es ist traurig zu sehen, wie sich stm-Controller in Arduino verwandeln.

In Bezug auf Arduino:

Es gibt 3 (mir bekannt, MB, ich bin einfach nicht gewachsen) Ansätze zur Softwareentwicklung auf MK:

  1. Assembler-Entwicklung
  2. Entwicklung für ein bestimmtes MK-Modell
  3. Entwicklung mit HAL und ähnlichen Bibliotheken

1) Ich bin ein Befürworter der Meinung, dass Sie, wenn Sie ein Haus bauen, nicht jeden Lehmziegel mit Ihren eigenen Händen verbrennen sollten, da der Monteur verschwindet (obwohl dies damit begann). Entwicklungsgeschwindigkeit zu niedrig.

2) HAL-Bibliotheken usw. Für einen Anfänger sind zu viele Momente „schreibe einfach so“ undurchsichtig. Weil - auch im Müll.

3) Ich halte den Prozess der Erstellung von Software für einen bestimmten MK für die gesündeste Option für Anfänger. Die erworbenen Fähigkeiten ermöglichen den Umgang mit 8L- und 32-Serien (obwohl es laut Dokumentation weh tut, dies alleine zu tun).

Sie haben wahrscheinlich bemerkt, dass Arduino nicht in dieser Liste aufgeführt ist, da es sich um eine Bildungsplattform handelt und nicht für die Entwicklung kompakter Geräte auf dieser Basis vorgesehen ist. Aber der Ansatz, es aus irgendeinem Grund zu programmieren (ich weiß es nicht), wird übertragen und verbreitet sich über das Internet. Und sogar in echten kommerziellen Projekten eingesetzt. (steht für "Ich habe die Bibliothek im Forum heruntergeladen, verbunden, es hat funktioniert, ich weiß nicht, wie es funktioniert").

Ich schlage aus meiner Sicht einen akademisch und methodisch sinnvolleren Ansatz vor.

1. Die Wahl des Mikrocontrollers


Ich habe mehrere STM8S105K6 im LQFP32-Paket, es ist aus dieser Familie, also wähle ich es.

Sie können jeden MK innerhalb der Serie auswählen.

Es gibt fertige Discovery-Boards von ST, die Sie bei den Chinesen kaufen oder bei anderen Anbietern bestellen können. Es gibt fertige Boards für den STM8S103F3P6 und dergleichen von den Chinesen.

Es ist jedoch zu beachten, dass vorgefertigte Boards für das Training ausgelegt sind.

Auf der Website des Herstellers st.com finden wir unseren MK und laden Dokumente herunter:

Referenzhandbuch: RM0016 - ein gemeinsames Dokument für alle MK-Familien STM8S und STM8AF. Als nächstes kommt RM.
Datenblatt: Ich habe ein DS5855-Dokument für STM8S105C4 / 6, STM8S105K4 / 6 und STM8S105S4 / 6. Als nächstes kommt DS.

Von den köstlichen Dingen, die er (oberflächlich) hat:

  • 16 MHz Unterstützung
  • 32 KB Flash, 1 KB EEPROM und 2 KB RAM
  • Stromversorgung 2,95-5,5 V.
  • 8-Bit- und 16-Bit-Timer
  • UART, SPI, I2C
  • 10-Bit- ADC
  • Bis zu 38 diskrete Ein- / Ausgänge

2. Erforderliche Ausrüstung


Ich sehe zwei Möglichkeiten für die Arbeit mit MK:

  1. Zusammenstellen eines Layouts aus einzelnen Komponenten
    Großartig, cool, ich mag es. So viele Leute tun es.

    In diesem Fall benötigt der MK das sogenannte Strapping. Der Plan ist einfach:

    1. Wir nehmen ein Steckbrett, in meinem Fall TQFP (32-64PIN) 0,8 MM, und löten MK darauf
    2. Wir nehmen ein zweireihiges Kamm-PLS-2x40-Lot in die Löcher, die zu den Schlussfolgerungen von MK führen
    3. Wir nehmen ein bedrucktes Steckbrett (ich habe 9x15 cm) und löten das letzte Sandwich darauf
    4. Wir betrachten RM Punkt 7. Stromversorgung, lesen wir . Es steht geschrieben, dass Sie einen Kondensator benötigen, der den VCAP-Pin und unser 0-V-Netzteil verbindet. Es wird auch geschrieben, dass Sie in DS detaillierter auf einen bestimmten MK im Abschnitt über die elektrischen Eigenschaften eingehen müssen. Für mich ist dies Abschnitt 10.3.1 des externen VCAP-Kondensators unter Bezugnahme auf Tabelle 18, in der der Nennwert 470 - 3300 nF beträgt. Ich nahm 1 mF (in Schaltung C3). (warum du es brauchst, ich hoffe du liest es selbst in RM)
    5. Ebenda. In DS in Abschnitt 10.3.8. Pin-Eigenschaften zurücksetzen Wir finden die Kondensatorleistung 0,1 mF (auf der Schaltung C4). Der Widerstand R4 mit einem Nennwert von 10 kOhm wird in Debug-Boards und verschiedenen Anwendungshinweisen verwendet, obwohl im MK bereits ein Pull-up-Widerstand mit einem Nennwert von 30 bis 80 kOhm vorhanden ist (wenn Sie den gleichen DS glauben). Parallel zum Kondensator C4 setzen wir unseren Reset-Knopf. Ein solches Rücksetzmuster ist beispielsweise in der Desighn-Notiz DN0005 zu sehen.
    6. Außerdem fügt ST den Debug-Boards gerne 100-nF-Leistungskondensatoren hinzu, und zwar in der Anzahl der N-Pins, die an +1 Leistung angeschlossen sind. Das Diagramm zeigt nur C1, C2 und C5 3 Teile, und ich habe sie nicht auf die Platine gelötet, aber Sie haben die Bedeutung verstanden. Ohne sie wird es auf dem Tisch funktionieren, aber in der realen kommerziellen Entwicklung ist es besser, sich um diese Angelegenheit zu kümmern, wenn die Geräteplatine gezüchtet wird.
    7. Lösen Sie den SWIM-Programmieranschluss (ich mache aus PLS-1x40)

    Ich habe so ein Wunder:


  2. Kauf einer fertigen Platine (was Sie nicht vor der Arbeit mit einem Lötkolben bewahrt)
    Großartig, cool, ich mag es. So viele Leute tun es.

    Es lohnt sich, sich mit der Konfiguration der Karte vertraut zu machen. Wenn es sich um eine Karte von ST handelt, ist sie sofort beim Programmierer und wird mit einem USB-Kabel vom Typ B angeschlossen. Die ST-Site enthält ein Diagramm auf der Produktseite. Auf dem Brett befinden sich Tasten, LEDs, Hochtöner, kapazitive Tasten und andere Charms, mit denen Sie spielen können.

    Wenn das Board chinesisch ist, benötigen Sie häufig einen Programmierer.

    Siebdrucke der Namen der Schlussfolgerungen sind besser nicht zu glauben und im Vergleich zu DS zu überprüfen.

Ich denke nicht daran, mit Kontakt-Steckbrettern zu arbeiten, weil ich sie nicht benutze.

Außerdem brauche ich einen Programmierer, ich habe einen chinesischen ST-Link V2. Kann programmieren und STM8 und STM32.

3. Auswählen einer IDE


Für mich ist die Frage der Wahl noch nicht relevant, ich arbeite im IAR für STM8, weil es ein Projekt gemacht hat, an dem ich gerade arbeite, aus dem gleichen Grund die alte Version.

Wir gehen auf die Seite iar.com , bei der Suche geben wir das Modell unseres MK ein.
Laden Sie die IAR Embedded Workbench für STM8 herunter, wählen Sie bei der Installation die größenbeschränkte Auswertung aus und legen Sie ein Limit von 8 KB Code fest. Oder kaufen. Es gibt gehackte Versionen von Ressourcen, die auf dem Territorium der Russischen Föderation verboten sind, aber sie sind nicht für kommerzielle Projekte geeignet.

Installationsanweisungen finden Sie im Installationsprogramm oder in Google.
Ich verwende Version 6.5.3.2581.
Installieren Sie die Umgebung und den Treiber für den Programmierer.

4. Erstellen eines Projekts


Gehen Sie zur IDE, gehen Sie zu Projekt -> Neues Projekt erstellen -> C ++

Klicken Sie auf OK, wählen Sie das Verzeichnis aus (vorzugsweise ohne Kyrillisch und Leerzeichen) und wählen Sie den Namen (ohne Leerzeichen und Kyrillisch).

Wir gehen zum Stammordner unserer IDE und suchen den inc-Ordner, für mich den Pfad:

C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\stm8\inc 


Unter den iostm8-Header-Dateien finden wir für mich unser MK-Modell:

 iostm8s105k6.h 

Wir verbinden es ganz am Anfang und fügen eine Endlosschleife hinzu.

Ergebnis:
 #include<iostm8s105k6.h> //  int main() { while(1){ //  } return 0; } 


Wählen Sie im Menü Projekt -> Optionen -> Allgemeine Optionen in der Spalte Gerät Ihren MK aus.

Wählen Sie unter Projekt -> Optionen -> Debugger in der Spalte Treiber die Option ST-LINK.

Suchen Sie die Schaltfläche Herunterladen und Debuggen in der Symbolleiste.
Bei der ersten Kompilierung werden Sie von der Umgebung aufgefordert, den Namen der .eww-Datei auszuwählen. (Ich nenne das gleiche wie das Projekt.)

Am unteren Rand des Debug-Protokoll-Fensters sollten folgende Meldungen angezeigt werden:

  • Präprozessor für STM8 - Präprozessor gestartet
  • Debugger für STM8 - Debugger gestartet
  • Verbunden mit dem STM8 SWIM Debugging System - verbunden mit MK
  • Geladener Debugee - Firmware-Download ist aufgetreten
  • Ziel-Reset - Ein Reset ist aufgetreten

Wir sind im Debug-Modus, aber das Programm ist angehalten.
An derselben Stelle in der Symbolleiste finden wir die Schaltfläche Los und drücken sie.
Wir haben MK im Debug-Modus gestartet.

Klicken Sie auf Debugging beenden, Debugging stoppt, aber der MK wird vom Programmierer betrieben und führt dann das Programm aus, dh er dreht eine Endlosschleife und tut nichts.

Zusammenfassung


Das Ergebnis war ein kurzer Überblick und eine Einführung in die Programmierung der STM8S-MK-Serie ohne Programmierung. Es stellte sich heraus, dass dies nur die Grundlage für die Arbeit war. Von hier aus beginnt normalerweise alles - mit der Zusammenstellung des Layouts.

Ich sehe den Punkt nicht genauer.

In vielen Artikeln blinken nach der Einführung buchstäblich nach ein paar Zeilen die LEDs, was ich nicht verstehe.

Wie erreicht die Ziele sind, kann daran gemessen werden, ob der Anfänger es geschafft hat, anhand der von mir vorgeschlagenen Informationen selbst etwas zu tun. (Anzeigefenster Debug-Protokoll)

Vielen Dank für Ihre Aufmerksamkeit.

Source: https://habr.com/ru/post/de465597/


All Articles