Hallo,
ich bräuchte eine Plattform mit Grafikdisplay (320x240 reicht).
Angezeigt sollen nur Menüs und Messwerte. Ich habe früher mal was mit µC
gemacht und kann ein paar Programmiersprachen medium gut (C läuft auf
jeden Fall). Ich würde gerne meine Energie und Zeit in das Produkt
stecken und nicht in die Ansteuerung des Displays. Ich würde gerne in C
programmieren (falls das geht).
Fragen: Kann ich da einfach irgendein Arduino Shield mit Display nehemen
und auch die Arduino Bib verwenden. Ich kenne mich mit Arduino überhaupt
nicht aus und will auch eigentlich mit irgendeiner sdt lib
programmieren. Atmegas habe ich mal vor 10 Jahren programmiert, STM32
Möhren (solls ja auch arduinos geben) kenne ich die sdt lib auch
einigermaßen.
Also Idee wäre die Arduino bib fürs Display zu klauen, um damit keinen
Stress zu haben und Rest "normal" zu schreiben. Geht das? -> kenne
Arduino überhaupt nicht, habe nur gehört dass die tolle Bibs haben die
man sich sonst erst mühsam suchen müsste. Oft ist es dann auch so, dass
man doch wieder ran muss da Fehler im Code sind etc.
Habt Dank für Tips, gerne auch konkrete Kaufvorschläge,
Thorsten.
Achja die Anforderungen an den µC sind relativ bescheiden. Cool wäre 32
Bit (wegen den Timern) muss aber nicht. Rest ist ziemlich egal solange
er noch ein paar Portpins hat (Messhardware ist alles extern).
Was ordentliches um ein derartiges Display softwaeremaessig
zu treiben, waere EMWIN.
Gibts auch fuer ST(M32) von ST.
Die Libs die du da im Auge hast, haben immer ein C++-Beiwerk.
Das wuerde z.B. ich nicht wollen.
Warum wuerdest du selber auch bald feststellen.
Ein LPC1768 kann ein ILI9341-Display bei kuerzer Leitungsfuehrung
mit 50 MHz SPI-Clock betreiben. Das ist dann auch fuer
kommerzielles Zeug, was nur Menues und Ergebnisse darstellen soll,
schnell genug.
Es gibt für Arduino viele Displays und Libraries mit sehr
unterschiedlicher Qualität. Deswegen empfehle ich diese ausdrücklich
nicht.
Hier werden immer wieder die Displays von Nextion empfohlen. Sie
enthalten einen eingebauten Grafik Controller und werden durch Befehle
über eine serielle Schnittstelle gesteuert.
Die bei Arduino üblichen Displays stellen hingegen nur Pixel dar. Da
muss der arme kleine Mikrocontroller das ganze Bild selbst berechnen,
bevor es an das Display übertragen wird. Das kostet eine Menge Speicher,
mit 8bit AVR Mikrocontrollern machen diese Displays keinen Spaß.
Um eine vernünftige Wahl treffen zu können, solltest Du mal beschrieben,
was deine Plattform denn alles so können soll. Nur ein Display
anzusteuern kann nicht der finale Sinn der Aktion sein.
>Ein LPC1768 kann ein ILI9341-Display bei kuerzer Leitungsfuehrung>mit 50 MHz SPI-Clock betreiben
Ich habe noch im Kopf dass der ILI9341 max. 10 MHz SPI mitmacht.
Bei mir gab es einzelne Pixelfehler ab 12,x MHz.
Über Temperatur habe ich nie gemessen, nur unter Laborbedingungen.
> Ich habe noch im Kopf dass der ILI9341 max. 10 MHz SPI mitmacht.> Bei mir gab es einzelne Pixelfehler ab 12,x MHz.
Ich schrub ja auch dazu, dass es einer:
> kurzen Leitungsfuehrung
bedarf. Dazu muss das Display so nah wie moeglich am
Controller sitzen.
Pixelfehler wuerde ich sehen, wenn es denn welche geben wuerde.
Ich mache aber auch nur Schreibzugriffe auf das Display.
supergrobi schrieb:>> Ich habe noch im Kopf dass der ILI9341 max. 10 MHz SPI mitmacht.>> Bei mir gab es einzelne Pixelfehler ab 12,x MHz.>> Ich schrub ja auch dazu, dass es einer:>> kurzen Leitungsfuehrung> bedarf. Dazu muss das Display so nah wie moeglich am> Controller sitzen.> Pixelfehler wuerde ich sehen, wenn es denn welche geben wuerde.>> Ich mache aber auch nur Schreibzugriffe auf das Display.
Paul Baumann, bist du es? ;-)
Hallo,
interessanter Hinweis, ich hatte danach beim ILI9341 mal nicht ins
Datenblatt geschaut. Am ESP32 bei 40MHz und Zimmertemperatur nach 2-3
Stunden Darstellungsfehler, mit 27MHz stabil. Da hat der Hersteller aber
mal recht pessimistische Angaben gemacht.
Gruß aus Berlin
Michael
Thorsten schrieb:> ich bräuchte eine Plattform mit Grafikdisplay (320x240 reicht).> Angezeigt sollen nur Menüs und Messwerte. Ich habe früher mal was mit µC> gemacht und kann ein paar Programmiersprachen medium gut (C läuft auf> jeden Fall). Ich würde gerne meine Energie und Zeit in das Produkt> stecken und nicht in die Ansteuerung des Displays. Ich würde gerne in C> programmieren (falls das geht).
Fangen wir mal hinten an:
- in C programmieren: sollte OK sein, sofern du es kannst
- Zeit ins Produkt und nicht ins Display: Das siehst du viel zu grob.
Teile mal das Problem in 3 Teile:
a) die eigentliche Display-Ansteuerung: entweder Port und
Lowlevel-treiber oder RGB und nur mit dickeren µC nebst ausreichend RAM
(vorher prüfen)
b) die Gestaltung der grafischen Anzeigefläche, also Kringel malen,
Flächen füllen, Fonts verwalten und Text zeichnen
c) Menü-System und Menüelemente ausdenken.
- Grafikdisplay 320x240: monochrom oder bunt? Wenn bunt, dann lieber
480x272 in 4.3", ist verbreiteter. Dafür brauchst du aber nen dickeren
µC wie LPC178? oder LPC4088 oder so und du brauchst dafür einiges an
externem RAM, weil der interne dafür nicht ausreicht.
W.S.
W.S. schrieb:> Dafür brauchst du aber nen dickeren> µC wie LPC178? oder LPC4088 oder so und du brauchst dafür einiges an> externem RAM, weil der interne dafür nicht ausreicht.
Ein STM32F407 reicht völlig aus, um QVGA oder WQVGA mit 256 Farben
anzusteuern. Externes RAM ist nicht erforderlich!
m.n. schrieb:> Ein STM32F407 reicht völlig aus,
was in etwa die gleiche M4 Klasse ist wie der LPC4088, nur billiger zu
bekommen. Beim Chinesen gleich mit Display zum anstecken.
Aber so wie die Frage vom TO gestellt wurde empfehle ich erstmal Alexa
zu fragen.
Thorsten schrieb:> Also Idee wäre die Arduino bib fürs Display zu klauen, um damit keinen> Stress zu haben und Rest "normal" zu schreiben. Geht das? -> kenne> Arduino überhaupt nicht, habe nur gehört dass die tolle Bibs haben die> man sich sonst erst mühsam suchen müsste.
Dann wäre der erste Rat sich mal damit zu beschäftigen, klein anzufangen
und wenn es klappt die weiteren Schritte zu machen und konkret zu
fragen. Oder bei einer Arduino Bastelgruppe im nächsten Makerspace
vorbeizuschauen.
Thorsten schrieb:> Fragen: Kann ich da einfach irgendein Arduino Shield mit Display nehemen> und auch die Arduino Bib verwenden
Der Arduino reicht nicht für 320x240 Graphik.
Das war die Domäne der ARM Prozessoren in früheren Windows-CE Computern.
Wenn du nur Text und Rechtecke und Linien zeichnen lassen willst, kann
es ein Graphikprozessor machen, aber so bald der uC zeichnen soll,
brauchst du mehr Rechenleistung und RAM.
supergrobi schrieb:> Ein LPC1768 kann ein ILI9341-Display bei kuerzer Leitungsfuehrung> mit 50 MHz SPI-Clock betreiben.
Schau wie lahmarschig das geht:
https://www.youtube.com/watch?v=z_P5L-dz23Y
Besser: https://www.youtube.com/watch?v=DGmumTezHAs
Wer statt mit Argumenten mit utube kommt, braucht sich
hier nicht weiter beteiligen.
"Lahmarschig" ist zudem ein subjektiver Begriff.
Fuer Textausgaben und vektorielle Ausgaben ist es mir schnell
genug und laesst auch noch IOs fuer andere Zwecke als die
Displayansteurung uebrig.
Michael B. schrieb:> Schau wie lahmarschig das geht:
man kann auch einen Stm32F103/407 nehmen der via DMA SPI Daten wie
Bilder und Colorfonts zwischen Spi-Flash und ILI-LCD schaufelt.
das ist meine bevorzugte Methode.. wieso hat hier noch keiner Nextion
erwähnt? (ich nicht)
Thorsten schrieb:> Angezeigt sollen nur Menüs und Messwerte.
Ich würde erstmal ein Text-LCD benutzen. Dann kann man sich voll auf die
Implementierung der Funktion konzentrieren.
Und wenn man danach noch Lust hat, kann man sich ja immer noch mit einem
GLCD abplagen. Die Funktion steht ja bereits, man muß also "nur noch"
die Ausgaben umleiten.
Stefanus F. schrieb:> Um eine vernünftige Wahl treffen zu können, solltest Du mal beschrieben,> was deine Plattform denn alles so können soll. Nur ein Display> anzusteuern kann nicht der finale Sinn der Aktion sein.
Im Prinzip nur das Display und Menüsteuern. Einen Drehencoder kann jeder
µC und Daten empfangen per SPI auch. Mehr brauche ich nicht.
W.S. schrieb:> - Zeit ins Produkt und nicht ins Display: Das siehst du viel zu grob.> Teile mal das Problem in 3 Teile:
Damit war gemeint, ich will mich auf meine Kernkompetenzen nutzen und
wenn es was fertiges gibt gerne nutzen.
m.n. schrieb:> Ein STM32F407 reicht völlig aus, um QVGA oder WQVGA mit 256 Farben> anzusteuern. Externes RAM ist nicht erforderlich
Hast du da ein Beispiel?
W.S. schrieb:> - Grafikdisplay 320x240: monochrom oder bunt? Wenn bunt, dann lieber> 480x272 in 4.3", ist verbreiteter. Dafür brauchst du aber nen dickeren> µC wie LPC178? oder LPC4088 oder so und du brauchst dafür einiges an> externem RAM, weil der interne dafür nicht ausreic
Sorry. Bunt wäre toll, 256 Farben reichen aber aus, wenn das den
externen Speicher verhindern kann.
Johannes S. schrieb:> Dann wäre der erste Rat sich mal damit zu beschäftigen, klein anzufangen> und wenn es klappt die weiteren Schritte zu machen und konkret zu> fragen.
Dafür suche ich einen Start. Ich habe mir schon ein paar Sachen zu
Displays durchgelesen und rausgeschrieben. Leider hat mich das etwas
überfordert. Wenn mir jemand sagt, nimm einen STM32F407 und das Display
mit paraller Ansteuerung könnte ich damit was anfangen.
Johannes S. schrieb:> was in etwa die gleiche M4 Klasse ist wie der LPC4088, nur billiger zu> bekommen. Beim Chinesen gleich mit Display zum anstecken.
Hast du hier mal ein Link. Ich habe gerade ebay durchsucht, konnte aber
nichts finden. nur einen STM32F103 mit Display der dürft aber etwas
klein sein.
https://www.ebay.de/itm/3-2-TFT-Touch-LCD-board-Display-Screen-Panel-STM32-STM32F103VCT6-Dev-Boar/173078599180?hash=item284c49d60c:g:7wEAAOSwaB5XrU2i:rk:51:pf:0
Also stockeln soll es nicht. Anzeigen, Menüs und Messwerte. Ein paar
Farben reichen aus (von mir aus auch 16), 256 wären aber schöner.
Bevorzuge etwas was es in 5 Jahren auch noch gibt. Also vielleicht kein
hochintegriertes Display mit speziellem Controller, sondern lieber einen
µC mit Grafikcontroller und paralleler Ansteuerung. Doofe Frage, die
ILI9341 kann man nicht parallel ansteuern? Muss man da das Interface
nutzen?
Peter D. schrieb:> Thorsten schrieb:>> Angezeigt sollen nur Menüs und Messwerte.>> Ich würde erstmal ein Text-LCD benutzen.
Das kommt drauf an, ob die Messwerte in Zahlen- oder Kurvenform
dargestellt werden sollen.
https://www.ebay.com/itm/401087406846
Thorsten schrieb:> m.n. schrieb:>> Ein STM32F407 reicht völlig aus, um QVGA oder WQVGA mit 256 Farben>> anzusteuern. Externes RAM ist nicht erforderlich>> Hast du da ein Beispiel?
Die Rechnung ist doch einfach.
Wenn Du keinen Framebuffer nutzt, dann ist der Speicher fast Wurst und
es geht auch mit ein paar Kilobyte RAM.
Ein Framebuffer hat aber viele Vorteile. Vor allem kann man dann schön
DMA nutzen und im Extremfall den kompletten Framebuffer per DMA ins
DisplayRam übertragen.
320x240x8Bit -> 75kB
320x240x16Bit-> 150kB
Ein grosser STM32F103 (RF/RG) reicht also schon für die 8Bit-Variante.
Ansonsten halt ein F4.
Bei spezifikationsgemäßen 10MHz am ILI9341 kommst Du mit Framebuffer und
DMA immerhin noch auf 12Hz. Sollte für Deine Zwecke reichen.
> Dafür suche ich einen Start. Ich habe mir schon ein paar Sachen zu> Displays durchgelesen und rausgeschrieben. Leider hat mich das etwas> überfordert. Wenn mir jemand sagt, nimm einen STM32F407 und das Display> mit paraller Ansteuerung könnte ich damit was anfangen.
Parallel geht auch, ist aber etwas aufwendiger. SPI beim ILI9341 ist
trivial.
> Hast du hier mal ein Link. Ich habe gerade ebay durchsucht, konnte aber> nichts finden. nur einen STM32F103 mit Display der dürft aber etwas> klein sein.> https://www.ebay.de/itm/3-2-TFT-Touch-LCD-board-Display-Screen-Panel-STM32-STM32F103VCT6-Dev-Boar/173078599180?hash=item284c49d60c:g:7wEAAOSwaB5XrU2i:rk:51:pf:0
Der hat nur 64kB RAM. Für einen Framebuffer ist das zu wenig. Mit
trickreicher Porgrammierung kann man auch nur einen rechteckigen
Ausschnitt ans Display schicken. Du könntest das Bild also in "Etappen"
aufbauen. Ist halt aufwendig von der Software her. Würde ich mir nicht
antun.
> Also stockeln soll es nicht. Anzeigen, Menüs und Messwerte. Ein paar> Farben reichen aus (von mir aus auch 16), 256 wären aber schöner.> Bevorzuge etwas was es in 5 Jahren auch noch gibt. Also vielleicht kein> hochintegriertes Display mit speziellem Controller, sondern lieber einen> µC mit Grafikcontroller und paralleler Ansteuerung. Doofe Frage, die> ILI9341 kann man nicht parallel ansteuern? Muss man da das Interface> nutzen?
Der ILI9341 kann sowohl parallel als auch SPI. Parallel ist halt etwas
aufwendiger (mehr Leiterbahnen bzw. Kabel, aufwendigere
Initialisierung).
Stefanus F. schrieb:>> Um eine vernünftige Wahl treffen zu können, solltest Du mal beschrieben,>> was deine Plattform denn alles so können soll. Nur ein Display>> anzusteuern kann nicht der finale Sinn der Aktion sein.Thorsten schrieb:> Im Prinzip nur das Display und Menüsteuern.> Einen Drehencoder kann jeder µC und Daten empfangen per SPI auch.
Ja aber das ganze Menü muss ja auch irgendeinen Sinn haben. Was willst
du denn mit SPI machen? Einen Ethernet Controller ansteuern? Oder ein
MP3 File von SD Karte abspielen? Oder Messwerte von Sensoren erfassen
und darstellen?
Irgend einen tieferen Sinn muss das ganze ja haben und davon hängt unter
Umständen ab, welche Controller geeignet ist. SPI kann nämlich eben
nicht jeder. Und die es können, haben vielleicht nicht genug Speicher
oder sind zu langsam.
Auch einen Drehencoder kann man nicht so ohne weiteres an jedes Board
anschließen. Beim Raspberry Pi dürfte das zum Beispiel schwierig werden
(wegen Interrupt Handling und fehlender Echtzeit-Fähigkeit). Dann wäre
auch die Frage nach der Anzahl der Drehencoder.
Thorsten schrieb:> m.n. schrieb:>> Ein STM32F407 reicht völlig aus, um QVGA oder WQVGA mit 256 Farben>> anzusteuern. Externes RAM ist nicht erforderlich>> Hast du da ein Beispiel?Beitrag "TFT-direct-drive, WQVGA-TFT an STM32F4"
Um es auf den Punkt zu bringen: Der Bildaufbau ist affenschnell!
Thorsten schrieb:> Also stockeln soll es nicht. Anzeigen, Menüs und Messwerte. Ein paar> Farben reichen aus (von mir aus auch 16), 256 wären aber schöner.
Viele Farben sind in meinen Augen etwas für verspielte Menschen. In der
Praxis zeigt sich, daß wenige, prägnante Farben völlig ausreichen. Wer
mag denn zum Beispiel dunkelblaue Schrift auf schwarzem Hintergrund oder
gelbe Schrift auf weisser Fläche?
Die üblichen TFTs sind so blickwinkelabhängig, daß feine Farbnuancen
schon bei kleinen Ablesewinkeln deutlich anders abgebildet werden. Im
technischen Umfeld stört diese Spielerei eher.
Für meine Anwendungen wichtiger finde ich das Attribut Blinken, das per
Hardware ausgeführt wird.
> Bevorzuge etwas was es in 5 Jahren auch noch gibt.
Selber verwende ich 5,7" QVGA TFTs von EDT (Glyn), die langfristige
Lieferbarkeit bei gleicher Steckerbelegung bieten. An anderer Stelle
hatte ich hier gebrauchte Anzeigen ohne Touch-Folie für einen 10er
angeboten, dazu auch Leerplatinen. Aber einem fernostorientierten
Bastler sind selbst diese zu teuer.
Bei 4,3" TFTs gibt es auch eine Vielzahl an Angeboten, die die gleiche
40-pol. Steckerbelegung aufweisen und damit austauschbar sind.
Wenn Dir kleine Anzeigen <4,3" reichen, dann gibt es billige Angebote,
deren Leistungsfähigkeit ich aber nicht beurteilen kann und deren
Verfügbarkeit wohl gewissen Modeerscheinungen unterliegt.
Bessere Hardware wäre ein Discovery-Board (STM32F429 oder STM32F746),
welche für relativ wenig Geld die komplette Hardware inkl. Display
bieten.
Nachteilig bei diesen ist allerdings, daß viele IO-Leitungen durch nicht
benötigte Zusatzhardware blockiert sind. Die Programmierung erfordert
zudem einigen Aufwand, wenn man nicht gerade eine zusammengeklickte
Anwendung für den eigenen Bedarf findet.
Ein Beispiel für Verwendung eines STM32F429 Discovery-Boards gibt es
hier: http://mino-elektronik.de/FM_407/fmeter_407.htm#c1
Direkt danach noch eine Anwendung mit 4,3" und direkter TFT-Ansteuerung:
http://mino-elektronik.de/FM_407/fmeter_407.htm#c2 Wenn der Winter lang
und kalt wird, werde ich die Schaltung vielleicht noch einmal richtig
überarbeiten ;-)