Forum: Mikrocontroller und Digitale Elektronik Displays mit integriertem Controller + SPI - Wo?


von Max M. (maxmicr)


Lesenswert?

Guten Morgen,

ich bin auf der Suche nach einem kleinen TFT-Display (so zwischen 0.9 - 
2.2 Zoll) das mit einem integrierten Controller daherkommt, dieser 
sollte mit SPI programmierbar sein (warum? SPI kann man notfalls auch in 
Software machen, falls das Hardware-Modul mal wieder spinnt). Touch 
brauche ich nicht. Bis jetzt hab ich nur so eines hier liegen: 
http://www.ebay.de/itm/1-44-Serial-ILI9163-128X128-SPI-Farb-TFT-LCD-Display-fur-Arduino-Raspberry-Pi-/181931185121

Das Datenblatt des ILI9163 ist gruselig, den Code muss man sich im 
Internet zusammenklauben und die Initialisierung besteht aus 200 Zeilen. 
Eigentlich suche ich sowas nur mit verständlicherem Datenblatt. Gibts 
das?

Grüße

von Wolfgang (Gast)


Lesenswert?

Max M. schrieb:
> ich bin auf der Suche nach einem kleinen TFT-Display (so zwischen 0.9 -
> 2.2 Zoll) das mit einem integrierten Controller daherkommt

Hast du auch irgendwelche Vorstellungen über die 
Auflösung/Farbe(ja/nein)/Farbauflösung oder ist das alles egal?

von Arduinoquäler (Gast)


Lesenswert?

Max M. schrieb:
> Das Datenblatt des ILI9163 ist gruselig

So ein Display kann so einiges, daher muss man es entsprechend
spezifizieren und beschreiben. Das Datenblatt ist - wie die
anderen aus der ILI**** Serie - in Ordnung. Nur du musst dich
vielleicht daran gewöhnen mit solch einem Teil umzugehen.

Max M. schrieb:
> den Code muss man sich im Internet zusammenklauben

Bis jetzt gab es noch für jedes Display in der Kategorie
"Arduino" das auf den Markt gekommen ist eine Lib für den
Arduino die man ohne viel Denkarbeit verwenden konnte.

Wenn du allerdings ohne Arduino Framework auskommen willst
dann must du etwas mehr Gehirnschmalz investieren. Aber auch
dann kann man sich zumindest an den vorgefertigten Libs
orientieren (wenn man selbst was schreiben will).

von Max M. (maxmicr)


Lesenswert?

Wolfgang schrieb:
> Hast du auch irgendwelche Vorstellungen über die
> Auflösung/Farbe(ja/nein)/Farbauflösung oder ist das alles egal?

Ist alles egal. Ich möchte nur kein gruseliges Datenblatt mehr haben ^^

Wobei TFT ja schon mit Farbe wäre. Kann von mir aus aber auch ein OLED 
oder LCD sein. Es gibt ja so kleine 0.96" OLED-Displays für wenig Geld, 
die sind aber alle nur mit I²C programmierbar (außer man verkabelt das 
rohe Display selber).

von Helmut L. (helmi1)


Lesenswert?

https://de.aliexpress.com/item/Wholesale-1PC-2-2-Inch-240-320-Dots-SPI-TFT-LCD-Serial-Port-Module-Display-ILI9341/1755410916.html?spm=2114.13010608.0.0.khzTJX&detailNewVersion=&categoryId=400401

2.2 Zoll.

Treiber dazu findet man im Netz genug.

Max M. schrieb:
> den Code muss man sich im
> Internet zusammenklauben und die Initialisierung besteht aus 200 Zeilen.

Die kopiert man in seinem Code rein und gut ist. War eigentlich kein 
Problem das Teil in Betrieb zu nehmen.

von BeastyK (Gast)


Lesenswert?


von Arduinoquäler (Gast)


Lesenswert?

BeastyK schrieb:
> Unnnd bitteschön:
> Ebay-Artikel Nr. 272292794530

Diese Displays sind (aus seiner Sicht) alle mit dem gleichen
"Problem" behaftet ....

von Max M. (maxmicr)


Lesenswert?

Gibts denn keine Displays mit Datenblättern die so gut strukturiert sind 
wie die von Atmel?

von Helmut L. (helmi1)


Lesenswert?

Arduinoquäler schrieb:
> Diese Displays sind (aus seiner Sicht) alle mit dem gleichen
> "Problem" behaftet ....

Ja, echt Schei.... das man die Teile programmieren muss.... :=)

von Johannes S. (Gast)


Lesenswert?

Mit der ug8 oder Adafruit Grafik Lib bekommt man doch so ziemlich alle 
gängigen Displays angesteuert. Bei größeren wird es mit 1-Bit seriell zu 
langsam, deshalb wirst du da eher parallele Interfaces finden. Oder 
Intelligente wie bei iTead Nextion zB.

von Max M. (maxmicr)


Lesenswert?

Helmut L. schrieb:
> Ja, echt Schei.... das man die Teile programmieren muss.... :=)

Ich hatte damals, als ich mich mit dem ILI9163 rumgeärgert habe, einen 
Beitrag eröffnet und da konnte mir keiner erklären, wie man denn nun die 
Initialisierung aus dem Datenblatt heraus bekommt.

von Arduinoquäler (Gast)


Lesenswert?

Max M. schrieb:
> Gibts denn keine Displays mit Datenblättern die so gut strukturiert sind
> wie die von Atmel?

Ich sehe da keinen grossen qualitativen Unterschied. Es ist
alles nur anders. Wenn ATMEL Displays bauen würde müssten sie
es auch so machen.

Allenfalls ist die technische Ausdrucksweise der Ostasiaten
manchmal gewöhnungs- bzw verbesserungsbedürftig.

von Helmut L. (helmi1)


Lesenswert?

Max M. schrieb:
> Ich hatte damals, als ich mich mit dem ILI9163 rumgeärgert habe, einen
> Beitrag eröffnet und da konnte mir keiner erklären, wie man denn nun die
> Initialisierung aus dem Datenblatt heraus bekommt.

Ich hatte einfach die Lib von Adafruit genommen, etwas modifiziert und 
dann lief es.

Max M. schrieb:
> Gibts denn keine Displays mit Datenblättern die so gut strukturiert sind
> wie die von Atmel?

Das sind Chinesen, da gibt es so gut wie keine dicken Datenblaetter. 
Dafuer sind die Teile dann Spottbillig.

von BeastyK (Gast)


Lesenswert?

Arduinoquäler schrieb:
> BeastyK schrieb:
> Unnnd bitteschön:
> Ebay-Artikel Nr. 272292794530
>
> Diese Displays sind (aus seiner Sicht) alle mit dem gleichen
> "Problem" behaftet ....

Also der TO hat als Chipsatz den ILI9163 angegeben. Mein genanntes 
Display hat den Chipsatz ST7735S, total anders.

MfG
dat
Beast

von Wolfgang (Gast)


Lesenswert?

Max M. schrieb:
> Ist alles egal. Ich möchte nur kein gruseliges Datenblatt mehr haben ^^

Graphik soll es aber schon können oder reicht ein 96x16 mit fest 
integriertem Charaktergenerator und HD44780 Controller? Dafür gibt es 
Bibliotheken wie Sand am mehr und du musst dich nicht mit dem Lesen von 
Datenblättern rumquälen.

von Arduinoquäler (Gast)


Lesenswert?

Max M. schrieb:
> und da konnte mir keiner erklären, wie man denn nun die
> Initialisierung aus dem Datenblatt heraus bekommt.

Braucht man auch nicht wenn man den (Initialisierungs-) Code
nimmt den einmal einer geschrieben hat.

Und wer das nicht will muss sich eben haarklein mit der Physik
bzw des inneren Aufbaus dieses Displays auseinandersetzen
um die Einstellparameter zu finden.

von Arduinoquäler (Gast)


Lesenswert?

BeastyK schrieb:
> Mein genanntes
> Display hat den Chipsatz ST7735S, total anders.

Ja schon klar, schlaf weiter.

von BeastyK (Gast)


Lesenswert?

Arduinoquäler schrieb:
> BeastyK schrieb:
> Mein genanntes
> Display hat den Chipsatz ST7735S, total anders.
>
> Ja schon klar, schlaf weiter.

Schön lieb sein!
Ich werd ja auch nicht pampig.
Das Datenblatt ist ja wohl mal anders und im Netz kann der TO sich mit 
Libs totwerfen.

von Max M. (maxmicr)


Lesenswert?

Benutzt ihr diese OLED 0.96" Displays mit I²C? Sowas währe für 
Controller mit wenigen Pins (z.B. den Tiny85) ganz nett. Nur hat der 
kein I²C...

von Elecrow (Gast)


Lesenswert?

Max M. schrieb:
> Es gibt ja so kleine 0.96" OLED-Displays für wenig Geld,
> die sind aber alle nur mit I²C programmierbar (außer man verkabelt das
> rohe Display selber).

http://www.ebay.de/itm/1-3-SPI-Serial-128X64-OLED-LCD-Display-Screen-Modul-fuer-Arduino-UNO-R3-51-/272357856004?_trksid=p2141725.m3641.l6368

von BeastyK (Gast)


Lesenswert?


von Helmut L. (helmi1)


Lesenswert?

Max M. schrieb:
> Benutzt ihr diese OLED 0.96" Displays mit I²C? Sowas währe für
> Controller mit wenigen Pins (z.B. den Tiny85) ganz nett. Nur hat der
> kein I²C...

Und? Dann mancht man sich den I2C halt in Software, wo ist das Problem?

von Max M. (maxmicr)


Lesenswert?

Helmut L. schrieb:
> Dann mancht man sich den I2C halt in Software, wo ist das Problem?

Das war meine indirekte Frage, geht sowas denn? Immerhin gibt es sowas 
wie Bit Stretching des Slaves falls es ihm zu schnell wird. Das kann man 
per Software ja eher schlecht beachten / abfragen?

von Arduinoquäler (Gast)


Lesenswert?

Max M. schrieb:
> Nur hat der kein I²C...

Hier geht's wieder chaotisch quer durch den Gemüsegarten ...

Na was jetzt .... I2C oder SPI oder was?

Max M. schrieb:
> Displays mit integriertem Controller + SPI

von Arduinoquäler (Gast)


Lesenswert?

Max M. schrieb:
> Das kann man
> per Software ja eher schlecht beachten / abfragen?

Doch kann man.

von Helmut L. (helmi1)


Lesenswert?

Max M. schrieb:
> Das war meine indirekte Frage, geht sowas denn? Immerhin gibt es sowas
> wie Bit Stretching des Slaves falls es ihm zu schnell wird. Das kann man
> per Software ja eher schlecht beachten / abfragen?

Der Tiny ist doch der Master und bestimmt das Timing. Ist ueberhaupt 
kein Problem. Das ist auf die schnelle sogar einfacher als Hardware I2C.
Solange der Controller an einem Pin wackeln kann, geht auch Software 
I2C.
Dann braucht man sich noch nicht mal ins Datenblatt zum Hardware I2C 
einzulesen.

von Olaf (Gast)


Lesenswert?

> Der Tiny ist doch der Master und bestimmt das Timing.

Nein. Zumindest theoretisch koennte ein Slave die Clockleitung 
runterziehen wenn er mehr Zeit braucht. Aber natuerlich koennte man das 
auch in Software erkennen und darauf reagieren. Allerdings kann ich mich 
jetzt nicht erinnern jemals mit einem I2C-Slave gearbeitet zu haben das 
dies macht. Von daher wuerde ich das nicht ueber bewerten.

> Das ist auf die schnelle sogar einfacher als Hardware I2C.

Das stimmt natuerlich. Vor allem weil man sich sowas nur einmal 
programmiert und dann den Rest des Lebens auf allen Controllern 
verwenden kann. Gerade bei I2C hat man das schneller in Betrieb genommen 
als bis man bei manchem Controller die I2C-Engine verstanden hat.
Problem ist aber eventuell das SoftI2C mehr Rechenzeit kostet. Muss man 
abwaegen. Gerade das Display hab ich normalweise in einem niedrig 
priorisierten Interrupt laufen. (printf schreibt nur in einen buffer) Da 
kann soetwas schon etwas weh tun wenn man nicht die Bits einzeln in 
einem TimerIRQ rauswerfen will.

Olaf

von Arduinoquäler (Gast)


Lesenswert?

Olaf schrieb:
> Da
> kann soetwas schon etwas weh tun wenn man nicht die Bits einzeln in
> einem TimerIRQ rauswerfen will.

Das ist im I2C Fall unerheblich da der I2C Bus langsamer ist als
der Prozessor.

Im Software-Fall braucht man Delays um das Timing einzuhalten,
im Hardware-Fall muss man (im Interrupt-Kontext) darauf warten
dass die I2C-Maschine fertig ist.

von Max M. (maxmicr)


Lesenswert?


von Arduinoquäler (Gast)


Lesenswert?

Max M. schrieb:
> ist der SSD1306, oder?

Der ist sicher auch so "gruselig", kein bisschen besser.

Max M. schrieb:
> Das Datenblatt des ILI9163 ist gruselig

von Olaf (Gast)


Lesenswert?

> Im Software-Fall braucht man Delays um das Timing einzuhalten,

Ich hab mich bemueht zu erklaeren warum das schlecht ist und was man tun 
kann damit man das nicht muss. Aber das hast du nicht verstanden oder?

Olaf

von Stromverdichter (Gast)


Lesenswert?

> Max M. schrieb:
>> Das Datenblatt des ILI9163 ist gruselig
Ich hatte mal an einem Framework für den Chipsatz ST7735S programmiert 
und hatte mir vorher die LIB zum ILI9263 von Lady ADA angeschaut um zu 
verstehen, was so alles in die Lib gehört. Die eigentlich 
zugrundeliegenden Funktionen sind doch immer die gleichen. Ich glaube, 
kennst du einen, kennst du alle.
Im wesentlichen musst du nur eine Initialisierung schreiben, den 
Schreibpunkt im RAM setzen können und die Rohdaten rausschreiben können. 
Der Rest ist bei allen Frameworks dann gleich.
Alles lässt sich im Prinzip auf eine Routine reduzieren->
"Zeichne ein Pixel mit der Farbe "0xff31" mit der Koordinate "x/y"

von Max M. (maxmicr)


Lesenswert?

Danke für euren hilfreichen Antworten!

Ich denke, ich hol mir ein OLED Display und versuche I²C per Software 
auf nem Tiny85 nachzubauen. Das Datenblatt sieht gar nicht so schlimm 
aus: https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf :D

: Bearbeitet durch User
von Achim (Gast)


Lesenswert?

Dic

Olaf schrieb:
> Allerdings kann ich mich jetzt nicht erinnern jemals mit einem I2C-Slave
> gearbeitet zu haben das dies macht. Von daher wuerde ich das nicht ueber
> bewerten.

Doch, ist üblich. Zu erkennen an den "hier drei nops sonst spinnt der 
Chip"- Kommentaren im master-code

von Johannes S. (Gast)


Lesenswert?

Den SSD1306 kann man soweit ich weiss in diesen Varianten ansteuern:
- direkt in den Framebuffer des SSD1306 schreiben
- in einen Frambebuffer im RAM des µC zeichnen und dann den kompletten 
FB übertragen

Beides hat Vor- und Nachteile, letzere Variante braucht mehr RAM (1 kB 
für den FB). Das passt nicht in den Tiny85, deshalb aufpassen wenn du 
ein Lib nimmst. Vielleicht erstmal mit einem grösseren Mega328 anfangen 
damit du nicht gleich wegen Speichermangel tricksen musst.

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.