Forum: Projekte & Code VGA Ausgabe per STM32F4 Discovery-Board


von Uwe B. (derexponent)


Lesenswert?

Hallo,

ich hab jetzt endlich die Library fertig mit der man ein VGA-Signal mit 
dem STM32F4 Discovery Board erzeugen kann.

Der VGA-Mode ist 640x480 @60Hz, wobei aber nur 320x240 Pixel angezeigt 
werden (weil nicht genug RAM in der CPU vorhanden ist)

die Farbtiefe ist bei meiner Version bei 8bit (RGB332) wobei auch 
weniger oder mehr theoretisch machbar sind

es werden 2 Timer (TIM1 und TIM2) und der DMA2 (CH6,Stream5) benutzt

ich hab allerdings keinen zweiten Bildpuffer eingebaut, beim zeichnen 
von bewegten sachen wird es also zwangsläufig zu "Bildfehlern" kommen
(da werd ich vermutlich noch was dagegen machen)

bei mit läuft es unter CooCox auch ohne Optimierungsstufe 
zufriedenstellend, allerdings "an der Grenze"...da müsst ihr aber selber 
mit rumspielen

hier der Link :

http://mikrocontroller.bplaced.net/

von Lothar (Gast)


Lesenswert?

Wow hätte nicht gedacht dass das möglich ist. Wenn VGA unbedingt nötig 
war haben wir das sicherheitshalber auf ein FPGA ausgelagert z.B. 
https://www.olimex.com/Products/Modules/Video/MOD-VGA-32MB

Inzwischen nehmen wir aber MC mit LCD-Controller plus RGB-VGA oder 
RGB-HMDI Converter-Chip z.B. LPC4088 
http://www.nxp.com/products/microcontrollers/cortex_m4/LPC4088FBD144.html

von Uwe B. (derexponent)


Lesenswert?

Hi Lothar,

ich hab es auch mehr aus "Spass an der Freude" implementiert, wirklich 
perfekt ist es nicht

z.B. stimmt der Pixeltakt nicht genau weil mit dem 168MHz-Clock kein 
Teiler auf 25,175MHz (bzw. 12,58MHz) möglich ist

und ich hab auch nicht getestet was passiert, wenn die CPU was anderes 
zeitkritisches parallel machen muss

und für Bilder sind die 8bit Farbetiefe auch "Grenzwertig"

aber ... who cares :-)

von Marius S. (lupin) Benutzerseite


Lesenswert?

Hier haben die auch VGA über den F4 gemacht. Zeigt schön was der F4 
drauf hat und vom Code kann man noch einiges lernen:

http://pouet.net/prod.php?which=59095

von vampire (Gast)


Lesenswert?

--gute Arbeit, Uwe!

von vampire (Gast)


Angehängte Dateien:

Lesenswert?

-als Ergänzung, vielleicht brauchbar!

von vampire (Gast)


Angehängte Dateien:

Lesenswert?

- oder mit dem AD725 als chinch-Buchse;

von Uwe B. (derexponent)


Lesenswert?

@Marius S,

>Zeigt schön was der F4 drauf hat

ja, davon bin ich überzeugt...man muss es halt programmieren können :-)
und ich war noch nie der GrafikFreak
bzw. ich stell ja nur die "Grundgerüste" zur verfügung ..."rausred"


@vampire,

deine Schaltungen versteh ich nicht ganz

Bild 1. SCART :

was ist PB0 (Pin20) für ein Signal bzw. wie muss das aussehen ?



Bild 2. FBAS :

was ist 4FSC (Pin3) für ein Signal bzw. wie muss das aussehen ?



ich vermute da sind die Timings komplett anders (PAL = 50Hz)


Gruss

von vampire (Gast)


Lesenswert?

-beides sind Schaltungsauszüge zur UZE-/Fuze-Box, wie sie hier im Forum 
vor Jahren mal veröffentlicht wurden.
Ich habe sie nur wegen ihrer Ähnlichkeit zu deiner VGA-Ausgabe, quasi 
als
weitere Möglichkeit, hier aufgezeigt.
s.a.:
Beitrag "Re: (F)UZE-Box Zusatzmodul für AVR NET-IO"

Uwe B. schrieb:
> Bild 1. SCART :
>
> was ist PB0 (Pin20) für ein Signal bzw. wie muss das aussehen ?

-nehme an Hsync;

Uwe B. schrieb:
> Bild 2. FBAS :
>
> was ist 4FSC (Pin3) für ein Signal bzw. wie muss das aussehen ?

Ich habe die Schaltungen damals aufgebaut. Soweit ich mich erinnere, war 
es ein ATmega644 mit 27,xx Mhz übertaktet.
Dürfte schwierig sein, für den AD725 die erforderlichen Signale zu 
generieren --
Auch dies dürfte passend sein:
http://www.jcwolfram.de/projekte/avr/chipbasic2/hard.php
1.2 Farbversion (SCART)

von vampire (Gast)


Lesenswert?

-Nachtrag:
PB0 ist das BAS-Signal. gebildet aus Hsyn+Pixelfrequ.;

4FSC Clock Input.
For NTSC: 14.318 180 MHz.
For PAL: 17.734 475 MHz.

über Timer/counter zu generieren.
Aber, wie Du schon bemerkt hast (in deinen Erläuterungen), -nicht so 
einfach zu erzeugen --

von vampire (Gast)


Lesenswert?

- ah, am besten, Du vergisst alles ab
Beitrag "Re: VGA Ausgabe per STM32F4 Discovery-Board"
-geht sooo nicht -- !!!

von Uwe B. (derexponent)


Lesenswert?

ich hol den Thread noch mal hoch
um ein Demovideo von einem User zu verlinken

da sieht man was mit der VGA-Lib alles möglich ist
(wenn man es kann :-)

http://www.youtube.com/watch?v=axJRn_WZFY0

Gruss Uwe

von josef f. (Gast)


Lesenswert?

Echt fotzengeil!

von Dr. Sommer (Gast)


Lesenswert?

Uwe B. schrieb:
> bei mit läuft es unter CooCox auch ohne Optimierungsstufe
Warum eigentlich immer ohne? Die GCC-Optimierungen bewirken kleine 
Wunder, während ohne diese der generierte Code ziemlich gruselig ist (so 
stehen gerne die gleichen Instruktionen 5x hintereinander da, wo 1x 
gereicht hätte). Und präzise Delays sollte man onehin nicht mit 
C-Delay-Loops machen...

von Uwe B. (derexponent)


Lesenswert?

nochmal um ein Missverständnis auszubügeln

das Video (und der Youtube Account) ist NICHT von mir !!
sorry, wenn das falsch verstanden wurde

von sdfsdf (Gast)


Lesenswert?

sssssssssssssssss

von Fabrice (Gast)


Lesenswert?

Uwe B. schrieb:
> das Video (und der Youtube Account) ist NICHT von mir !!

Hallo alle ;)

Diese Video ist von mir und mit als Basis der Video Treiber Uwe auf 
seine Seite gibt.
Ist nicht mit cocoox aber mit keil kompiliert.
Alle Graphik Funktionen habe ich vom meine TFT Treiber konvertiert das 
die
auch mit dem VGA Treiber funktioniere.
Diese Demo lauft auf eine HY-STM32F407Core144 mit 8Mb PSRAM onboard.
Aktuell ist noch viel zu tun das alle graphische Funktion alle zusammen
funktioniere konnte und die Sprite ich gerade integrierte habe 
funktioniere gut ;)
Ab ende muß das alles eine kleine graphics game Kernel sein , ich werde 
auch noch
paar Video in Youtube machen wenn ich so weit bin.

Tschuss.

Fabrice.
PS : sorry für meine schlechte Deutsch ;)

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.