mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MI0283QT-2 mitHX8347 ist echt langsam


Autor: Christian Gebhard (gepi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe mir von Watterott das MI0283QT-2 Display mit Adapter gekauft. 
Nach einigem hin und her läuft das Display, ich kann Bilder anzeigen und 
schreiben (Alphabet mal pixelweise definiert).

Mir kommt das Display aber sehr langsam vor. Ich steuere es über SPI an 
und wenn ich den (leicht angepassten) Code von Watterott nehme und das 
Display komplett mit einer Farbe fülle, dann kann ich zuschauem wie sich 
die Farbe über das Display arbeitet. Das ganze dauert ~ 0,5 Sekunden 
(grob geschätzt).

Geht das auch schneller? Hat da jemand Erfahrung mit gesammelt? Ich habe 
im Datenblatt vom HX8347 nichts gefunden und SPI-Takt verstellen bringt 
nichts.

Gruß
Gepi

Autor: Nils Hesse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

welchen Mikrocontroller nutzt du denn bzw. welche SPI Taktrate?

Das Display ist auch bei mir recht langsam (STM32 bei 72MHz, SPI Takt = 
16 Mhz). Allerdings muss man halt sagen (ich gehe mal vom 16Bit Modus 
aus), dass 320 * 240 Pixel a 16 Bit = 150 Kilobyte über eine serielle 
Schnittstelle bei 16 MHz halt ihre Zeit brauchen... Selbstverständlich 
das ganze plus die nicht gerechneten Kommandos.

Also ich denke, das ist langsam by Design.
Gleichzeitig kann man durch Optimierung des Zeichnens viel rausholen - 
musst du wirklich den kompletten Screen neu schreiben?

Ich baue mir gerade eine Hardware auf, bei der ich das Display mal am 
Parallelen Bus über den FSMC eines STM32F103 ansteuern werde - wenn du 
magst, kann ich dir mal das Ergebnis mitteilen, sobald ich es habe - 
dauert aber noch eine Weile weil im Moment das Geld fehlt...

Grüße
Nils

Autor: Christian Gebhard (gepi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Nils,

ich habe das Display an einem ATXMEGA128A1, der Controller läuft mit 
16MHz, SPI gerade mit 8 da Prescaler minimal 2 ist. Werde am WE mal auf 
16MHz SPI-Takt gehen aber ich habe wenig Hoffnung. Habe gestern zwischen 
2 MHz und 8 MHz gewechselt und die Geschwindigkeit ist gleich geblieben. 
Liegt also wohl nicht am SPI Takt.

Ich würde schon gerne das komplette Bild ändern. Da kommt später ein 
Menü drauf und je nach Auswahl /es lebe der Touch Screen) kommt dann was 
ganz anderes.

Gruß
Gepi

Autor: Jojo K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
hat jemand das Display schon parallel mit 16bit angesteuert?

mfg

Autor: Christian Gebhard (gepi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe es erst angeschlossen und komm jetzt nicht dazu.

Unter Youtube-Video "PIC32MX4 streaming video" gibts 
ein Video, das Display wird parallel im 16bit Modus angesteuert.

Wegen Schaltplan einfach nach dem Board googeln (OIC32MX4 von Microe).

Bei Microe gibts auch den Code zur Ansteuerung zum Download (für PIC32).

Gruß
Gepi

Autor: interessant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi gepi

Da ich mit dem gedanken spiele mir eins zu holen interessiert mich dein 
ergebnis...ein bericht währe super.

Wie sieht denn dein code aus?

Ich vermute aber, das es am HX8347 liegt, denn laut DB Seite 170, sind 
bei Write min. 8ns pro Puls möglich...bei 16bit also ~4MHz??
Grüße

Autor: interessant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh zu lange gebraucht zum tippen ;)
SORRYYY

Autor: Jojo K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@gebi
Kannst du mal dein Source hier reinstellen. Ich versuche nämlich auch 
gerade das Display in 16bit/type 1 anzusteuern allerdings macht es bei 
mir seit tagen keinen mux.
Wäre echt nett.

mfg

Autor: Christian Gebhard (gepi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Code ist im Anhang (hoffe das klappt so). Der Code ist so ziemlich 
dasselbe wie der, den man bei Watterott runterladen kann.
Für die parallele Ansteuerung habe ich noch keinen eigenen Code, gerade 
keine Zeit.

Zur seriellen Ansteuerung: Im Datennblatt steht Serial Clock Cycle min. 
20ns.
Gehen wir also vom Minimum aus, dann kann ich den Controller in einer 
Sekunde mit 50 Millionen bits vollballern (theoretisch, so wie ich SPI 
verstanden habe), meine 8MHz SPI-Takt sollte der Controller also können. 
Wenn ich nun bei 8MHz pro Periode 1 bit übertrage und ich pro Pixel mit 
16 bit Farbtiefe 16 bits brauche, dann dürfte es ~154ms dauern bis ich 
das Display in einer Farbe befüllt habe. Ich hab jetzt keine Ahnung ob 
und wenn ja wie lange mein ATXMEGA braucht das SPI Senderegister neu zu 
beschreiben? Evtl kommt da aber noch was drauf.

Jedenfalls hab ich den Controller angesteuert über SPI mit 8MHz und 
brauche ~0,5 Sekunden bis das Display "voll" ist. Das ist mir zu langsam 
wenn ich dem Bild beim Aufbau zuschauen muss.

Code für parallele Ansteuerung gibts bei mikroe.com, muss man eben bissl 
suchen.

Gruß
Gepi

Autor: Jojo K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nabend,

also ich hab die letzten Tage leider erfolglos versucht das mi0283qt-2 
parallel mit 16bit (8080) anzusteuern.Ein paar Fehler habe ich gefunden 
z.b. ist TypeI scheinbar nicht möglich wie ich herausgefunden habe was 
in dem speerlichen Datenblatt von Watterott nicht auftaucht (aber dafür 
hier http://www.displayfuture.com/engineering/specs/TFT...). 
Nun habe ich das display mit der konfiguration (IM3:0 = 0010) auf TypeII 
umgestellt allerdings immernoch ohne Erfolg. als Init-Routine ich eine 
ähnliche der von watterott mit der Anpassung für 16bit parallel und 
RGB565.
Bisher habe ich alles überprüft sprich also meine Hardwareverbindungen 
zwischen XMEGA128A1 und TFT, meine Ansteuerungsabfolge etc. der 
Steuerleitungen und und und. Aber nun bin ich im Moment am ENDE meines 
Lateins.
Also hat es irgendjemand geschafft das Display parallel in irgendeiner 
Art und Weise zulaufen zu bringen oder kann mir sagen was ich noch 
überprüfen.... kann.

mfg
jojo

Autor: Jojo K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So heute habe ich mal eine tft_read Routine gebastellt um zu sehn ob die 
Register des HX8347-D auch richtig beschrieben werden und hab dabei 
festgestellt das nicht alles Register den von mir vorher gesendeten Wert 
enthalten warum das so ist kann ich allerdings nicht sagen.
Ich gehe mal nicht davon aus das der Controller des TFT an den Settings 
herumspielt.
Weiter bin ich jetzt bis dato immer noch nicht.
Das Bild ist wie die letzten Tage schon immer noch einfach WEIß was nach 
einem erfolgreichen Init nicht sein sollte.

Dem Video von Watterott nach zu urteilen sollte nach dem Init ein 
"rauschiges Bild" auf dem Display auftauchen.

mfg

Autor: Hauspapa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat der XMega einen DMA oder muss er jedes mal einen Interrupt ausführen 
um die SPI zum nächsten Byte zu überreden?

Autor: Jojo K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der hat DMA allerdings für SPI nur im Slave Modus wenn ich mich recht 
erinnere.

Autor: Hauspapa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der ganze ISR Overhead ist schnell länger als die eigentliche 
Übertragung. (Atmega ohne X waren wohl 50-80 Clockzyklen XMega weis ich 
nicht) Wenn Ihr pollen tut hab ich nix gesagt.

Autor: Jojo K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich hab das gute Display jetzt auch mal mit SPI in Betrieb genommen 
und das funktioniert mit der Init bzw. Registerwerten (von Watterrott) 
die ich vorher auch schon für den parallelen modus verwendet haben somit 
ist mal der beweis erbracht es ist nicht tot. im parallelen modus 
allerdings hat es bis zuletzt kein ton von sich gegeben.

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist denn das Display vom Kontrast, Blickwinkel und 
Tageslichtempfindlichkeit?

Im Manual stehen ja ganz imposante Blickwinkel (bis zu 80°), ist das 
realistisch?

Vielen Dank, Stefan

Autor: Kai O. (kaio)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin zusammen,

ich habe ein STM32F4-Discovery erstanden. Nettes Teil :)

Würde nun gerne ein TFT (via SPI) anschliessen, und bin über das 
Watterott TFT (http://www.watterott.net/projects/mi0283qt) gestolpert. 
Nun eine einfache (hoffentlich richtige) Rechnung:

Der STM32 läuft mit 168Mhz. Er sollte also sagen wir 48Mhz SPI Takt 
schaffen (< 168/2). Minimale SPI Taktlänge des HX8347 ist lt. Datenblatt 
20ns, also max. 50Mhz Takt. Das würde bei 320x240x16Bit folgende Zeit 
für das komplette Schreiben des Bildschirms (Nur Pixeldaten) geben:
>>> 1000/(48e6/(320*240*16))
25.6ms, entspricht ca. 39 Frames pro Sekunde. Das wäre also schon mehr 
als Videotauglich :).

Ich frage mich nun ob sich die theor. Daten auch in der Praxis 
errreichen lassen. Kommen die verbauten Pegelwandler 74LVC244 (lt. 
Layout der Adapterplatine) da mit (lt. Datenblatt, würde ich sagen ja? 
unsicher). Hat schon jemand hier praktische Erfahrungen gesammelt und 
kann hier berichten?

Autor: Kai O. (kaio)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe gerade im Datenblatt dass der STM32F407VG nur max. 37.5MBit/s 
auf SPI1 kann. SPI2 und SPI3 können max. 21MBit/s. Das entspricht dann 
für SPI1 32 ms pro Frame oder 31 Frames/s.

Hmm hat der TFT Controller eigentlich ein Dual Framebuffer, so dass man 
Puffer A füllen kann und dann umschaltet auf Puffer B (d.h. Bildaufbau 
nicht sichtbar, ... mal schauen.)

Autor: Phantomix Ximotnahp (phantomix) Flattr this
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Kai O. schrieb:
> ich habe ein STM32F4-Discovery erstanden. Nettes Teil :)
>
> Würde nun gerne ein TFT (via SPI) anschliessen, und bin über das
> Watterott TFT (http://www.watterott.net/projects/mi0283qt) gestolpert.


Das habe ich auch gerade gemacht und mal ne Anwendung gebaut die einen 
Testbildschirm anzeigt (Farbverlauf)

Der Code ist weder schön noch effizient, was ich aber noch ändern will. 
Der Einstieg mit dem Display auf nem STM32F2 oder F4 ist damit aber 
schnell möglich.

Autor: Xmega (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bin auf der Suche nach einem Beispielprojekt für das AVR Studio 
unter der Verwendung von einem XMega128 o.ä. zur Ansteuerung des HX8347D 
über SPI.
Vielen Dank für die Antworten!

Autor: Phantomix Ximotnahp (phantomix) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir mal das hier an

http://www.mafu-foto.de/elektronik/arduino/98-touc...

ist zwar kein Xmega aber das sollte sich ja portieren lassen...

Autor: Xmega (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider ist diese Lib auf den Compiler von Arduino optimiert.
Damit müsste ich alle Libs, welche im Projekt verwendet werden, auf das 
AVR Studio adaptieren. Das würde ich gerne Vermeiden.
Im AVR Studio existiert ein Beispielprojekt für den HX8347A. Von HX8347A 
zu HX8347D haben sich quasi alle Register geändert und kein Stein ist 
auf dem anderen geblieben...

Autor: Reimecker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Matthias P. (Firma: privat) (sogge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi ich möchte das Thema nochmal aufgreiffen.
Hab das gleiche Problem wie ganz oben

Also ich habe einen MSP430F247 und steuere den mit SPI 16MHZ
und bei mir braucht das ding auch rund 500ms.
Hat irgendwer ne idee an was es liegen könnte?
Hab eig. zum größte Teil den Orginal Treiber verwendet( HX8347)

Was ich festgestellt habe ist, dass ein einzelner draw(color)
ca 8us braucht.
Das sich natürlich bei 320*240*8 extrem bemerkbar macht (das is die 
Hauptbremse würd ich sagen)
Mein erster Ansatz war das ich diese 2* wr_SPI(data) in 1 wr_SPI(data) 
zusammengefasst habe was schonmal 1 call einspart. (hat auch ca. 100ms 
gebracht).
Aber jetzt weiß ich auch nicht mehr weiter... evtl SPI zu lansam? ka..

Hat schon jemand das ding mit SPI vernünftig ans laufen gebracht?

mfg Sogge

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>... evtl SPI zu lansam?

Exakt. Von der SPI Schnitstelle aus gesehen kannst du auf
dem Ding Videos abspielen. Dann muss das SPI eben mit 40MHz laufen.

Autor: Matthias P. (Firma: privat) (sogge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht aber leider ned hab nur max. 16MHZ, über den externen quarz, zur 
verfügung (die Hardware ist schon fix)
Da der MC nicht mehr kann.

Hat irgendwer noch eine andere Idee? Software technisch? is da noch was 
raus zu holen?
Wie gesagt nutze eig. den orginal Treiber

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.