Forum: Mikrocontroller und Digitale Elektronik Ansteuerung von mehreren LED-Module RGB 32x64


von Laspalmas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich habe vor 4 RGB china Matrix-Module (32x64) in einer Reihe mit einem 
STM32H743 anzusteuern. Das blöde an diese Module, die 3 SPI-Clocks für 
die RGB-Kanäle sind alle miteinader verbunden (Kopfschütteln).
Wären die Clocks getrennt, könnte ich eine SPIs für jede Farbe spenden 
also 3xSPIs und somit alle 3 Farben bequem ansteuern.
Habt ihr Vorschläge wie die Ansteuerung aussiehen kann? (die Idee alle 
RGB-Kanäle miteinander zu verbinden ist einfach hässlich und bringt 
eventuel Probleme mit sich wegen der Länge der Leitungsrückführungen).
Gruß
Laspalmas

von Harry L. (mysth)


Lesenswert?

R,G und B sind garantiert nicht verbunden - sonst wären die Module 
defekt.
Das sind die Eingänge für die Schieberegister.

Tip: vergiss SPI und nutz F(S)MC um die SR zu füttern!
Das funktioniert wunderbar (getestet!)

Bei 4 Panels würde ich die trotzdem in einer 2x2-Anordnung betreiben.
Mit 8bit-FSMC kannst du dann mit 1 Schreibzugriff gleichzeitig jewils 
ein Bit in alle 6 SR der beiden Reihen schieben.

: Bearbeitet durch User
von Laspalmas (Gast)


Lesenswert?

@Harry
Danke für die schnelle Antwort. Es klingt interessant. FMC missbrauchen 
als multiple SPI Hardware! kannst du ein bischen mehr erzählen wie du 
das geschafft hast? FMC konfiguriert als 8-Bit, Was ist mit dem clock? 
wie hoch ist der Takt? usw.
Danke.

NB: ich schrieb: die 3 SPI-Clocks für die RGB-Kanäle sind alle 
miteinader verbunden.
Gemeint: Die Clocks sind miteinander intern verbunden und nicht 
Serial-Out.

Gruß

von Harry L. (mysth)


Lesenswert?

Du benutzt einfach das /WR-Sigal als Takt um die Daten in das SR zu 
schieben.
Wenn D0-D5 mit den entsprechenden RGB-Inputs verbunden sind, shiftest du 
mit jedem Schreibzugriff auf die konfigurierte Adresse jeweils ein Bit 
in jedes der 6 SR-Register.
Das geht dann -praktischer weise- auch mit DMA

Meinen Code kannst du dir hier anschauen:
Den wirst du vermutlich nicht 1:1 übernehmen können, da der für ein 1:8 
Display ist. Lt. Foto hast du ein 1:16-Display.
https://cloud.it-livetalk.de/index.php/s/wER9nHKwXLCwTZ3

Viel Erfolg!

: Bearbeitet durch User
von Laspalmas (Gast)


Lesenswert?

@Harry
vielen Dank für den Source-code. Erstmal muss dein code analysieren.
Gruß

von Harry L. (mysth)


Lesenswert?

Wenn du das File ausgepackt hast, kannst du das in der CubeIDE 
importieren.

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.