Mehrere SPI TFT Displays an Mikrocontroller

Gast #6610789
Lesenswert?

Moin zusammen.
Ich bin confused, vielleicht könnt Ihr mir helfen. Wahrscheinlich sehe 
ich den Wald vor lauter Bäumen nicht.

Zunächst was ich vor habe:
20 Mini Displays (240x240px) hintereinander schalten so das ich ein 
Gesamtbild von 4800x240px erhalte.
Es sollen keine Videos oder aufwendige Animationen laufen, nur ein 
bisschen geblinke und evtl. mal ein Text.
Es geht sich um ein Modelbau Projekt.

Ich habe also erwartungsvoll 20 Mini Displays (ZJY IPS130-v2  240x240  
IC DT7789 / SPI) gekauft
https://naltronic.de/displays/oled/610/1-3-zoll-ips-oled-display-modul-240x240-pixel-rgb-tft-lcd-bord-st7789-3.3v
und da ich mir viele Videos angesehen hatte, erstmal einen Multiplexer 
TCA9548A zum testen.


Was ich jetzt erst verstanden habe ist das der Mutiplexer I2C ist und 
die Displays SPI - das funktioniert also nicht.

Nach weiteren lesen habe ich verstanden das über den SPI Bus mehrere 
Geräte geschaltet werden können und diese dann über CS angesprochen 
werden.
Schön, nur die Displays haben kein CD sondern nur SDA  SCL  DC / RST 
(und VCC/GND/BCL).

Als Board hätte ich Mega2560  ESP8266  ESP32 zur Verfügung.

Nur ich komme gerade echt nicht weiter - vielleicht suche ich auch 
einfach nach einem falschen Ansatz bei meiner Recherche. Die Displays 
selber bekomme ich ohne Probleme zu laufen, auch mehrere am selben 
"Port, zeigen dann natürlich alle das gleiche an.

Ich danke Euch....
#6610856
Lesenswert?

Marko Knoche schrieb:
> Moin zusammen.
> Ich bin confused,

#metoo
Früher (tm) war man in Germanien verwirrt. So ändern sich die Zeiten
#globalisation
#ihatemylanguage

> vielleicht könnt Ihr mir helfen. Wahrscheinlich sehe
> ich den Wald vor lauter Bäumen nicht.

A common problem.

> Zunächst was ich vor habe:

> Ich habe also erwartungsvoll 20 Mini Displays (ZJY IPS130-v2  240x240
> IC DT7789 / SPI) gekauft
> 
https://naltronic.de/displays/oled/610/1-3-zoll-ips-oled-display-modul-240x240-pixel-rgb-tft-lcd-bord-st7789-3.3v
> und da ich mir viele Videos angesehen hatte, erstmal einen Multiplexer
> TCA9548A zum testen.

Why?

> Was ich jetzt erst verstanden habe ist das der Mutiplexer I2C ist und

Indeed my dear!

> die Displays SPI - das funktioniert also nicht.

BINGO!

> Nach weiteren lesen habe ich verstanden das über den SPI Bus mehrere
> Geräte geschaltet werden können und diese dann über CS angesprochen
> werden.

You'r my hero!

> Schön, nur die Displays haben kein CD sondern nur SDA  SCL  DC / RST
> (und VCC/GND/BCL).

Iam sure, that those pins can be used as CS, when SPI mode is enabled.
RTFM works wonders!

https://www.alldatasheet.com/view.jsp?Searchword=ST7789

> Als Board hätte ich Mega2560  ESP8266  ESP32 zur Verfügung.

They will work just fine. Beside the 3 major IOs SCK, MISO and MOSI all 
you need is love, I mean, 20 outputs for 20 chip selects. If you want to 
save precious pins on your controller, the 74HC138 is your friend (1 out 
of 8 decoder/selector). Three of them allow you to control 24 chip 
selects using only 5 IOs.

> Nur ich komme gerade echt nicht weiter - vielleicht suche ich auch
> einfach nach einem falschen Ansatz bei meiner Recherche. Die Displays
> selber bekomme ich ohne Probleme zu laufen, auch mehrere am selben
> "Port, zeigen dann natürlich alle das gleiche an.

You are almost there! Hang on!

See SPI for further readings.

> Ich danke Euch....

You'r welcome!
Falk
Gast #6610876
Lesenswert?

SPI wäre schon richtig, aber CS muss vorhanden sein. Die Controller 
haben das, es ist aber nicht immer herausgeführt. Bei 20 Displays ist 
das viel Fummelei da vom FFC eine zusätzliche Leitung anzulöten, da 
sucht man besser ein passendes Displaymodul aus.
Gast #6610877
Lesenswert?

Marko Knoche schrieb:

> Ich habe also erwartungsvoll 20 Mini Displays (ZJY IPS130-v2 / 240x240 /
> IC DT7789 / SPI) gekauft
> 
https://naltronic.de/displays/oled/610/1-3-zoll-ips-oled-display-modul-240x240-pixel-rgb-tft-lcd-bord-st7789-3.3v

Da ist kein Datenblatt sondern nur ein Bildchen das man vergrößern 
kann....

Und - lies Dich in I2C und SPI ein und Du wirst dann eh recht schnell 
selber verstehen das Du keinen I2C-Mux brauchst sondern ein bischen 
Hirnschmalz wie man die nötigen /CS für das Display (wenn es denn 
wirklcih SPI ist) erzeugt...
Gast #6610888
Lesenswert?

Thanks, Danke, Merci, Gracias ;)
Ok- ich habe ein paar Bäume gefällt und sehe etwas Licht.
Das mit dem 74HC138 ist dann der nächste Schritt.
Ich weiß das ich für jedes Display einen CS benötige oder den über so 
einen Chip halt steuern kann, so war es ja mit dem TCA9548 vorgesehen, 
hätte nur mal wissen müssen das es verschiedenen Sachen gibt, also SPI 
und I2C.
Egal - Leergeld ;)
Ich habe eben eine Grafik gefunden wo die PinOuts des Displaykabels 
beschrieben sind.

https://de.aliexpress.com/item/32867668144.html?src=google&albch=shopping&acnt=494-037-6276&isdl=y&slnk=&plac=&mtctp=&albbt=Google_7_shopping&aff_platform=google&aff_short_key=UneMJZVf&&albagn=888888&isSmbAutoCall=false&needSmbHouyi=false&albcp=1705854617&albag=67310370915&trgt=743612850714&crea=de32867668144&netw=u&device=c&albpg=743612850714&albpd=de32867668144&gclid=Cj0KCQiA7YyCBhD_ARIsALkj54og2taHIgaJkE_H8_q1gMnV66X1YZo4p_tv-5K3dMr69hwoxmbwL30aAiXDEALw_wcB&gclsrc=aw.ds

Smit hat Pin8 CS - aber dann muß ich an dem Display löten ?

Puhhh
Angehängte Dateien:
#6610891
Lesenswert?

Falk B. schrieb:
> Iam sure, that those pins can be used as CS

RTFM ist ein guter Hinweis. Aber ein CS muss man sich bauen.
Die Seite des Händlers ist mehrdeutig. Er schreibt von 4-Draht-SPI 
Interface, laut Foto hat das Ding aber nur 3 Drähte. Und ein FM gibt es 
bei ihm auch nicht. Der Controller kann vieles - aber fest verdrahtet.
Lange Rede, wenig Sinn: Fehlkauf.
#6610960
Lesenswert?

Es scheint, dass bei dem Display der CS-Pin aus Platzgründen weggelassen 
wurde. Von dem Display gibt's auch eine 1,54"-Version, bei der etwas 
mehr Platz für diese Pinreihe ist, und dort ist der CS-Pin dann auch 
vorhanden.

Falk B. schrieb:
> Marko Knoche schrieb:
>> Smit hat Pin8 CS - aber dann muß ich an dem Display löten ?
>
> Du hast es erkannt. Wie das Ding ohne CS funktioniert grenzt an ein
> Wunder.

Warum? CS ist der "chip select". Wen das Display keinen CS-Anschluss 
hat, ist der Chip halt immer "selected".
#6610985
Lesenswert?

Rolf M. schrieb:
>> Du hast es erkannt. Wie das Ding ohne CS funktioniert grenzt an ein
>> Wunder.
>
> Warum? CS ist der "chip select". Wen das Display keinen CS-Anschluss
> hat, ist der Chip halt immer "selected".

Ja, aber richtige SPI-Slave führen einen Befehl immer  nur dann aus, 
wenn CS wieder auf HIGH geht. Bei dem Controller wird das schon nach der 
richtigen Anzahl Datenbytes gemacht, auch wenn CS dauerhaft auf LOW 
liegt. Dann darf sich SPI aber nie verschlucken, denn sonst kommt es aus 
dem Tritt. Mit einer regelmäßigen Syncronisation über CS passiert das 
nicht bzw. wird es bei der nächsten Übertragung sofort korrigiert.
#6611535
Lesenswert?

Ähm, bin ich doof?
SDA und SCL sind I2C-Signale. Es sieht so aus, als ob die Displays über 
I2C angesprochen werden und die Beschreibung im Shop (4-Draht SPI) 
falsch ist.
Mit SPI hätte man das leicht lösen können, aber bei I2C wird es 
schwierig, wenn die Adresse nicht änderbar ist. Mehr wird das Datenblatt 
des Controllers verraten.

Falk B. schrieb:
> Ja, aber richtige SPI-Slave führen einen Befehl immer  nur dann aus,
> wenn CS wieder auf HIGH geht. Bei dem Controller wird das schon nach der
> richtigen Anzahl Datenbytes gemacht, auch wenn CS dauerhaft auf LOW
> liegt. Dann darf sich SPI aber nie verschlucken, denn sonst kommt es aus
> dem Tritt. Mit einer regelmäßigen Syncronisation über CS passiert das
> nicht bzw. wird es bei der nächsten Übertragung sofort korrigiert.
Ob HIGH oder LOW hängt von der Polarität ab, meistens ist es umgekehrt: 
Der Slave fühlt sich nur angesprochen, wenn Slave Select auf LOW ist.

Ob sich der Controller des Slaves verschluckt, kommt auf den Controller 
an. Mit dem ersten Clock kennt der Controller die Taktrate. Wenn der 
Controller schlau ist, hat er intern ein Timeout, wenn einer oder mehr 
Takte fehlen. Dann geht das eigentlich genau so gut wie ohne Slave 
Select. Allerdings lässt sich dann natürlich der Slave dennoch nicht 
einfach so auswählen, das geht nur mit Zusatzbeschaltung.

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