Hallo allerseits,
nachdem mir sowohl Forum als auch Seite hier schon unzählige Male
geholfen haben, muss ich nun doch meinen ersten Beitrag hier erstellen.
Ich versuche mit einem LPC3250 ein 320x240 Display anzusteuern
(https://www.glynshop.com/erp/owweb/Daten/DSS/EDT/Products/Specifications/Active%20Displays/ET0350G0DH6.pdf)
Das klappt auch alles soweit, einziges Problem ist dass die Ecken nicht
stimmen. Der erste Pixel links oben fängt 4 Pixel weiter rechts an, das
gesamte Bild ist also um 4 Spalten verschoben.
Das LCD ist folgendermaßen initialisiert:
1 | LCD_CFG = 0x31; // Enable HCLK. Divider = 17 von 104MHz? = 6,1MHz DotClock
|
2 |
|
3 |
|
4 | LCD_CTRL = 0x26; //TFT 8-Bit Palette
|
5 |
|
6 |
|
7 | LCD_POL = (0x01 << 26)|(319 << 16)|(0x01 << 14)|(0x01 << 13)|(0x01 << 12)|(0x01 << 11);
|
8 | //Bypass pixel clock divider | 320 clocks per line | invert: panel clock, h clock, v clock
|
9 | LCD_TIMH = (67<< 24)|(19 << 16)|(87<<8 )|(19 << 2);
|
10 | //Back porch = 68 clk | Front porch = 20 clk | Pulse width = 128 clk | Size = (19 + 1)*16 = 320 px
|
11 | LCD_TIMV = (18 << 24)|(4 << 16)|(3 << 10)|(239);
|
12 | //Back porch = 18 px | Front porch = 4 px | Pulse with = 3 px | Size = 240 px
|
13 | LCD_UPBASE = GetFrameBufferDisplay() & 0xfffffff8;
|
14 | LCD_LPBASE = GetFrameBufferDisplay() & 0xfffffff8;
|
In folgendem Thread behandelte die erste Antwort direkt mein Problem,
war dort allerdings nicht weiter von Belang:
Beitrag "LCD Timings - SVGA - LPC2478"
Von daher nehme ich an dies ist vielleicht ein häufig gemachter Fehler?
Ich hab das Programm nicht selber geschrieben, sondern versuche nur
Fehlerbehebung, also habt Erbarmen mit einem Anfänger ;)
MfG