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
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.
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
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
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
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 :-(
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.
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
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
... 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.