Forum: Mikrocontroller und Digitale Elektronik VGA Shield für STM32F429-Disco


von Markus H. (dasrotemopped)


Angehängte Dateien:

Lesenswert?

nach dem Motto, egal welches Display am uC, es könnte größer sein habe 
ich mal ein VGA Shield für das STM32F429-Disco improvisiert. Da der 
integrierte TFT Controller maximal 800x600 Pixel erlaubt habe ich das 
mal ausgereizt. Die Software zum Initialisieren wurde von CubeMX 
erzeugt, kompiliert habe ich anschliessend mit der 32k Version von Keil. 
Das die Umsetzung mit Widerständen und 1N4148 Diode sehr preiswert ist 
kann das vielleicht noch jemand anders interessieren ...
Jetzt muss ich mich nur noch etwas tiefer in die STM Libs einarbeiten 
damit mehr als nur ein blaues Hintergrundbild zu sehen ist.

Gruß,

dasrotemopped.

: Bearbeitet durch User
von sgg (Gast)


Lesenswert?

Gerne auch ein DVI-Shield (o.ä.) :-)

von Markus H. (dasrotemopped)


Lesenswert?

DVI ist vorgemerkt ...

von Sebastian V. (sebi_s)


Lesenswert?

Hast du einen Schaltplan davon? Wofür brauchst du die Dioden? Mit den 
Widerständen alleine müsste man doch schon einen einfachen DAC 
hinkriegen.

von Markus H. (dasrotemopped)


Angehängte Dateien:

Lesenswert?

hier ist der Schaltplan und die Berechnung dazu. Die 1N4148 Dioden 
werden benötigt, damit ein Pin, der auf low geschaltet ist, nicht die 
Spannung einbrechen lässt. Ist halt kein R2R-DAC. Es muss für das VGA 
Signal von 0 bis 0,7 Volt gewandelt werden, das Disco Board läuft mit 
3,0V . Bei R2R ist der Pegel zu hoch, also musste ich es anders lösen. 
Das VGA Farbsignal hat nicht nur eine Impedanz von 75 Ohm, sondern auch 
einen ohmschen Widerstand von 75 Ohm (mit dem Multimeter leicht zu 
überprüfen, R/G/B zu Gnd). Es ist im Prinzip nur ein Spannungsteiler, 
dessen Teilerverhältnis durch das Zuschalten von mehr Leitungen geändert 
wird. Die Gewichtung der Bits kommt durch die verschiedenen 
Widerstandswerten zu Stande. Da der VGA Port einen fixen Widerstand hat 
müssen die anderen Werte darauf angepasst werden.
Das Ganze ist eine unendliche Reihe mit 100% (10mA) = 50% + 25% + 12,5% 
+ ..
Da aber nicht unendlich viele Bauteile verwendet werden muss eine 
endliche Reihe benutzt werden. Der Rest wird anteilsmässig auf alle 
Widerstände aufgeschlagen, damit der Vollausschlag von 0,7 Volt erreicht 
wird. Da der errechnete Widerstand in keiner E-Reihe zu finden ist habe 
ich den Wert mit je 2 Widersänden in Serie angenähert.
Im Schaltplan habe ich 8 Bit eingesetzt, das Disco Board hat aber nur 
RGB- 6/6/6, ist also einfacher wie in der Berechnung zu sehen. Alle 
Bautele sind übrigens auf der sichtbaren Seite, auf der Rückseite sind 
nur ein paar Leitungen mit Silberdraht gezogen.
Als Diode habe ich die 1N4148 genommen, da das VGA Signal bei 800x600 
mit 40 MHz taktet und die Diode ohne Verzögerung durchschalten muss. 
Beim Nachbau muss man das beachten. Die 1N4148 hat da noch etwas 
Reserve.

Gruß,

dasrotemopped.

die Bildqualität einer Grafikkarte erreicht man damit nicht, aber zum 
Proggen und experimentieren reicht es.

von Sebastian V. (sebi_s)


Angehängte Dateien:

Lesenswert?

Danke für den Schaltplan. Ich arbeite gerade an etwas ähnlichem. Kein 
VGA Shield aber auch VGA Ausgabe mit dem STM32F429. Die Dioden sind eine 
interessante Idee, allerdings frage ich mich ob Parameter wie Forward 
Voltage überhaupt mit 1% Genauigkeit im gewünschten Bereich liegen. Mein 
DAC (siehe angehängten Schaltplan) besteht nur aus Widerständen und ich 
habe natürlich berücksichtigt, dass wenn Pins auf Low sind man einen 
zusätzlichen Widerstand zu Ground hat. Gegen die 75 Ohm zu Ground im 
Bildschirm ändern 300 Ohm parallel aber auch kaum etwas. Der 40 kOhm ist 
erst recht nicht mehr im feststellbaren Bereich. Ich habe die zu 
erwartende Pixelintensität als Graph angehängt. Sieht für mich linear 
genug aus. Das ist jetzt noch mit den idealen Widerständen, die es so 
nicht gibt und mit Werten aus der E96 Reihe (wie im Schaltplan) ist es 
etwas schlechter, aber noch gut genug.

Deine Serienwiderstände finde ich auch etwas fraglich. Übliche 
Widerstände haben ja 1% Toleranz und bei 40k2 Ohm sind das ja schon 402 
Ohm. Die 121 Ohm in Reihe dazu werden da nicht viel Unterschied machen. 
Meiner Meinung nach macht so ein R2R-DAC mit 1% Widerständen nur bis 
etwa 6 Bit Sinn.

Markus Horbach schrieb:
> Das VGA Farbsignal hat nicht nur eine Impedanz von 75 Ohm, sondern auch
> einen ohmschen Widerstand von 75 Ohm (mit dem Multimeter leicht zu
> überprüfen, R/G/B zu Gnd).

Das ist ja gerade die Terminierung der Signale im Bildschirm. Ich habe 
mich dazu entschlossen auch meine Ausgänge mit ~75 Ohm zu terminieren, 
falls doch noch Signale vom Bildschirm zurück reflektiert werden. Der 
tatsächliche Widerstand zu GND hängt natürlich wieder davon ab welche 
Pins auf Low sind, und liegt irgendwo zwischen 60-100 Ohm.

von Markus H. (dasrotemopped)


Lesenswert?

ich habe mal in einer anderen Schaltung den selben DAC ohne Dioden 
verwendet und da war beim Übergang von 0b01111111 nach 0b10000000 ein 
deutlicher Einbruch der Spannung zu sehen. vor und nach diesem Punkt war 
der Spannungsanstieg linear, aber zueinander versetzt. Natürlich ist der 
Drop an der Diode vom Stromfluss abhängig, aber bei 0 bis 5 mA sollte 
der Drop konstant bleiben. So bald ich ein Testbild mit Farbverlauf habe 
werde ich dazu ein paar Messungen machen.
Gegen einen Video DAC kann diese Lösung natürlich nicht bestehen, aber 
es soll ja ein schneller und preiswerter Hack sein ...
Bei zusätzlichen Terminierungswiderständen habe ich immer einen Einbruch 
in der maximalen Helligkeit festgestellt und darauf verzichtet.

Gruß,

dasrotemopped.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Markus Horbach schrieb:
> das Disco Board läuft mit
> 3,0V .

Wenn ihr dauerhaft darauf verzichten könnt, die 3V auch extern 
einzuspeisen, könnt ihr D3 (BAT60J) durch eine Drahtbrücke ersetzen und 
das Board mit den stabilen 3,3V des Reglers U1 versorgen. Das bringt 
nicht nur eine bessere Helligkeit des TFT-Displays und 0,3V mehr, 
sondern auch eine wesentlich sauberere Vcc des gesamten Systems. Ich 
habs bei meinem Disco jedenfalls gemacht, nachdem ich die Specs der 
verschiedenen Chips und des Displays geprüft hatte, und seitdem in 
meiner Anwendung (Tragbares Oszilloskop) viel weniger Störungen.
D3 wird auch ganz schön warm, da fliessen nämlich die gesamten 150-160mA 
durch. Ich habe deswegen auch den U1 mit einem kleinen Kühlblech 
versehen.

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