Forum: Projekte & Code STM8S Minimumboard + SSD1306 OLED Display


von Ralph S. (jjflash)


Angehängte Dateien:

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

von Johannes S. (Gast)


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.

von Ralph S. (jjflash)


Lesenswert?

Ich weiß, dass er beides kann, aaaaaber: lt. Aufdruck auf der Platine 
müssen hierfür Widerstände ab und wo anderst eingelötet werden und ich 
weiß nicht, welche Werte.

Bei Gelegenheit werde ich das aber auch ausprobieren...

Dennoch danke für die Info

von yesitsme (Gast)


Lesenswert?

Um das OLED auf I2C umzustellen muss man vermutlich R3 auf R1 umlöten 
und R8 mit 0Ohm brücken.


Schau dir mal die Beiträge von Beniwo da an:
http://forum.banggood.com/forum-topic-73061.html

von Andy79881 (Gast)


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

von Andy79881 (Gast)


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 :-(

von Andy79881 (Gast)


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.

von Ralph S. (jjflash)


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

von Andy79881 (Gast)


Lesenswert?

Ich habe Interesse... ;-)
Noch eine Frage zum OLED 128x64 Display. Ich habe ein tolles allerdings 
mit SSD1309 gefunden. Das müsste doch prinzipiell auch funktionieren, 
richtig? Ich habe mal hier geschaut:

https://github.com/Sylaina/oled-display

Danach gibt es von den Kommandos her keine Unterschiede.

Gruss,
Andreas

von Ralph S. (jjflash)


Angehängte Dateien:

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 !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.