Displays mit integriertem Controller + SPI - Wo?

OP #4748482
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
Gast #4748491
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).
OP #4748493
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).
#4748494
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.
Gast #4748511
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.
Gast #4748515
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.
#4748517
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.
Gast #4748523
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.
Gast #4748526
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.
#4748588
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.
Gast #4748600
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
Gast #4748610
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.
Gast #4748618
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
Gast #4748746
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"
Gast #4749692
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
Gast #4749725
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.

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