26-LCD_VGA-Mode-Library (STM32F429)

Mit dieser Library kann anstelle vom internen LCD-Display vom STM32F429-Discovery
ein externer Monitor (im VGA-Mode) angeschlossen werden.

Benötigt wird ein R2R-DAC mit diskreten Widerständen.
Einen Schaltplan (für die 8bit-Version) findet ihr weiter unten.

Bei meinen Tests habe ich den R2R-DAC parallel zu dem eingelöteten Display angeschlossen (das hat funktioniert). Besser wäre es natürlich das LCD von der
Platine runterzulöten. Könnt ihr machen wie ihr wollt, kaputt geht nichts.

Auch habe ich hier nur einen 8bit R2R-DAC. Eigentlich kann ein 16bit DAC angeschlossen werden. Mit 8bit sind nur 256 Farben möglich, die Library unterstützt aber die vollen 65535 Farben.

Die VGA-Auflösung ist 640 x 480 Pixel @60Hz . Im H-File kann eingestellt werden
welche Auflösung und Ausrichtung das dargestellte Bild haben soll.
Mode-0 = 640 x 480 Pixel
Mode-1 = 320 x 240 Pixel
Mode-2 = 240 x 320 Pixel
Im Mode 1 und 2 wird das Bild zentriert auf dem Monitor angezeigt. Außenrum ist
dann ein schwarzer Rahmen.

Im Mode 1+2 ist die Library identisch mit meiner LCD-Library.

Alle Programme die für das LCD geschrieben sind,
laufen also auch auf dem VGA-Monitor.
(event. müssen include Namen angepasst werden z.B. bei der FONT-Library)

Hinweis : alle Funktionen die direkt in das Grafik-RAM schreiben
(also die DrawPixel-Funktion umgehen) müssen angepasst werden,
weil die Speicheranordnung anders ist als auf dem LCD-Display.

Der Mode-0 braucht 4mal so viel Speicherplatz im SDRAM
und hat andere maximum Koordinaten für X/Y.
Beim ersetzen von der LCD-Library muss das berücksichtigt werden.

Schaltplan (8bit-Version) :

vga_stm32f429

Benutzte Pins :

1
2
3
4
5
6
7
8
R7=PG6    G7=PD3    B7=PB9
R6=PB1    G6=PC7    B6=PB8
R5=PA12   G5=PB11   B5=PA3
R4=PA11   G4=PB10   B4=PG12
R3=PB0    G3=PG10   B3=PG11
R2=PC10   G2=PA6    B2=PD6
 
HSync=PC6,  VSync=PA4

Voraussetzungen :

1
2
Benutzte Module der CooCox-IDE : GPIO, LTDC 
Benutzte Librarys : STM32_UB_SDRAM

Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//--------------------------------------------------------------
// File     : main.c
// Datum    : 30.11.2014
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F429
// IDE      : CooCox CoIDE 1.7.4
// GCC      : 4.7 2012q4
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der VGA-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
// In Configuration diese Define hinzufügen :
// "STM32F429_439xx" , "__ASSEMBLY__" , "USE_STDPERIPH_DRIVER"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_lcd_vga.h"
#include "stm32_ub_font.h"
 
int main(void)
{
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // init fuer VGA-Monitor
  UB_LCD_InitVGA();
  UB_LCD_LayerInit_Fullscreen();
  // auf Hintergrund schalten
  UB_LCD_SetLayer_1();
  // Hintergrund komplett mit einer Farbe füllen
  UB_LCD_FillLayer(RGB_COL_WHITE);
  // auf Vordergrund schalten
  UB_LCD_SetLayer_2();
  // Vordergrund komplett mit einer Farbe füllen
  UB_LCD_FillLayer(RGB_COL_GREEN);
 
  UB_Font_DrawString(10,10,"Arial-10x15",&Arial_10x15,RGB_COL_BLACK,RGB_COL_WHITE);
 
  while(1)
  {
 
  }
}

Hier die Library zum Download :

lcd_vga_f429_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_F429_26


3 Antworten auf 26-LCD_VGA-Mode-Library (STM32F429)

  1. Tamer SAFAK sagt:

    Hello, congratulations Uwe, how 16 bits schematic should be,

    I wish you continued success,

    • admin_ub sagt:

      VGA needs a voltage between 0,0V and 0,7V (with 75 Ohm impedance).
      And if you know : U=I*R you can calculate this on your own i think.

      • Tamer SAFAK sagt:

        I am mechanical engineer :)


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert