Hallo, ich bin aktuell am Programmieren eines STM32F407 DISCOVERY. An diesem soll das 5 Zoll große Display EVE3 von MatrixOrbital mit kapazitivem Touchscreen und 800x480 Pixeln angeschlossen werden. Das Display und der Mikrocontroller kommunizieren über den SPI2 und einer Taktfrequenz von ca. 2 MHz. Die Initialisierung des Codes wurde nach ProgrammingGuide durchgeführt. Dort funktionieren auch alle Lese- und Schreibzugriffe, danach zeigt mir das Display oftmals viele bunte Striche auf weißem Hintergrund oder nur einen weißen Hintergrund. Leider werden Befehle die ich in die Displayliste schreibe ignoriert (siehe erste Displayliste in der Displayinitialisierung). Ich hab ebenfalls probiert die bereitgestellt Beispielbibliothek zu verwenden und ebenfalls das bekannte Testprogramm für die MatrixOrbital Displays versucht auszuprobieren. Leider ohne Erfolg Da ich selber nicht weiterkomme und ich bald ein Ergebnis brauche, hoffe ich, dass mir hier jemand helfen kann. Programmiert wird das Ganze in der CubeIDE. Angehängt hab ich das Datenblatt und den ProgrammingGuide des verbauten Controllers, mein C-Source-File und die Projektdatei. Grüße
Flo schrieb: > Da ich selber nicht weiterkomme Bist du sicher, dass deine Hardware funktioniert? Wie sehen die SPI-Signale an Display und µC aus? Welche Messmittel hast du? Digital-Oszi? Logic-Analyzer? > Angehängt hab ich Häng doch noch ein Foto vom realen Aufbau an.
Als Messmittel verwende ich ein PC-Oszilloskop (Hantek6022BE) mit zwei Kanälen an denen jeweils ein 10:1 Tastkopf angeschlossen ist. Das Display wird aktuell über ein Labornetzteil mit Spannung versorgt. Fotos vom realen Aufbau sowie die SPI-Signale bei einem einfachen Schreibbefehl (wr8(REG_RAM + REG_ROTATE, 0x55)) auf MOSI und Lesebefehl (rd8(RAM_REG + REG_ID)) MISO habe ich angehängt. Beide sind innerhalb der while-Schleife in main und nach der Displayinitialisierung durchgeführt worden.
Flo schrieb: > mein C-Source-File und die Projektdatei. Soll das ein Witz sein? Ich sehe da keine einzige Zeile selbst-verfassten Code und statt dessen nur von CubeMX generierte Initialisierung. Soo einfach ist es nun auch nicht...
Entschuldigen Sie vielmals. Beim hochladen der Datei muss mir ein Fehler unterlaufen sein. Nun habe ich die wirkliche Source-Datei angehängt.
Du machst ein SSDisable, aber der DMA kann ja noch laufen. Besser den DMA complete abwarten und dann weitermachen. Bzw die Daten in eine Queue packen, sonst geht ja der DMA Vorteil verloren wenn es doch blockiert.
Als blutiger Anfänger würde ich zunächst einen weiten Bogen um das Thema DMA machen, und das zuerst mal mit den blocking-Funktionen zum Laufen bringen. Das Optimieren kommt erst deutlich später...
Vielen Dank für die zahlreichen Antworten. Ich hab nun den DMA rausgeworfen und das Display schaltet sich zuverlässig ein und zeigt einen weißen Bildschirm. Wenn die Displaylist_Befehle funktionieren sollte das Display mit dem Befehl CLEAR_COLO_RGB(0,0,0) doch eigentlich schwarz sein? Die entsprechenden SPI_Commands hab ich überprüft und diese sind korrekt. Damit der Code leichter zu verstehen ist habe ich diesen in Bezug auf Displaylist_Befehle an den ProgrammingGuide angepasst und ihn hier wieder mit angehängt. Ich bin um jeden Vorschlag froh. Vielen Dank schon mal.
Ich würde das Rad nicht neu erfinden sondern auf bewährtes zurückgreifen: https://www.mikrocontroller.net/articles/FT8xx_Library https://github.com/RudolphRiedel/FT800-FT813 Es gibt auch einen Thread dazu hier im Forum und Rudolph ist hier aktiv, falls mal fragen zur Lib aufkommen.
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.