Forum: Mikrocontroller und Digitale Elektronik tft Display ansteuern (ft800)


von Matthias F. (frank91)


Lesenswert?

Hallo alle zusammen :P

Nachdem ich bis jetzt schon einige Displays programmiert habe
(Dot Matrix, Dog Serie und Dip Serie von Electronic Assembly) und auch 
selbst zugehörige Librarys geschrieben habe, will ich mich nun an TFT 
Touch Displays herantasten.

In Frage käme zum Beispiel dieses hier:
http://www.reichelt.de/LCD-Module-Touch-Grafik/TFT-DIS-3-5/3/index.html?&ACTION=3&LA=2&ARTICLE=101746&GROUPID=3011&artnr=TFT-DIS+3%2C5
Vielleicht könnt ihr mir aber auch ein besseres empfehlen :P

Programmieren will ich das ganze in C im AVR Studio mit einem ATxmega.

Da ich momentan noch gar keine Grundkenntnisse mit einem solchen Display 
habe wollte ich einfach mal in die Runde fragen, was hier ein gängiger 
und einfacher Lösungsansatz ist.

In Internet sah ich hierzu oft den SSD1963 Controller.
Außerdem bin ich auf den FT800 von FTI gestoßen, welchen ich bevorzugen 
würde.

Auf der Seite von FTDI gibt es hierzu eine 250 seitige Dokumentation 
darüber.
Besitzt hierzu jemand eine fertige Library oder kennt eine Seite auf der 
alles gut und einfach erklärt ist, so dass ich das Grundprinzip schnell 
verstehe und selber etwas aufbauen kann, ohne dass ich mich durch diese 
riesige Dokumetation kämpfen muss?

Kann mir jemand hierzu jemand ein gutes Entwicklungsboard empfehlen?
Bis jetzt wird es wahrscheinlich dieses hier:
http://www.ftdichip.com/Products/Modules/VM800C.html

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

TME hat einige Boards mit dem FT800, suche mal nach Riverdi. Aus eigener 
Erfahrung kann ich sagen, dass der Weg zwar steinig ist, dass es sich 
aber lohnt, ihn selber zu gehen, um die Eigenarten des Schaltkreises 
voll zu verstehen.

: Bearbeitet durch User
von guest (Gast)


Lesenswert?

Matthias F. schrieb:
> Auf der Seite von FTDI gibt es hierzu eine 250 seitige Dokumentation
> darüber.
> Besitzt hierzu jemand eine fertige Library oder kennt eine Seite auf der
> alles gut und einfach erklärt ist, so dass ich das Grundprinzip schnell
> verstehe und selber etwas aufbauen kann, ohne dass ich mich durch diese
> riesige Dokumetation kämpfen muss?

excamera.com/sphinx/gameduino2/

von Frickelfritze (Gast)


Lesenswert?

Matthias F. schrieb:
> Besitzt hierzu jemand eine fertige Library oder kennt eine Seite auf der
> alles gut und einfach erklärt ist, so dass ich das Grundprinzip schnell
> verstehe und selber etwas aufbauen kann, ohne dass ich mich durch diese
> riesige Dokumetation kämpfen muss?

Warum kaufst du nicht ein Display mit angebautem Controller?

Willst du "der Weg ist das Ziel" spielen oder einigermassen schnell
zu einem nutzbaren Display kommen?

von guest (Gast)


Lesenswert?

www.itead.cc/display/nextion.html

von guest (Gast)


Lesenswert?

nextion.itead.cc/download.html

von Frickelfritze (Gast)


Lesenswert?

Matthias F. schrieb:
> In Frage käme zum Beispiel dieses hier:
> 
http://www.reichelt.de/LCD-Module-Touch-Grafik/TFT-DIS-3-5/3/index.html?&ACTION=3&LA=2&ARTICLE=101746&GROUPID=3011&artnr=TFT-DIS+3%2C5
> Vielleicht könnt ihr mir aber auch ein besseres empfehlen :P

Dieses Display hat keine Touch Oberfläche.

Displays mit Touch und eingebautem Display-Controller, als auch mit
Touch-Controller (meist XPT2046,) findest du z.B. hier:

http://www.ebay.de/sch/m.html?_odkw=&_ssn=eckstein_komponente&item=281725377549&_osacat=0&ssPageName=STRK%3AMEBIDX%3AIT&_from=R40&_trksid=p2046732.m570.l1313.TR11.TRC1.A0.H0.Xtft+Touchscreen.TRS0&_nkw=tft+Touchscreen&_sacat=0

Meist gibt es dazu auch eine "Library".

Es gibt auch Displays mit Touch und ohne Touch-Controller von
denen man die Finger lassen sollte da sie kompliziert(er) zu
programmieren und ungenauer auszulesen sind.

von Rudolph R. (rudolph)


Lesenswert?

Nach den ersten Schritten sind die FT800 eigentlich ganz zahm. :-)
Und ist heftig, was die alles können.

Zum Reinschnuppern würde sich ein VM800B zum Beispiel auf jeden Fall 
eher anbieten als ein nacktes TFT.

Ein preiswertes Modul wäre das FT800CB-HY43B von hotmcu.com.
Wobei ich gerade mit dem FT810CB-HY50HD rum spiele und zumindest bei dem 
scheint das Touch-Panel echt Scheisse zu sein.

Wobei mir der FT81x erheblich besser gefällt als der FT800.

von guest (Gast)


Lesenswert?

Rudolph R. schrieb:
> Wobei ich gerade mit dem FT810CB-HY50HD rum spiele

welche lib verwendest du dafür ... die von fdti oder gd2 ?

von Rudolph R. (rudolph)


Lesenswert?

guest schrieb:
>> Wobei ich gerade mit dem FT810CB-HY50HD rum spiele
>
> welche lib verwendest du dafür ... die von fdti oder gd2 ?

Weder noch, ich habe mir selber was für den FT800 geschrieben und bisher 
leicht angepasst.

Wobei es von FTDI nicht mal eine FT81x Library gibt.
Da dachte ich, ich schaue mir zum Einstieg mal eben ein bisschen 
Beispiel-Code in der Arduino Umgebung an, tja. :-)

Code Beispiele gibt es übrigens auch von Glyn.
Theorethisch auch TFTs und Module, nur haben die es scheinbar nicht 
nötig, auf Anfragen per EMail auch nur zu reagieren.

Edit, ach ja, Gameduino2, wo schon die Lib erwähnt wird.
Kann man zum Beispiel bei Watterott bekommen.
Funktioniert sicher auch, ich hoffe nur, dass finale Platinen-Design ist 
nicht wirklich nach den veröffentlichen Unterlagen.

guest schrieb:
> nextion.itead.cc/download.html

Seriell mit bis zu 115200 finde ich jetzt eher nicht so prall.

: Bearbeitet durch User
von guest (Gast)


Lesenswert?

Rudolph R. schrieb:
> Edit, ach ja, Gameduino2, wo schon die Lib erwähnt wird.
> Kann man zum Beispiel bei Watterott bekommen.
> Funktioniert sicher auch, ich hoffe nur, dass finale Platinen-Design ist
> nicht wirklich nach den veröffentlichen Unterlagen.

gameduino funkktioniert bei mir im zusammenspiel
mit einem teensy 3.1 echt gut ...

> guest schrieb:
>> nextion.itead.cc/download.html
>
> Seriell mit bis zu 115200 finde ich jetzt eher nicht so prall.

reicht aber, ich schick ja nur messdaten hin und das nette
teilchen macht echt schöne grafiken draus, auch gauges werden sauber
animiert, wenn man vorher einen designer für die grafiken
rangelassen hat

von guest (Gast)


Lesenswert?

Rudolph R. schrieb:
> Weder noch, ich habe mir selber was für den FT800 geschrieben und bisher
> leicht angepasst.

magst du das nicht mal posten ;)

von Rudolph (Gast)


Angehängte Dateien:

Lesenswert?

Okay, hier mal mein aktueller Stand für den FT800 auf eigene Gefahr.
Das FT810 Projekt ist ein paar Schrittchen weiter, aber das Teil ist ja 
noch viel schlechter verbreitet.

Das ist unaufgeräumt, undokumentiert, unvollständig, ineffizient, 
hässlich und sicherlich auch verbugt.
Ach ja, und quasi nicht supportet. :-)

Eine wichtige Einschränkung noch, die Bilder dürfen nicht größer sein 
als 4k-12B, weil die LoadImage Funktion das noch nicht erkennt und der 
FIFO für den Kommando Co-Prozessor eben nur 4k hat.
In ein 4k .jpg passt aber schon ordentlich was rein. :-)

Ich habe ein VM800B35A-PL, also FT800 mit 3,5" TFT in 320x240.
Das hängt hier an einem 90CAN128.

https://www.mikrocontroller.net/attachment/285155/DSC00903.JPG

Das Spiral-Bild rotiert vor sich hin wenn man den Toggle-Switch benutzt 
hat.
Von der Linie wandert der eine Punkt.
Der Slider unten wird per Touch-Tracking ausgewertet und man kann mit 
dem die ganzen oberen Elemente links und rechts verschieben.

Macht das alles Sinn? Na, warum heisst das Projekt wohl "Spielplatz"... 
:-)


Matthias F. schrieb:
> In Internet sah ich hierzu oft den SSD1963 Controller.

Die sind übrigens im Vergleich zum FT8xx total stumpf, da muss man den 
ganzen Inhalt Pixel für Pixel über den Bus schieben.

Sowas wie:

ft800_cmd_line(xpos_rel+215, 55, xpos_rel+x2, 100, 1);

Für das in Summe und konstant 20 Bytes über den SPI geschickt werden 
müssen gibt es da nicht.
Der FT800 macht die Linie auch immer hübsch gerade.

Bilder als .jpg laden und rotieren mit bilinearer Filterung hat auch 
was. :-)

von guest (Gast)


Lesenswert?

dass schaut doch schon richtig gut aus ;)

bei mir schaut das aktuell so aus

https://drive.google.com/open?id=0B7PaFN6ql8WgN29CTDh4SFlTX2c

ich benutz noch die gd2-lib, mal schauen ob ich mit anregungen
aus deiner implementierung etwas code sparen kann und
die sache damit kleiner wird

danke für das posten deines codes

von Rudolph R. (rudolph)


Lesenswert?

guest schrieb:
> dass schaut doch schon richtig gut aus ;)

Danke, so was kommt eben heraus, wenn man kein echtes Ziel dabei hat. 
:-)
Das Projekt das der Anlass für mich war mich endlich mal mit den FT8xx 
zu beschäftigen benötigt nur eine winzige Untermenge an Funktionen.

Und so gilt hier ganz klar für mich noch, der Weg ist das Ziel. :-)
Das muss dann ganz klar mit eigenem Code sein. :-)

Okay, geplant habe ich auch noch was anderes, das wird dann aber eher so 
eine Showcase Anwendung für mich.

Wie man an Deiner Oberfläche erkennen kann, hast Du dann doch eher 
konkrete Pläne für das Display. :-)

von Matthias F. (frank91)


Lesenswert?

Schon einmal danke, für die vielen hilfreichen antworten :P

> suche mal nach Riverdi. Aus eigener
> Erfahrung kann ich sagen, dass der Weg zwar steinig ist, dass es sich
> aber lohnt, ihn selber zu gehen, um die Eigenarten des Schaltkreises
> voll zu verstehen.

Ich hab mir die Displays von Riverdi und Glynn mal angesehen. Die sehen 
ja echt interessant aus. Auch Preislich sind die top.
Da hier der Controller schon verbaut ist bräuchte ich ja eigentlich 
nicht mal ein Entwicklungsboard?

Die von Itaed muss ich mir auch noch mal genauer ansehen.

Ich denke auch, dass ich letztendlich nicht um das schreiben einer 
eigenen Bibliothek herumkomme. Dies ist meist der Weg, durch den das 
Verständnis am Ende das größte ist.

>Dieses Display hat keine Touch Oberfläche.
Oh stimmt xD ich hab den falschen Link gepostet. Das selbe Display gibt 
es auch mit Touch.

>Displays mit Touch und eingebautem Display-Controller, als auch mit
>Touch-Controller (meist XPT2046,) findest du z.B. hier:
>http://www.ebay.de/sch/m.html?_odkw=&_ssn=eckstein...
Da ich das ganze auch im Betrieb verwenden muss, kommt ebay leider nicht 
in Frage.

Danke an "Rudolph (Gast)" für seine Bibliothek :P
>Code Beispiele gibt es übrigens auch von Glyn.
Den Code habe ich gefunden. Allerdings habe ich ihn mir noch nicht groß 
angesehen.
Sobald ich ein Entwicklungsboard bestellt habe, werde ich es aber 
wahrscheinlich damit oder mit der Bibliothek von "Rudolph (Gast)" 
versuchen.
Vom Prinzip ist es doch egal welche Bibliothek ich von welchem 
Hersteller nehme, da sich alle auf die Controller von FTDI beziehen?

Ist die Ansteuerung von FT800, FT801 usw. eigentlich gleich?
Was genau sind hier die wichtigsten Unterschiede?

Gestoßen bin ich außerdem auf diesen Link:
http://www.glyn.de/data/glyn/media/doc/FTDI_EVE_Screen_Editor_Tutorial.pdf
FTDI bietet ja auch selbst ein Programm an, mit dessen ich die optischen 
Dinge alle selbst am PC erstellen kann, so wie ich das verstehe. Hört 
sich ziemlich geschickt an.
Was haltet ihr davon?

von Rudolph (Gast)


Lesenswert?

Was denn eigentlich hier los?
Plötzlich tauchen mehr und mehr hier auf die FT800 benutzen. :-)


Matthias F. schrieb:
> Ist die Ansteuerung von FT800, FT801 usw. eigentlich gleich?
> Was genau sind hier die wichtigsten Unterschiede?

Mit dem "usw." ist es schwieriger zu beantworten. :-)
Die FT800 und FT801 unterscheiden sich erstmal nur darin, dass der eine 
resistive Touch und der ander capazitive Touch haben.
Im FT801 gibt es aber einen Kompatibilitäts-Modus mit dem auch dieser 
erstmal nur Single-Touch macht.

Mit Cap-Touch habe ich noch keine Erfahrung, ich verspreche mir davon 
eine robustere und hochwertigere Oberfläche, das Bedienen mit einem 
einfachen Stylus ist dann aber auch nicht mehr möglich.

Die FT81x sind ein wenig anders, können aber auch mehr, alleine schon 
der aufgebohrte Speicher macht die anders.
Mit angepassten Includes sind die aber weitgehend kompatibel.

Ansonsten gibt "AN_390 FT80x To FT81x Migration Guide.pdf" dazu.

Die FT810/FT811 sind sogar direkt Pin-kompatibel mit den FT800/FT801.
Und nachdem ich lange mit dem FT800 und kurz mit dem FT810 gespielt habe 
würde ich nur noch FT810 benutzen wollen.

> Gestoßen bin ich außerdem auf diesen Link:
> http://www.glyn.de/data/glyn/media/doc/FTDI_EVE_Screen_Editor_Tutorial.pdf
> FTDI bietet ja auch selbst ein Programm an, mit dessen ich die optischen
> Dinge alle selbst am PC erstellen kann, so wie ich das verstehe. Hört
> sich ziemlich geschickt an.
> Was haltet ihr davon?

Der ScreenEditor ist sehr nett, damit kann man schon einiges 
ausprobieren.
Mit einem angepassten Python Script kann man auch direkt Code erzeugen, 
sowas liegt bei für Arduino, Glyn hat einen Script zum runter laden.
Ich hatte angefangen da was dran zu machen, das war dann aber noch nicht 
so richtig interessant für mich.


Ach ja, Displays und so, ich habe ja ein 3,5" mit 320x240 und ein 5" mit 
800x480.
Einfach mal die Breite gemessen ergibt das eine Pixel-Dichte von 4 Pixel 
pro mm für das 3,5" und 7 Pixel/mm für das 5".

Für die Anwendung als Bedien-Panel sind die 4 Pixel/mm super.
Die 7 Pixel/mm führen nur dazu, dass man den Elementen wie Buttons 
deutlich mehr Pixel verpassen muss, ohne das man was davon hat.
In 5" würde ich nur noch 480x272 benutzen und bei 800x480 eher Richtung 
10" gehen.

Es ist auch nicht so, als ob man bei 4 Pixel/mm die Pixel erkennen 
könnte, das Spiral-Bild und das Blitz-Icon aus meinen Bildern haben nur 
64x64 Pixel.

von Matthias F. (frank91)


Lesenswert?

Mit dem Screen Editor hab ich mal ein wenig rumgespielt. Das fand ich 
ziemlich praktisch und übersichtlich. Außerdem kann man sich das ganze 
am Ende als Code für die Glynn Library ausgeben lassen.

Die Library von FTDI und Gameduino sind alles nur Librarys für den 
Arduino so wie ich das sehe.

Ich habe mir jetzt mal die Library von Glynn genauer angesehen.
Hat hierzu schon jemand Erfahrung?

Was genau muss ich hier den alles anpassen damit die Library auf meinen 
Controller abgestimmt ist? :-/

von Rudolph R. (rudolph)


Lesenswert?

Ich kenne jetzt die XMega nicht - gibt einfach keinen mit CAN...

Aber, am Anfang meiner FT800_commands.c habe ich versucht, das Ganze 
etwas portierbarer zu machen:
1
// target specific definitions and functions
2
3
#include <avr/io.h>
4
#include <avr/pgmspace.h>
5
#define F_CPU 16000000UL
6
#include <util/delay.h>
7
8
#define FT_SPI_PORT  PORTB
9
#define FT_CS     (1<<PB4)
10
#define FT_PDN    (1<<PB5)
11
12
13
static inline void ft800_cs_set(void)
14
{
15
  FT_SPI_PORT &= ~FT_CS;  // cs low
16
}
17
18
19
static inline void ft800_cs_clear(void)
20
{
21
  FT_SPI_PORT |= FT_CS;  // cs high
22
}
23
24
25
void spi_transmit(uint8_t data)
26
{
27
  SPDR = data; // Start transmission
28
  while(!(SPSR & (1<<SPIF))); // Wait for transmission to complete - 1µs @ 8MHz SPI-Clock
29
}
30
31
32
uint8_t spi_receive(uint8_t data)
33
{
34
  SPDR = data; // Start transmission
35
  while(!(SPSR & (1<<SPIF))); // Wait for transmission to complete - 1µs @ 8MHz SPI-CLock
36
  return SPDR;
37
}
38
39
// end of target specific definitions and functions

Das steht da nicht drin, um Code zu sparen. :-)

Mir ist nur gerade noch aufgefallen, dass da was für Delay() fehlt.
1
static inline void delay_ms(double ms)
2
{
3
  _delay_ms(ms);
4
}

Oder so ähnlich, einfach mal runtergetippt und kurz nach dem Typ der 
Variable in avrlibc nachgesehen.
Ganz unten wird das in der ft800_init() für den PowerDown Reset benutzt.
Oder man strikt das eben unten um, falls überhaupt.

Dann ist nur noch der SPI zu initialisieren, das habe ich in der 
Spielplatz_90CAN.c drin als init_spi().
Zu beachten ist, dass der SPI für Initialisierung mit weniger als 11 MHz 
läuft, danach darf der bis 30 MHz hoch gehen.
Mit den AVR ist mir das ganz klar egal, die können ja nur bis maximal 10 
MHz, der 90CAN gerade mal 8 MHz.

von Matthias F. (frank91)


Lesenswert?

Rudolph R. schrieb:
> Ich kenne jetzt die XMega nicht - gibt einfach keinen mit CAN...

Demnächst wollen wir im Betrieb (unter anderem wegen Can) auf 32bit 
Controller von STM umsteigen.
Ich will das aber erstmal mit einem XMega realisieren, weil ich mit 
diesen schon viel gearbeitet habe und ich mich ansonsten in 2 neue 
Bauteile gleichzeitig einarbeiten muss.


Ich werde demnächst mal ein so ein Display bestellen und das ganze mit 
deiner Bibliothek, bzw. der von Glynn versuchen.

Sollte ich damit nicht zurecht kommen, wende ich mich (je nach 
Bibliothek) an Glynn, bzw an dich wenn das in Ordnung ist?

von Rudolph (Gast)


Lesenswert?

Matthias F. schrieb:
> Demnächst wollen wir im Betrieb (unter anderem wegen Can) auf 32bit
> Controller von STM umsteigen.

Mal schauen, nächstes Jahr soll es wohl von ST Automotive ARM geben, 
wenn dann was schnucklig kleines dabei ist fange ich vielleicht auch mit 
STM32 an.

Die SPC5x Teile scheinen jetzt nicht mehr so der große Wurf zu sein, 
wenn man sich damit neu beschäftigen will.
Ich wüsste auch erstmal gar nicht, woher ich die einzeln bekommen 
sollte.

> Ich will das aber erstmal mit einem XMega realisieren, weil ich mit
> diesen schon viel gearbeitet habe und ich mich ansonsten in 2 neue
> Bauteile gleichzeitig einarbeiten muss.

Wie das so ist, man nimmt was man kennt oder lässt sich für den Wechsel 
bezahlen. :-)

> Ich werde demnächst mal ein so ein Display bestellen und das ganze mit
> deiner Bibliothek, bzw. der von Glynn versuchen.
>
> Sollte ich damit nicht zurecht kommen, wende ich mich (je nach
> Bibliothek) an Glynn, bzw an dich wenn das in Ordnung ist?

Nach meiner bisherigen Erfahrung mit Glyn könnte es sein, dass ich 
schneller antworte. :-)
Aber das ist ja das tolle hier, eventuell muss ich gar nicht selber 
antworten. :-)

Die Geschichte mit dem _delay_ms() habe ich inzwischen mit einem define 
gelöst:

#define DELAY_MS(ms) _delay_ms(ms)

Das ist aber auch in meinem FT810 "fork", das muss ich alles mal wieder 
zurück Richtung FT800 kippen.
Und das FT800.h ist noch etwas Durcheinander mit den FT810 
Erweiterungen.

Es gibt inzwischen auch eine FT800_config.h in der ich die 
Display-Einstellungen sammel:

//#define FT_VM800B35A
//#define FT_VM800B43A
#define FT810CB_HY50HD
//#define ET07
//#define RVT70AQ

Ich sollte das mal unter "Projekte & Code" anlegen.

von Matthias F. (frank91)


Lesenswert?

> Nach meiner bisherigen Erfahrung mit Glyn könnte es sein, dass ich
> schneller antworte. :-)
> Aber das ist ja das tolle hier, eventuell muss ich gar nicht selber
> antworten. :-)

also bis jetzt lassen die sich ganz schön Zeit mit meiner Anfrage :-/

von Rudolph (Gast)


Lesenswert?

Mal schauen, am 11.2. habe ich FTDI eine Mail geschickt, am 25.2. zwei 
verschiedene Mails an verschiedene Adressen bei Glyn.
Reaktion: Null.
Wobei es bei FTDI auch nur eine einzige Adresse für sämtliche 
Support-Anfragen gibt.

Vielleicht muss man denen einen Schlipsträger schicken der ein Volumen 
von >10k/Monat anfragt?

Nur, bevor das soweit ist muss man ja auch irgendwo anfangen und das 
erfordert auch mal ein paar Informationen.
Dabei ignoriert zu werden ist irgendwie nicht hilfreich.

von rayjin (Gast)


Lesenswert?

Wo finde ich die Funktion pgm_read_byte_far ()?

von c-hater (Gast)


Lesenswert?

rayjin schrieb:
> Wo finde ich die Funktion pgm_read_byte_far ()?

In avr/pgmspace.h

von Rudolph R. (rudolph)


Lesenswert?

rayjin schrieb:
> Wo finde ich die Funktion pgm_read_byte_far ()?

Welchen Bezug zu dem Thread hat die Frage, sprich warum war es wichtig 
diesen dafür auszugraben?

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.