Forum: Mikrocontroller und Digitale Elektronik Mehrere SPI TFT Displays an Mikrocontroller


von Marko Knoche (Gast)


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....

von Falk B. (falk)


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

von Johannes S. (Gast)


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.

von MiWi (Gast)


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...

von Marko Knoche (Gast)


Angehängte Dateien:

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

von Georg G. (df2au)


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.

von Falk B. (falk)


Lesenswert?

Das SDA und SCL sind KEINE I2C Signale am Modul, sondern die SPI-Signale 
des COntroller-ICs, welcher NUR SPI kennt. Wie es scheint haben die 
Knalltüten aber das CSX Signal vergessen . . .

von Falk B. (falk)


Lesenswert?

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.

von Th. Schuler (Gast)


Lesenswert?

Hier hat jemand das CS Signal rausgeführt:
https://www.instructables.com/Adding-CS-Pin-to-13-LCD/

von Marko Knoche (Gast)


Lesenswert?

Th. Schuler schrieb:
> Hier hat jemand das CS Signal rausgeführt:
> https://www.instructables.com/Adding-CS-Pin-to-13-LCD/

Uff, das würde ja ne Mamutaufgabe bei 20 Displays
Aber dennoch danke

von Falk B. (falk)


Lesenswert?

Marko Knoche schrieb:
> Uff, das würde ja ne Mamutaufgabe bei 20 Displays

Du kennst aber kleine Mamuts . . .
Wenn man das einmal gemacht hat, ist das in 5min erledigt. Macht 100min 
für 20 LCDs. Ich glaube du hast schon deutlich mehr Zeit für deutlich 
sinnlosere Dinge verschwendet.

von Marko Knoche (Gast)


Lesenswert?

Wenn das Problem mit meinen dicken Fingern nicht wäre ;)

von Rolf M. (rmagnus)


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".

von Falk B. (falk)


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.

von Terence S. (takeshi)


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.

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

Benutze einen (oder mehrere) Demultiplexer (aka 74xx138) um den Takt 
(SCL) nur an eins der Displays durchzuschalten!

Damit sollten die sich selektiv ansprechen lassen.

: Bearbeitet durch User
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.