Forum: Mikrocontroller und Digitale Elektronik HUB08 oder HUB12 interface für LED Matrix


von Eugen.S (Gast)


Lesenswert?

Hallo zusammen,

ich bin gerade dabei diese LED Matrix an einem ATmega128 in Betrieb zu 
nehmen.
Hier ein Link zu dem Panel:

http://www.seeedstudio.com/depot/Ultrathin-16x32-Red-LED-Matrix-Panel-p-1582.html

Nun bin ich im Internet auf den Begriff HUB08 Interface gestoßen.
Habe google gefragt, aber nichts brauchbares gefunden.

Kenn einer von euch dieses Interface?

Gruß

von Torsten C. (torsten_c) Benutzerseite


Angehängte Dateien:

Lesenswert?

Eugen.S schrieb:
> Kennt einer von euch dieses Interface?

Ja, die PIN-Belegung ist auf dem verlinkten Bild auf dem PCB 
aufgedruckt.

Über A, B, C und D wählst Du eine Zeile, über Clock schiebst Du die Bits 
für Rot (R1) und ggf. Grün (G1) in die Schieberegister und mit 
Latch-Enable (Strobe) schaltest Du sie auf die Ausgänge durch.

Damit es beim Umschalten nicht flackert, schaltest Du mit OE die 
Ausgänge kurzfristig aus.

Hier für RGB ganz gut beschrieben:

https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/new-wiring

PS: Der ATmega128 ist natürlich gut beschäftigt, ständig die Matrix mit 
Daten zu "befeuern". Ich hatte mich daher bei einer WordClock für einen 
STM32 mit DMA entschieden.

: Bearbeitet durch User
von Eugen.S (Gast)


Lesenswert?

Danke für den Link!

Gruß

von Eugen.S (Gast)


Lesenswert?

Eine Frage noch:

Hast du die Ansteuerung selbst implementiert oder die Bibliothek benutz, 
die Sie für Ardruino erstellt haben?

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Eugen.S schrieb:
> Hast du die Ansteuerung selbst implementiert oder die Bibliothek benutz,
> die Sie für Ardruino erstellt haben?

Die Ardruino-Lib arbeitet nicht mit DMA und belastet die CPU.

Bei Ardruino kann ich Dir leider nicht helfen.

Und ohne DMA wird es auch eng, mit verschiedenen Helligkeits-Stufen, 
ohne dass die Matrix flimmert, wenn man als Betrachter z.B. mit den 
Augen rollt (vergleiche flackende KFZ-LED-Rücklichter).

Oder willst Du keine Helligkeitsstufen, sondern nur an/aus?

Die STM32-Routinen von Frank (ukw) für die WordClock24h sind für 
WS2812 und daher musste ich einige Routinen anpassen und die Bits für 
den DMA-Sendbuffer anders 'zusammen würfeln'.

Deine Matrix ist monochrom und Du brauchst nur "R1" per MOSI über SPI 
ansteuern, ggf. und wenn Du willst über einen DMA-Kanal.

Bei der RGB-Matrix für die WordClock war das aufwendiger: Sechs serielle 
Daten-Signale mit einem gemeinsamen Clock und es gab - je nach µC - 
verschiedene Möglichkeiten, DMA mit SPI oder mit Bit-Banging umzusetzen.

Für die WordClock musste ich die DMA-Kanäle entsprechend konfigurieren 
und ISR-Routinen schreiben. Den Code hatte ich bei Moritz Diller 
(woisdiekatze) abgeschrieben:
http://www.diller-technologies.de/stm32.html#dma

: Bearbeitet durch User
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ich habe bereits Arduino Nano mit einer 16x32 LED-Matrix und der 
Adafruit-Lib eingesetzt, allerdings hatte die LED-Matrix ein sog. 
"HUB75"-Interface.

Läuft trotz der bescheidenen Hardware-Leistung gut, vom RAM blieben ca. 
800 Byte frei, vom ROM ca. 5k - also genug, um z.B. eine Uhr zu 
realisieren oder - wie ich - einen Datenempfang per Ethernet oder USB.

von Eugen.S (Gast)


Lesenswert?

Ich will die LED-Matrix als Anzeige von RS-232 Befehlen nutzen. Dabei 
sollen paar zeichne auf einer 16x16 Fläche je nach seriellem Befehl 
dargestellt werden. Die andere 16x16 Hälfte zeigen sie Einstellung eines 
Kodierschalters an. Also eigentlich nicht viel.

Die Helligkeit soll nicht über den µC geregelt werden. Diese soll 
Konstant sein und ggf über ein Poti geregelt werden. PWM wollte ich 
jetzt nicht noch mit dem µC realisieren, obwohl das wahrscheinlich auch 
noch ginge.

Dann wäre der Controller wahrscheinlich auch gut beschäftigt.

Was mir noch nicht ganz klar ist, wie ich die Ansteuerung der 2 mal 
16x16 unabhängig voneinander realisiere. Was ich bis jetzt weiß ist, 
dass ich über SPI zwei befehle senden muss und den Schieberegister 
entsprechend zwei Mal ansteuern muss. Muss ich dann das Register 3-4 mal 
ansteuern bevor ich dann die Anzeige ansteuere? Habe ich es so richtig 
verstanden?

Sind die HUB Schnittstellen genormt?

Und meine Matrix hat noch einen Anschluss mit G1. Wofür ist der da? Ein 
B1 habe ich nicht, da es auch keine RGB Matrix ist. Ist G1 evtl. ein 
Überbleibsel der RGB Variante?

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Eugen.S schrieb:
> Was mir noch nicht ganz klar ist, wie ich die Ansteuerung der 2 mal
> 16x16 unabhängig voneinander realisiere.

Der Controller befeuert ständig die Matrix mit Daten aus dem 
"Grafik-RAM", quasi wie eine PC-Grafikkarte über einen DVI-Ausgang, nur 
mit einem ganz anderen Protokoll.

Um eine "unabhängige Ansteuerung" zu erreichen schreibst Du Deine 
Pixel-Daten in die RAM-Teile für die linke bzw. für die rechte 
"Bildschirmhälfte".

> Muss ich dann das Register 3-4 mal ansteuern bevor ich dann die Anzeige
> ansteuere? Habe ich es so richtig verstanden?

Ständig befeuern heißt:

1. Vier Bytes für eine Pixel-Zeile über MOSI an "R1" raus schieben
   (oder 4 mal ansteuern, wie Du es formulierst).
   Wenn Du weniger Bytes sendest, wird die "daisy chain" nicht komplett
   überschrieben und es ergibt "Pixel-Müll"

2. OE auf disable

3. Über A, B, C und D (binär) die nächste der 16 Zeilen auswählen

4. Strobe auslösen

5. OE auf enable

6. Mit den Pixel-Daten der nächsten Zeile (wieder 4 Bytes) bei (1.)
   weiter machen.

… und das alles ohne Jitter usw. mit einem durchgehend exakten Timing 
ohne Pausen, sonst flackert das Bild.

> Sind die HUB Schnittstellen genormt?

Es gibt dazu kein Norm-Blatt (ISO, DIN, IEC, …).
linsnled.com hat einen "Quasi-Standard" gesetzt.

> G1. Wofür ist der da?

Für zweifarbige Rot-Grün-Matrizen und einen SPI mit zwei Bits parallel 
bei gemeinsamen Clock.

Eugen.S schrieb:
> Ein B1 habe ich nicht, da es auch keine RGB Matrix ist.

RGB hat i.d.R. 6 Bits parallel mit gemeinsamen Clock: R1 G1 B1 R2 G2 B2

: Bearbeitet durch User
von Eugen.S (Gast)


Lesenswert?

Vielen Dank für die Erklärung Torsten!

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.