www.mikrocontroller.net

STM8S-Discovery

Das STM8S-Discovery ist ein sehr günstiges Evalutionsboard für die Controllerfamilie STM8 von ST Microelectronics. Auf der Platine befindet sich ein kompletter USB-Programmer/Debugger, ein zu programmierender Mikrocontroller vom Typ STM8S105C6T6 sowie eine LED und ein kapazitiver Taster. Für das Discovery benötigt man kein Netzteil, da es die Betriebsspannung über den USB-Anschluss bezieht. Mit dem Programmer/Debugger kann man jeden beliebigen STM8 über SWIM – der einpoligen Programmierschnittstelle für STM8 – flashen und auf Fehlersuche gehen.

Inhaltsverzeichnis

[Bearbeiten] Benötigte Hardware

Einer der großen Vorteile des STM8S-Discovery ist, dass man außer dem Evaluationsboard eigentlich nur noch ein USB Kabel (A auf B) braucht und man kann los legen. Man braucht weder externes Netzteil, noch zusätzliche Bauteile wenn man mit dem Board ein wenig herumexperimentieren möchte

[Bearbeiten] Benötigte Software

Die benötigte Software gibt es kostenlos oder mit einer kostenlosen, aber etwas eingeschränkten Lizenz zum Herunterladen auf der ST Seite.

[Bearbeiten] Linux

Die USB Implementierung des ST-Links ist zumindestens auf dem STM8S Discovery Board kaputt. Beim Anstecken des USB Steckers kommen andauernd Fehlermeldungen des USB Subststems, siehe [1] Informationen zum oder über einen Update der ST-Link Firmware wurden im Netz nicht gefunden (Feb 2011)

[Bearbeiten] ST MCU Toolset

Das ST MCU Toolset beinhaltet die Entwicklungsumgebung ST Visual Develop (Vergleichbar zum AVR Studio von Atmel) und einen graphischen Flasher. Es beinhaltet den Treiber für den Programmer/Debugger, den uneingeschränkten Assembler und Linker und einen Simulator. Es kann auf der ST Webseite herunter geladen werden.

[Bearbeiten] Der Compiler

Bei den Compilern hat man die Wahl zwischen 2 (bald sogar 3) verschiedenen Compilern. Einige Compiler können voll in das ST Visual Develop integriert werden.

Cosmic Compiler
Diesen Compiler gibt es mit kostenlosr Lizenz bei einer Codegrößen-Beschränkung auf 32 KBytes. Man beachte, dass man sich für Download und Installation registrieren muss. Nachdem man sich während der Installation regestirert und die Email an Comsic geschickt hat, bekommt man relativ schnell (bei mir waren das 5 Minuten) eine Lizenz zugeschickt.
Raisonance Compiler
Für diesen Compiler gibt es eine kostenlose 16k Version, was aber für die meisten Hobbyprojekte mehr als ausreichend ist. Der Compiler kann zusätzlich mit der Entwicklungsumgebung von Raisoncance (Ride7) genutzt werden. Anscheinend ist dieser Compiler aber nicht so umfangreich wie der Cosmic. Für detailierte Informationen siehe die Hilfe des ST Visual Develop.
Compiler von IAR
IAR Embedded Workbench for STMicroelectronics STM8

[Bearbeiten] Datenblätter

Bevor man loslegt, sollte man sich noch folgenede Datenblätter herunterladen, damit man bei Problemen immer schnell nachschlagen kann:

  • STM8S-DISCOVERY das Handbuch zum STM8S Discovery
  • STM8S105xx Datenblatt des auf dem Discovery verwendeten Mikrocontroller
  • RM0016 Generelle Informationen über die einzelnen Register/Funktionen der STM8 Plattform
  • STM8S FWLi Firmware Libary, mit vielen Funktionen zu den GPIO etc... sodass man das Rad nicht jedesmal neu Erfinden muss. Dazu später mehr.
  • STM8S optimized examples Programmbeispiel

[Bearbeiten] Erste Schritte

[Bearbeiten] Erstinbetriebnahme

Zu aller erste sollte man das Discovery auspacken und via USB an einen Rechner anschließen. Nun sollte der PC das Board als einen USB-Stick erkennen, auf dem 3 Links gespeichert sind. Außerdem sollte es möglich sein, mit Hilfe des kapazitiven Buttons die Blinkfrequenz der LED zu ändern, denn auf dem Discovery ist schon ein Beispielprogramm von ST vorinstalliert. Dieses kann man sich zusammen mit der Dokumentation von der ST Downloadseite herunterladen.

[Bearbeiten] Installation der benötigten Software

Um selbst Programme schreiben und debuggen zu können, muss man die komplette Toolchain installieren haben.

  1. Installation des ST MCU Toolsets. Einfach immer auf ok klicken. Am Ende der Installation wird man gefragt, ob man einen ST MicroConnect Parallel Port Driver installieren möchte. Dieser wird für das Arbteiten mit dem STM8S-Discovery nicht benötigt und man kann getrost die Frage verneinen.
  2. Installation des Compilers. In diesen Einführung wird der Cosmic 32K Compiler verwendet. Während der Installation des Compilers muss man eigentlich bis zum Ende immer nur mit Ok bestätigen. Nach erfolgreicher Installation wird man gefragt, ob man schon eine Lizenz besitzt oder nicht. Wenn man noch keine (Free-)Lizenz besitzt muss man sich unbedingt registrieren. Auch für die kostenlose Lizenz ist eine Registrierung nötig, sonst kann man den Compiler nicht benutzten. Außerdem braucht man für jeden Rechner eine extra Lizenz. Alle Felder die mit einem * makiert sind, müssen ausgefüllt werden. Anschließen schickt man die Registrierung ab, indem man mit "Register by Email" bestätigt. Hat man auf dem Rechner kein E-Client installiert und benutzt statt dessen ein Webmaildienst, so muss man auf auf "Write to File" klicken, dieses dann als z.B. reg.txt abspeichern und dessen Inhalt an die Email Adresse stm8_32k@cosmic.fr verschicken.

[Bearbeiten] Einrichten des ST Visual Develop

Um das erste Programm zu schreiben öffnet man das ST Visual Develop (ähnlich dem AVR Studio). Leider sieht es nach dem Starten noch relativ leer aus. Doch das soll sich bald ändern!

Als erstes klickt unter File (Linke obere Ecke, erster Menüpunkt) auf New Workspace. Danach öffnet sich ein kleines Fenster. Hier wählt man das Arbeitsverzeichnis des ST Visual Develop aus. Dieses kann für alle Projekte gleich sein.

Wichtig
Im Workspacenamen dürfen keine Leerzeichen vorhanden sein, ansonsten bricht später das Compilieren mit einer Fehlermeldung ab.

Unser erstes Projekt trägt den Namen STM8S_ErstesProgramm. Nachdem man den gewünschten Pfad eingegeben hat, bestätigt man mit "ok" (siehe Bild rechts).

Als nächstes erscheint schon wieder ein Fenster. Hier legt man den Projektnamen und den Projektpfad, am besten ein Unterordner im Workspaceverzeichnis, fest. In unserem Fall nennen wir unsere Projekt "ErstesProgramm" und speichern es im Unterordner "ErstesProgramm" im Workspaceverzeichnis. Nun muss man nur noch die Toolchain definieren. Da wir den Cosmic 32K Compiler benutzen, wählt man unter Toolchain "STM8_Cosmic" aus. Zu guter Letzt muss man dem Programm noch mitteilen in welchem Ordner sich der Compiler befindent. Bei einer Standartinstallation sollte dies der Pfad "C:\Program Files\COSMIC\CXSTM8_32K" sein. Danach kann mit "ok" bestätigt werden.
Ein letztes Fenster erscheint, indem man nur noch den genauen Mikrocontroller Typ, für den man ein Programm schreiben will, auswählen muss. Auf dem STM8S Discovery ist ein STM8S105C6 verbaut. Man muss ihn nur noch in der Liste suchen, auswählen und mit "select" auswählen und "ok" bestätigen.

So endlich ist es geschafft. Man hat den ersten Workspace und das erste Projekt erfolgreich angelegt. Theoretisch könnte man jetzt loslegen zu programmieren. Aber nur theoretisch. Uns fehlt noch eine wichtige Komponente, die uns das Leben erheblich vereinfacht, nämlich die Firmware Libarys von ST.

[Bearbeiten] Firmware Library

Um jetzt weiter machen zu können benötigt man die Datei stm8sfblib.zip von der ST Webseite. Am besten entpackt man diese Datei an einem sicheren Ort. Dabei sollte man 1 Ordner ("FWLib"), sowie eine chm Datei (diese beinhaltet eine sehr ausführliche Dokumentation der Libarys und Beispiele) und ein txt das nicht weiter von Interesse ist, erhalten.

Im Ordner "FWLib" befinden sich der Unterordner "libary" in dem sich im in "inc" alle Header Files und in "src" alle C Files der Libary befinden. Den gesamten Ordner kopieren wir in unseren Workspace "stm8s_ErstesProgramm". Nun wechseln wir wieder zurück ins ST Visual Develop. Am linken Rand sehen wir eine Baumstruktur unseres Projektes. Unsere Projekt besteht zur Zeit aus 3 Ordner ("Source", "Include" und "Externel Dependencies"). Für uns sind nur die ersten beiden von Relevanz. Unter Source befinden sich zur Zeit 2 Dateien. Die "main.c" sowie die "stm8_interrupt_vector.c". "Include" ist leer.

Mit einem Rechtsklick auf "Source" -> New Folder... erstellen wir einen neuen Ordner und benennen diesen "library". Das gleiche wird mit dem "Include" Ordner gemacht.

Auf den gerade letzten erstellen Ordner machen wir wieder einen Rechtklick -> Add Files to Folder... und fügen alle Dateien und "library/inc" hinzu. Jetzt müssen wir nur noch die "stm8s_conf.h" zu unserem Projekt hinzufügen. Man findet diese Datei unter dem Pfad "FWLib\project" und kopiert sie dann in den Projektordner und fügt sie dem Projekt wie im oberen Schritt, aber nicht unter "Include\library", sondern einfach nur unter Include hinzu. Jetzt sollte die Baumstruktur wie im Bild aussehen.

[Bearbeiten] Erstes Programm

Jetzt ist es endlich so weit. Wir können loslegen unsere erstes Programm zu schreiben. Es soll nichts weiter tun als die Led auf dem STM8S Discovery blinken zu lassen.

Da wir hierfür einen GPIO (General Purpose I/O, also einen Pin den wir sowohl als Eingang als auch Ausgang schalten können) benutzen wollen, müssen wir, um die GPIO Funktionen benutzen zu können, die GPIO Library "stm8s_gpio.c" importieren. Die Datei finden wir unter "Libary\src" und fügen sie unter "Source\library" hinzu (Siehe Bild). Nun müssen wir nur noch die GPIO Library in der "stm8s_conf.h" aktivieren. Dazu entfernen wir die Kommentarzeichen in der Zeile:

/* #define _GPIO (1) */
So das in der Zeile nur noch folgendes steht: 
   #define _GPIO (1) 

In der Regel werden alle Librarys die man verwenden möchte, auf diese Weise in ein bestehendes Programm importiert. Dabei ist zu beachten, das nur Librarys die benutzt werden, zu importieren und in der "stm8s_conf.h" zu aktivieren sind. Ansonsten kann es beim Compilieren zu Fehlern kommen.

Die Main Routine des ersten Programms:

#include "stm8s.h"                                               // (1)
 
main()                                                           // (2)
{
	GPIO_DeInit(GPIOD);                                      // (3)
	GPIO_Init(GPIOD, GPIO_PIN_0,GPIO_MODE_OUT_PP_LOW_SLOW);  // (4)
	
	while (1){
		
		u16 i;                                           // (5)
	
		for(i = 0; i < 60000; i++){                      // (6)
			nop();                                   // (7)
		}
		
		GPIO_WriteReverse(GPIOD, GPIO_PIN_0);            // (8)
	}
}
  1. In der ersten Zeile (1), wird eine sogenannte Header-Datei eingebunden. In ihr sind alle Registername, die man zur Programmierung des STM8S braucht definiert. Header-Dateien haben immer die Endung ".h", woran sie einfach zu erkennen sind. Die "stm8s.h" bindet selbst die "stm8s_conf.h" ein, in der wiederrum, die aktivierten Librarys eingebunden werden. Sodass nur immer nur eine Header Datein eingebunden werden muss, anstatt vieler, was das ganze Programm übersichtlicher macht.
  2. In der Zeile (2) beginnt das eigentliche Programm. Jedes Programm in C beginnt mit der main Funktion.
  3. Bei (3) wird der der GPIO Port D zurückgesetzt beziehungsweise in den Resetzustand (nährer Informationen zu diesem Zustand kann im Datenblatt gefunden werden) gebracht.
  4. Nach dem der GPIO Port D zurückgesetzt wurde, wird er bei (4) initalisiert. Der Pin 0 wird definiert als:
    1. Ausgang
    2. Push Pull Driver
    3. Mit dem Potenzial Low
    4. Im Slow Modus, er wird mit 2 Mhz angesteuert

[Bearbeiten] Siehe auch

STM8

[Bearbeiten] Weblinks

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net