Eve FT800 Grafikunit

Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 526
Registered: 02 / 2007
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 19.10.2018 - 17:39  ·  #33
Super, das sieht klasse aus :-)
Dann frage ich mal:

- Das Define "EVE_SPI", welche Parameter erwartet es?
Ich meine da werden definiert: SPI-Port, CS, Int, PD
CS ist klar, Chipselect, Int wird für den Touchscreen benötigt, wird PD auch verwendet?

- Die Auflösung, wird die mit EVE_Size automatisch richtig gestellt, oder muss man die irgendwo noch angeben?

- Irgendwo habe ich gelesen, dass der Treiber die Kontrolle von 2 Flashchips ermöglicht um Daten zu speichern, da konnte ich nichts weiter drüber finden, wie die angesteuert werden, welche Typen erlaubt sind usw.

- Im Originalhandbuch fangen die meisten Befehle mit CMD_xxx an, z.B. "cmd_button"
Da gibt es von FTDI auch Designer, die das "ausspucken".
Im Treiber haben diese Dinge alle andere Namen wie es scheint, aus cmd_button wird dann FT800_DrawButton, die Parameter scheinen auch anders zu sein.
Gibt es da zufällig eine Liste wie was umbenannt wurde? Das ist wohl das größte Problem, nicht zu wissen wie die Befehle heißen.
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 526
Registered: 02 / 2007
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 19.10.2018 - 18:54  ·  #34
Noch eine Frage: Ich habe mal ein Testbild erzeugt mit einem blauen "DEMO" auf weißem Grund.
Ich speichere es als JPG.
Dann konvertiere ich das zu einem .bin mit den Tools von FTDI, Mode 4 (RGB332)
img_cvt -i 1.jpg -f 4

Das Display zeigt das "DEMO" dann leider in rot an, statt in blau.

Ändere ich die Farbe in Rot, zeigt das Display es in Blau an :-)
Irgendwo werden da also Farben vertauscht. Irgendeine Idee woran das liegen könnte?
rage
Benutzer
Avatar
Gender: n/a
Age: 64
Homepage: processanalytik.de
Posts: 235
Registered: 02 / 2007
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 19.10.2018 - 19:55  ·  #35
Hallo

Quote

Noch eine Frage: Ich habe mal ein Testbild erzeugt mit einem blauen "DEMO" auf weißem Grund.
Ich speichere es als JPG.
Dann konvertiere ich das zu einem .bin mit den Tools von FTDI, Mode 4 (RGB332)
img_cvt -i 1.jpg -f 4

Das Display zeigt das "DEMO" dann leider in rot an, statt in blau.

Ändere ich die Farbe in Rot, zeigt das Display es in Blau an :-)
Irgendwo werden da also Farben vertauscht. Irgendeine Idee woran das liegen könnte?

also die vertauschen Farben sind einstellbar, im Programmierhandbuch der FT8xx findes Du dazu ein paar Sätze.
FT800_Write8(REG_SWIZZLE, DispSwizzle);
Quote
- Das Define "EVE_SPI", welche Parameter erwartet es?
Ich meine da werden definiert: SPI-Port, CS, Int, PD
CS ist klar, Chipselect, Int wird für den Touchscreen benötigt, wird PD auch verwendet?

Ja zwingend, FTDI nennt den Pin PowerDown, als wenn LOW dann schläft der Chip, also so in der Art PowerDown und Reset in einem.
Quote
- Die Auflösung, wird die mit EVE_Size automatisch richtig gestellt, oder muss man die irgendwo noch angeben?

Wenn Das Display passt, ist nix weiter notwendig, aber ich denke das passt nur bei den ersten Demoboards von FTDI, weil die hatte ich in der selber in der Hand. Bei anderen Displays wird Du Type User einstellen müssen und die Variablen:
Code
    FT800_Write16(REG_HCYCLE,  DispHCycle);
DispHOffset
DispHSync0
DispHSync1
DispVCycle
DispVOffset
DispVSync0
DispVSync1
DispSwizzle
DispPCLKPol
DispWidth
DispHeight
DispPCLK

entsprechen ausfüllen, auch dazu Manual lesen.
Quote
- Irgendwo habe ich gelesen, dass der Treiber die Kontrolle von 2 Flashchips ermöglicht um Daten zu speichern, da konnte ich nichts weiter drüber finden, wie die angesteuert werden, welche Typen erlaubt sind usw.

Steht alles im Handbuch vom AvrCO unter Flashchips.
Quote
- Im Originalhandbuch fangen die meisten Befehle mit CMD_xxx an, z.B. "cmd_button"
Da gibt es von FTDI auch Designer, die das "ausspucken".
Im Treiber haben diese Dinge alle andere Namen wie es scheint, aus cmd_button wird dann FT800_DrawButton, die Parameter scheinen auch anders zu sein.
Gibt es da zufällig eine Liste wie was umbenannt wurde? Das ist wohl das größte Problem, nicht zu wissen wie die Befehle heißen.

Nun ich habe ja nicht diese Befehle nachgebaut, sondern komplett alles umgesetzt, zum einem gab es die FTDI-Software damal noch nicht und zum andern wollte ich nicht immer so komplett Listen schreiben, sondern einfach nur ein Widget erzeugen.
Code
{*******************************************************************************}
{Zeichnet ein Button von X,Y Höhe h Breite w, options Caption                   }
{*******************************************************************************}
Function FT800_DrawButton(x, y, w, h, Font, options : Word; Caption : String[16]; Track : Byte) : Boolean;

Ich habe noch die Datei gefunden, die ich an Herrn Hofmann damals geschickt habe, damit er die Hilfe schreiben kann, ich hänge sie hier mit ran.
Ansonsten habe ich Dir meine Telefonnummer geschickt, da kann Du mich gern anrufen bei Frage.

cu rage
Attachments
Hilfsfunktionen, Beschreibung im Datenblatt des FT800

Function Tag(Track : Byte) : LongWord;
Function VERTEX2F(x, y : Word) : LongWord;
Function VERTEX2II(x, y : Word; Handle, Cell : Byte) : LongWord;
Function PrimitiveBegin(Value : Byte) : LongWord;
Function POINT_SIZE(r : Word) : LongWord;
Function CLEAR_COLOR_RGB(r, g, b : Byte) : LongWord;
Function COLOR_RGB(r, g, b : Byte) : LongWord;
Function BITMAP_HANDLE(Handle : Byte) : LongWord;
Function BITMAP_SOURCE(Source : LongWord) : LongWord;
Function BITMAP_LAYOUT(Format : Byte; LineStride : Word; Height : Word) : LongWord;
Function BITMAP_SIZE(Filter, WrapX, WrapY : Boolean; Width, Height : Word) : LongWord;
Function BITMAP_TRANSFORM_A(Value:word):LongWord;
Function BITMAP_TRANSFORM_B(Value:word):LongWord;
Function BITMAP_TRANSFORM_C(Value:Longword):LongWord;
Function BITMAP_TRANSFORM_D(Value:word):LongWord;
Function BITMAP_TRANSFORM_E(Value:word):LongWord;
Function BITMAP_TRANSFORM_F(Value:Longword):LongWord;
Function LINE_WIDTH(Width : Word) : LongWord;
Function RGBTOLong(r, g, b : Byte) : LongWord;
Function CLEAR(C, S, T : Boolean) : LongWord;
Procedure FT800_WriteCMDEnd;
Procedure FT800_CMDUpdate;
Procedure FT800_CheckWritePointer;
Procedure FT800_IncWritePointer(Size : LongWord);
Function FT800_CheckCMDBufferSizeAndWait(Size : Word) : Integer;
Function FT800_CheckCMDBufferSize(Size : Word) : Boolean;
Function CheckFreeSpace : Word;

Procedure FT800_WriteCMD32(Data : LongWord);
Procedure FT800_WriteCMD16(Data : Word);
Procedure FT800_WriteCMD8(Data : Byte);

Procedure FT800_Write32(Adr, Data : LongWord);
Procedure FT800_Write16(Adr : LongWord; Data : Word);
Procedure FT800_Write8(Adr : LongWord; Data : Byte);

Function FT800_SwapDisplaylist : Boolean;

Procedure FT800_FillMemory(Adresse,Count:LongWord);
Füllte den GrafikRAM des FT800 ab Adresse mit der Laenge Count mit dem Wert 0

Wenn ein 3,5 oder 4,3 (5) Zoll-Display benutzt wird initializiert diese Funktion den FT800
Function FT800_BootupConfig:Boolean;
Filename: Beschreibung.txt
Filesize: 10.45 KB
Title:
Download counter: 4
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 526
Registered: 02 / 2007
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 19.10.2018 - 20:22  ·  #36
Oh super, das hilft mir schon sehr weiter, vielen Dank! :bussi:
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 526
Registered: 02 / 2007
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 23.10.2018 - 19:08  ·  #37
Falls noch jemand mit den Riverdi-Displays herumspielt: Die Parameter für das 3,5"-TFT sind
FT800_Write16(REG_HSIZE,320);
FT800_Write16(REG_VSIZE,240);
FT800_Write16(REG_HCycle, 408);
FT800_Write16(REG_VCycle,263);
FT800_Write16(REG_HOffset,70);
FT800_Write16(REG_HSync0,0);
FT800_Write16(REG_HSync1,10);
FT800_Write16(REG_VOffset,13);
FT800_Write16(REG_VSync0,0);
FT800_Write16(REG_VSync1,2);
FT800_Write8(REG_PCLK,6);
FT800_Write8(REG_Swizzle,2);
FT800_Write8(REG_PCLK_Pol,1);

Für das größere 4,3" TFT sind es diese:
FT800_Write16(REG_HSIZE,480);
FT800_Write16(REG_VSIZE,272);
FT800_Write16(REG_HCycle, 548);
FT800_Write16(REG_VCycle,292);
FT800_Write16(REG_HOffset,43);
FT800_Write16(REG_HSync0,0);
FT800_Write16(REG_HSync1,41);
FT800_Write16(REG_VOffset,12);
FT800_Write16(REG_VSync0,0);
FT800_Write16(REG_VSync1,10);
FT800_Write8(REG_PCLK,5);
FT800_Write8(REG_Swizzle,0);
FT800_Write8(REG_PCLK_Pol,1);
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 526
Registered: 02 / 2007
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 04.11.2018 - 14:59  ·  #38
Ich habe noch eine Frage auf die ich bisher keine Antwort finden konnte: Ist es möglich den SPI-Takt bei dem FT800-Treiber einzustellen?
Wenn ich meinen Xmega auf 48 MHz takte kommt aus dem Display nur noch Störungen.
Es wäre daher hilfreich wenn ich den Takt irgendwo einstellen könnte. Vielleicht lässt sich das ja machen.

Louis
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 526
Registered: 02 / 2007
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 05.11.2018 - 16:51  ·  #39
Die Frage nach dem SPI-Takt ist noch aktuell.

Dann habe ich noch ein Problemchen:
Es gibt ja die Function FT800_BootupConfig:Boolean;

Nun steht in der Doku die ich habe etwas von einem
{$ELSIFDEF EVE_userDef} dass man setzen muss wenn man ein anderes Display hat, was ich ja habe.
Dann soll man "FT800_BootupConfig(LCDConfig:TFT800Config)" aufrufen.

Das klappt aber nicht, wenn ich die "EVE_userDef" setze akzeptiert er immer noch keine Variablen bei FT800_BootupConfig.
Da die Initialisierung nicht gut klappt würde ich das gerne nutzen.
rage
Benutzer
Avatar
Gender: n/a
Age: 64
Homepage: processanalytik.de
Posts: 235
Registered: 02 / 2007
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 06.11.2018 - 16:06  ·  #40
Hallo,
der SPI-Takt ist sogesehen nicht einstellbar. Beim Aufwecken des FT8xx muß der erste Satz SPI-Daten bei ca 10 MHz gesendet werden, ist der Chip da durch kann und wird der SPI-Takt auf maximal geschalten. Beides erledigt der Treiber problemlos. Jedenfall ist mir kein Display untergekommen, welches damit nicht funktioniert hat.
Damit ein Userdef durchgeführt wird muß in Main bei EVE_Size etwas anderes eingetragen werden, ich weiß jetzt aber nicht was Herr Hofmann dort vorgesehen hat, der Compiler muß meiner Unit eines von den folgenden $IFDEF setzen,
Code
EVE_SIZE_35 or EVE_SIZE_43 or EVE_SIZE_50 or EVE_userDef

was AVRco dort erwartet kann nur Herr Hofmann beantworten.
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 16 · Cache Hits: 15   142   157 · Page-Gen-Time: 0.028794s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI