Hallo, ich möchte gerne ein 3.2 LCD Display von Sainsmart am Raspberry Pi betreiben. Es gibt in Github ein Projekt (https://github.com/notro/fbtft) welches Treiber für die SPI Schnittstelle am R-Pi entwickelt. Das Problem ist, dass das Display eine parallele Schnittstelle hat und alleine für die Daten 16 Pins benötigt. Deswegen wird es an den R-Pi mit einem seriell-parallel SPI Wandler angeschlossen. Die Schaltung habe ich angehängt. So weit ich es verstanden habe funktioniert die Schaltung folgendermaßen : Bei jedem Takt wird ein Bit an die Shift-Register gesendet. Gleichzeitig zählt der 74hc4040 bis 16 und dann sendet es ein Signal an die Strobe-Eingänge der Shift-Register und die Schicken ihre 16 gespeicherte Bits an das Display. Gleichzeitig bekommt das Display ein Signal über den Inverter, dass die Daten kommen. Bitte, habe ich es richtig begriffen ? Ich bin in den Sachen Digitaltechnik immer ein blutiger Anfänger. Zu meinem Problem: Abgesehen davon, dass ich eine Platine für diese Schaltung realisieren muss erreicht man in der Praxis nur eine Taktfrequenz von 16Mhz was etwa 10FPS entspricht (Laut Wiki von dem fbtft Projekt). Mit einer höheren Taktfrequenz könnte man mehr FPS rausholen. Meine Idee wäre anstelle eines Zählers, 2x Shift-Register und Inverter einen Mikrocontroller zu nehmen, der eine entpreschende Geschwindigkeit (32Mhz) unterstütz. Dann könnte ich diese Schaltung event. nur mit einem Chip ersetzen. Könnt ihr mir bitte sagen ob diese Idee überhaupt sinnvoll ist und nach welche Mikrocontroller würden sich dafür eignen ? Bisher habe ich nur Erfahrungen mit Arduino, würde aber gerne eine Programierung eines Mikrocontrollers erlernen. Danke sehr - K
Hast du dir das auch gut überlegt? Die 30€ Rückfahrmonitore vom Ebay-Chinesen funktionieren recht gut am Raspberry. Im Netz gab es auch Seiten, wie man so einen Monitor auf 5 Volt umbaut und am Raspberry ideal einstellt. Geht zwar über Analog - trotzdem landen die Pixel 1:1 am Display.
Ahm... 15-20€. Beim 5Volt Umbau wird nur der Spannungsregler überbrückt.
Die 3,2 Sainsmart Monitore sind gerade im Ausverkauf und sehr günstig. Klar kann ich mit mehr Geld weniger Aufwand haben. Ich möchte dabei aber möglichst viel lernen und für mich selbst Sachen entdecken gerade auf dem Gebiet der Digitaltechnik. Habe ich also die Funktion der Schaltung richtig verstanden oder nicht ? Und mit welchem Mikrocontroller könnte ich sie realisieren ?
Karel Mácha schrieb: > idee überhaupt sinnvoll sehr sinnvoll, als uc z.B. diesen für unter 5€: http://www.ebay.de/itm/1x-ARM-Cortex-M3-STM32F103C8T6-STM32-Kern-Board-Minimum-System-Entwickeln-Board-/301122848477?pt=Wissenschaftliche_Ger%C3%A4te&hash=item461c5206dd Alternativ gibt es 2,8" spi-lcds für ~10€. Die kannst du dann direkt anschließen.
Ich bin zwar nicht so der Experte für programmierbare Logik, aber ich halte das ganze für eine ideale Anwendung für einen CPLD. Wenn man einen mit 3V3 nimmt, hat man am Ende sogar wesentlich weniger Bausteine auf der Platine. Hier habe ich das GUZUNTY Projekt gefunden, sogar mit Beschreibung der Ansteuerung eines SainSmart 3.2 Zoll TFT: https://github.com/Guzunty/Pi/wiki/gz_lcd_driver-waveform Vorteil des Projekts: Der RPI programmiert gleich den CPLD. Man braucht also keinen externen JTAG Programmer. Ansonsten würde ich aber einen TFT nehmen, denn man direkt per SPI ansteuern kann.
Ich danke euch für die Tips. Dieser ARM Cortex-M3 STM32F103C8T6 Board sieht sehr interessant aus. Könnte ich mit dem die Komplette oben beschriebene Schaltung ersetzen ? In der Beschreibung finde ich: Board JTAG interface, On-board Mini USB Interface. Heißt es ich kann das development board direkt über USB und einen virtuellen COM-Port Programmieren ohne einen externen JTAG Programmierer ? So weit ich es verstanden habe ist das Rasp-Pi der Taktgeber. Der Entwickler-Board hat aber einen eigenen Kristall. Kann es auch mit externem Taktgeber operieren ? Danke für den Tipp mit dem 2.8 SPI Display, ich wusste nicht dass es sie gibt. Der Unterschied in der Bilddiagonale ist nicht groß und man spart sich sehr viel Arbeit.
Karel Mácha schrieb: > ARM Cortex-M3 ist nur zu empfehlen, wenn du mit uc-Programmierung Erfahrung hast, ansonsten ist die Anpassung eines spi-Lcd an den rpi anspruchsvoll genug.
Ich habe lediglich Erfahrung mit der Arduino Plattform. Neulich hatte ich ein TIVA C Series board in der Hand. Diesen konnte ich mit dem Code Composer in C programmieren. Man konnte auch die Wiring Programmiersprache nehmen. Angeblich gibt es ein solches IDE für den Cortex M3 https://github.com/leaflabs/maple-ide. Könnte ich in dem maple-ide den oben erwähnten Board programieren ? Kann ich den externen Tagktgeber verwenden ? Übrigens danke euch sehr für eure guten Tips und Geduld.
Karel Mácha schrieb: > Kann ich den externen Tagktgeber verwenden ? ??? meinst du den spi-takt? der kommt vom Master, was sinnvollerweise der sendende rpi ist. Kauf dir das spi-lcd für 10€. Schließ es an deinen arduino an und bring es dort zum laufen. Wenn das geklappt hat schließt du es an deine rpi an und überträgst den arduino-Initialisierungscode auf den rpi. Wenn du damit erfolgreich fertig bist, hast du genügend Erfahrung, um den cortex-spi mit einem größeren LCD angehen zu können.
Grundschüler schrieb: > meinst du den spi-takt? der kommt vom Master, was sinnvollerweise > der sendende rpi ist. Das habe ich verstanden. Wenn man den fbtft Treiber verwendet, kann man auch den Takt angeben (16MHz, 32MHz), der für die Übertragung verwendet wird. Die von mir oben angehängte Schaltung schafft die 32MHz aber nicht. Ich möchte das Display - welches ich bereits besitze - nicht an Arduino oder einem anderen Mikrocontroller direkt betreiben. Ich möchte es zusammen mit dem fbtft Treiber von nostro am R-Pi als Display verwenden. Ich kann auch die obige Schaltung nachbauen - auf einer Lochraster-Platine, oder eine Platine selbst entwerfen. Ich dachte, ich kann diese Schaltung mit einem Mikrocontroller / Development Board realisieren. Meine Vorstellung war : der Mikrocontroller nimmt bei jedem Takt die 1/0 die von dem MOSI Pin am R-pi kommt, speichert sie ab und nach dem 16-ten Bit schickt diese über seine Pins parallel an das Display und sendet auch eine 0 an das WR Eingang am Display. Verstehe ich hier etwas ganz falsch ?
Karel Mácha schrieb: > Meine Vorstellung war : der Mikrocontroller nimmt bei jedem Takt die 1/0 > die von dem MOSI Pin am R-pi kommt, speichert sie ab und nach dem 16-ten > Bit schickt diese über seine Pins parallel an das Display und sendet > auch eine 0 an das WR Eingang am Display. uC ist meiner Meinung der falsche Ansatz. Der STM32F103C8T6 hat zum Beispiel auch nur max. 18 MHz SPI Takt. Dazu brauchst du noch CPU-Takte um die Daten von SPI zum Display zu schieben. Viel gewonnen hat man da, wenn überhaupt, nicht. Besser schnellere Logikbausteine nehmen, gleich programmierbare Logik (siehe oben) oder am besten Displays mit eingebautem SPI.
:
Bearbeitet durch User
Stefan H. schrieb: > Der STM32F103C8T6 hat zum Beispiel auch nur max. 18 MHz SPI Takt. Laut der Beschreibung hier http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164476?sc=internet/mcu/product/164476.jsp kann der Cortex M3 bis zu 72Mhz. Dazu steht da "PLL for CPU clock" Ich dachte der STM32F103C8T6 kann also von dem spi-takt angesteuert werden. Stefan H. schrieb: > Dazu brauchst du noch CPU-Takte um die Daten von SPI zum Display zu schieben. So ist es bei der oberen Schaltung auch oder verstehe ich es falsch ? Ich schaue mir Stefan H. schrieb: > Besser schnellere Logikbausteine nehmen Könntest du mir bitte irgendwelche vorschlagen ? Ich schaue mir die Programmierbare Logikbausteine an. Mein Wunsch ist sich die Arbeit mit der Realisierung der oben beschriebenen Schaltung zu erleichtern für vergleichbare Kosten. Ich möchte das Display nicht wegwerfen un ich soll auch mit der Technologie nicht überfordert werden. Ich danke allen die mir hier versuchen zu helfen.
Karel Mácha schrieb: >> Der STM32F103C8T6 hat zum Beispiel auch nur max. 18 MHz SPI Takt. > > Laut der Beschreibung hier > http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164476?sc=internet/mcu/product/164476.jsp > kann der Cortex M3 bis zu 72Mhz. Dazu steht da "PLL for CPU clock" Ich > dachte der STM32F103C8T6 kann also von dem spi-takt angesteuert werden. Vielleicht verstehe ich hier etwas falsch, aber kann es sein, dass du SPI bzw Mikrocontroller im Algemeinen nicht ganz verstehst? Es gibt den Mikrocontroller Takt in dem dieser sein Programm (etwa einen Maschinenbefehl pro Takt) abarbeitet und es gibt den SPI Takt, vorgegeben vom SPI-Master (in diesem Fall Raspberry Pi), der vorgibt wie schnell Daten eingelesen werden (Ein Bit pro Takt). Der STM32 kann mit dem eingebauten SPI Modul Daten mit maximal 18 MHz einlesen. Von da aus muss das Programm die Daten abe noch zum Display weitergeben. Was noch einige CPU Takte bei 72 MHz bedeutet Du kannst natürlich ein Programm schreiben, dass das SPI Modul nicht nutzt sondern alles in Software erledigt. Also die einzelnen Bits einlesenm zu einem 16 Bit Datenwort zusammensetzen und dann an den TFT ausgeben. Aber bei z.b 30 MHz SPI Takt und 72 MHz CPU Takt dürfte dieses Programm nur etwa zwei AMaschinenbefehle lang sein - eher unwahrscheinlich. Verwende doch das von mir zitierte Guzunty. Die ganze Hardware kannst du für ein paar Euro auf einer Lochrasterplatine aufbauen. Und die Software ist auch schon fertig und kann mit ein paar Befehlen vom PI aus geladen werden.
Stefan H. schrieb: > Du kannst natürlich ein Programm schreiben, dass das SPI Modul nicht > nutzt sondern alles in Software erledigt. Also die einzelnen Bits > einlesenm zu einem 16 Bit Datenwort zusammensetzen und dann an den TFT > ausgeben. Geeenau so habe ich mir das vorgestellt. :-D So funktioniert die obige Schaltung dachte ich nämlich. Sie braucht auch 16 spi-Takte um ein 16bit Datenwort an das Display zu schicken. Ich dachte halt, dass ich diese’’n Funktionsprinzip mit dem Cortex M3 schneller hin-bekomme. Ich beschäftige mich gerade mit dem Guzunty. Ich habe gerade erst entdeckt, dass es beim GitHub auch die Platinenlayouts gibt !!! Und die XC9500XL kann man ab 1,50€ bestellen. Ich dachte zuerst, ich muss für so ~15€ ein Kit aus USA bestellen :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.