HUB08 oder HUB12 interface für LED Matrix

Gast #4371763
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ß
Persönliche Seite #4371777
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.
Angehängte Dateien:
Persönliche Seite #4372959
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
Gast #4373667
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?
Persönliche Seite #4374937
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

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