STM8S Minimumboard + SSD1306 OLED Display

OP #4844502
Lesenswert?

Immer wieder einmal spiele ich mit dem STM8S103 Controller herum, dieses 
mal habe ich ein SSD1306 OLED Display mit SPI Schnittstelle angebunden 
(eigentlich wollte ich aus China ein I2C Display haben, da wußte ich 
allerdings noch nicht, dass es diese Teile mit beiden Interfaces gibt 
und aus der Beschreibung nicht klar hervorgeht, WELCHE gemeint ist, von 
daher: Bilder des Displays genauer ansehen, meines hat inkl. der 
Betriebsspannungsversorgung 7 Anschlüsse).

Als sinnvolleres Demo habe ich ein Uhrenprogramm auf dem STM8 
geschrieben. Dieses "Demo" benötigt zum Betrieb:

- STM8S103F3P6 Minimumboard (2 Stck. 1,30Euro)
- 2 Schließertaster + Pullupwiderstände
- 1 47k NTC + 10k Vorwiderstand
- 16 MHz Quarz + 2 Stck. 27pF Ziehkondensatoren

Der verwendete Compiler ist SDCC ab Version 3.5, das Programmingtool ist 
ein ST-LINKv2 Chinaclone.

Das ganze ist ein Editor-Make Projekt unter Linux.

Die angehängte Zip-Datei in ein Verzeichnis der Wahl entpacken, dort ein 
Script ausführen:

                    ./makepcrogs

Dieses erstellt ein Flashprogramm für den ST-Linkv2 sowie ein 
Miniprogramm zum Anzeigen des benötigten Flashspeichers des Programs

Anschließend kann make ausgeführt werden, folgende Optionen sind 
verfügbar:

make all    ------  erstellt der Hexdatei der Uhr
make clean  ------  loescht alle von make erstellten Dateien
make flash  ------  programmiert das STM8S103 Minimumboard mit der 
erstellten Hexdatei

Taster 1 ruft den "Uhr stellen Modus" auf, anschließend kann mit Taster 
2 die Uhrzeit und das Datum eingestellt werden.

Anzeige der Uhr:

- Uhrzeit in digital und analog
- digitale Temperaturanzeige
- Wochentag (So, Mo, Di, Mi, Do, Fr, Sa)
- Datum

Wer es nachbauen mag oder das Softwaremodul zum Betrieb des Displays 
gebrauchen kann, kann sich gerne bedienen. Die Softwaremodule sollten 
hinreichend mit Kommentaren versehen sein,

viel Spaß,

Ralph
Angehängte Dateien:
Gast #4844815
Lesenswert?

Ralph S. schrieb:
> eigentlich wollte ich aus China ein I2C Display haben,

Der Controller kann beides. Schau mal in das Datenblatt des SSD1306, da 
ist eine Tabelle mit den Ansteuermodi drin. I2C braucht weniger 
Anschlüsse als SPI und darum hast du dann auch die nötigen I2C Signale. 
Hast also das bessere Display gekauft.
Gast #6222834
Lesenswert?

Ich weiss, es ist ein alter Beitrag. Da ich auch anfange mich mit dem 
STM8S10x zu beschäftigen, fand ich das Projekt sehr gut. Gibt es 
bestimmte Dinge zu beachten, wenn ich auf ein I2C Display umstelle? 
Klar, ich muss I2C zum Laufen bringen. Dafür habe ich aber schon 
Code-Beispiele. An den Befehlssequenzen für das Display ändert sich doch 
prinzipiell nichts, richtig?

Gruss, Andreas
Gast #6233472
Lesenswert?

Andy79881 schrieb:
> Ich weiss, es ist ein alter Beitrag. Da ich auch anfange mich mit
> dem
> STM8S10x zu beschäftigen, fand ich das Projekt sehr gut. Gibt es
> bestimmte Dinge zu beachten, wenn ich auf ein I2C Display umstelle?
> Klar, ich muss I2C zum Laufen bringen. Dafür habe ich aber schon
> Code-Beispiele. An den Befehlssequenzen für das Display ändert sich doch
> prinzipiell nichts, richtig?
>
> Gruss, Andreas

Hinweis : der Quellcode lässt sich ohne Probleme mit Platformio 
compilieren. Es ist wirklich erstaunlich, wie gut das Ganze 
funktioniert, kein kompliziertes Makefile, nur das richtige Board und 
den Programme in der platformio.ini ausgewählt!
Mein Problem mit der Umsetzung auf I2C ist leider noch nicht gelöst :-(
Gast #6233476
Lesenswert?

Andy79881 schrieb:
> Andy79881 schrieb:

> Hinweis : der Quellcode lässt sich ohne Probleme mit Platformio
> compilieren. Es ist wirklich erstaunlich, wie gut das Ganze
> funktioniert, kein kompliziertes Makefile, nur das richtige Board und
> den Programmer in der platformio.ini ausgewählt!
> Mein Problem mit der Umsetzung auf I2C ist leider noch nicht gelöst :-(

Korrektur: Compiliert wird mit sdcc. Die Toolchain wird von Platformio 
bereitgestellt, soballd ein entsprechendes Board ausgewählt wurde.
OP #6252435
Lesenswert?

schön zu lesen, dass das auch mit PlattformIo compilierbar ist (und 
verrückt, dass mein Beitrag hier schon 4 Jahre her ist).

Ich habe mit dem STM8 überhaupt keine fertige Lib verwendet und es 
dürfte etwas Anpassung von Nöten sein, weil ich die Registernamen des 
STM8 so genommen habe wie ich sie im Datenblatt vorgefunden hatte.

Vllt. probierst du zu erst ein "BitBanging I2C" aus (auch wenn das 
langsam ist).

By the way: Wenn das von Interesse ist, ich habe mittlerweile eine .c / 
.h Kombination geschrieben, mittels derer zwischen 2 monochromen 
Displays ausgewählt werden kann: PCD8544 (Nokia Display 84x48) und eben 
diesem SSD1306 (hier kann dann umgeschaltet werden zwischen SPI und I2C 
Interface).

Wenn das von Interesse ist, werde ich das hier einstellen
OP #6268013
Lesenswert?

... so auf die Schnelle lade ich dir hier mal die aktuelle Software für 
monochrome Displays auf SSD106 oder PCD8544 hier hoch.

Im Moment sind meine Prioritäten anderst als STM8 gelagert (ich kämpfe 
mit einer eingene Linux Slackware/Porteus Live-Distribution ... von der 
ich gerade aus schreibe).

Deshalb hier nur kurz:

Im Zip-Archiv ist alles enthalten, was zum Übersetzen eines 
Demoprogrammes (aber halt unter Linux bei installiertem SDCC Compiler) 
notwendig ist.

Eine Beschreibung habe ich noch nicht, aber sollte an sich alles per 
Kommentaren in den Quellen dokumentiert sein. Zum Anpassen eines 
Displays mußt du in ./include die Datei tftmono.h editieren um sie an 
deine Hardwareverdrahtung anzupassen.

In pinouts.txt kannst du die Anschlussbelegung eines einzelnen 
Controllers und der Displays sehen (und wie Display und Controller 
miteinander zu verbinden sind).

Ob meine Software ein SSD1309 kann (oder nicht) weiß ich nicht, weil ich 
kein Display mit diesem Controllertyp zur Verfügung habe. Hier gilt 
schlicht: ausprobieren !
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren