Guten Tag, http://www.waveshare.com/wiki/Core429I ich habe das Board, dessen Schaltplan im Anhang zu sehen ist. Wenn ich jetzt ein SSD1963 anschließen will, so muss ich doch das SDRAM (links unten) ablöten, weil ich den FMC_NE1 für den Chip-Select des SSD bräuchte, oder? PS: Vermutlich ist der Schaltplan an dieser Stelle unkorrekt. Der FMC_NE1 liegt an PD7 nicht an PH6 und überall steht FSMC obwohl der 429 den FMC hat. Prinzipiell müsste ich den SSD wie folgt anschließen, oder? FMC_D0 - FMC_D15 => D0 - D15 FMC_NOE => E(/RD) FMC_NWE => /RM(/WR) FMC_NE1 => /CS FMC_A16 => D/C Ich bin über eure Hilfe sehr dankbar :-)
Direkt über den LTDC des µC willst du nicht, oder? EDIT: Ich frage deshalb, weil ich schon zwei verschiedene TFT-Controller benutzt habe und am Ende hat mir LTDC am besten gefallen.
> Direkt über den LTDC des µC willst du nicht, oder?
Danke für deine Antwort :-)
Nein. Ich habe ein Display Modul und dort nur die Kontakte des SSD1963
nach außen geführt.
Der SSD1963 würde, wenn ich es richtig verstanden habe, die Rolle des
SDRAMs und des Controllers (LTDC) übernehmen?!
Demnach muss der "alte" SDRAM (links unten im Schaltplan) runter, nicht?
GuteFrage schrieb: > Der SSD1963 würde, wenn ich es richtig verstanden habe, die Rolle des > SDRAMs und des Controllers (LTDC) übernehmen?! Ja genau, der SDRAM wird vom SSD gesteuert, du greifst nur indirekt über den SSD darauf zu. GuteFrage schrieb: > Nein. Ich habe ein Display Modul und dort nur die Kontakte des SSD1963 > nach außen geführt. Ich glaube ich habe auch das gleiche rumliegen. War mir zu langsam und habe deswegen auf LTDC gewechselt. Das Teil ist relativ langsam. Da flüssig etwas Bewegtes darzustellen habe ich nicht hinbekommen. Ich kann dir allerdings nicht sagen ob es an meinen Fähigkeiten lag oder der SSD einfach zu langsam war. Habe einfach den kompletten Hintergrund abwechselnd mit zwei Farben füllen lassen. FSMC habe ich so weit hochgeschraubt, dass keine Fehler mehr zu erkennen waren. Und trotzdem war das Teil relativ langsam. Wenn ichs noch recht im Kopf habe, waren es um die 10FPS. GuteFrage schrieb: > Demnach muss der "alte" SDRAM (links unten im Schaltplan) runter, nicht? Also normal kannst du das einfach dazustecken. Mit dem CS wird dann entweder der SDRAM oder der SSD aktiviert bzw. angesprochen.
Danke für den Beitrag. Bewegte Bilder sollen es nicht werden, wodurch der SSD erst einmal reichen soll :-) Ich will nur Texte ausgeben, die sich selten ändern. Stimmt. Das NE1 ist der ChipSelect. Wenn ich diesen auf beiden SDRAMs nutzen, kommt es zum konflikt. Deswegen muss ich den alten "SDRAM" entfernen müssen :( Danke!
GuteFrage schrieb: > Bewegte Bilder sollen es nicht werden, wodurch der SSD erst einmal > reichen soll :-) Ich will nur Texte ausgeben, die sich selten ändern. Ja, dann passt der auf jeden Fall! Die Ansteuerung ist auch bissle blöd. Du kannst den Speicher nicht direkt beschreiben. Du musst ihm vorher ein paar Befehle senden, welchen Speicherbereich du beschreiben möchtest. Naja, wirst ja sehen, Spaß macht es auf jeden Fall! GuteFrage schrieb: > Stimmt. Das NE1 ist der ChipSelect. Wenn ich diesen auf beiden SDRAMs > nutzen, kommt es zum konflikt. Deswegen muss ich den alten "SDRAM" > entfernen müssen :( Eigentlich gibt es ja ein NE0 und auch noch. Ich habe grad keine Zeit mich da reinzulesen, aber ich würde an deiner Stelle mal schauen, ob es nicht doch so geht. Auf keinen Fall musst du das gesamte SDRAM entfernen! Hier noch ein paar Links zu dem Thema: Beitrag "STM32F4 Discovery - SSD1963 TFT" Beitrag "STM32F4 SSD1963 TFT FONTS" Hey, ich sehe gerade, ich habe den SSD1963 auch schon am Core429I gehabt, siehe die beiden Threads :) Und ich habe da nichts weggeschnibbelt :).
>Das NE1 ist der ChipSelect. Wenn ich diesen auf beiden SDRAMs >nutzen, kommt es zum konflikt. Deswegen muss ich den alten "SDRAM" >entfernen müssen. Leider Falsch. 4LCD und 2 SDRAM packt der STM32F429 gleichzeitig. Wäre ja auch blöd, wenn man Grafik nicht mit mehr RAM kombinieren könnte. Gruß, dasrotemopped.
> Leider Falsch. 4LCD und 2 SDRAM packt der STM32F429 gleichzeitig.
Ja stimmt. Ich habe nicht realisiert, dass der FMC_NEx für SDRAM NOR
NAND jeweils an anderen Pins liegt.
Guten Morgen, ich habe das Display nun erfolgreich anschließen können. Aktuell ändere ich immer nur die Hintergrundfarbe:
1 | while (1) { |
2 | SSD1963_Clear(SSD1963_ConvertColor(0x00000000)); |
3 | SSD1963_Clear(SSD1963_ConvertColor(0xffffffff)); |
4 | }
|
1) Schwarz funktioniert, das 0xFF ist aber eher ein heller Blauton. 2) Das ganze arbeitet gerade mit geschätzten 3-4 FPS. Lässt sich da noch irgendwie mehr rausholen oder bin ich an der Grenze? Beste Grüße.
Du hast einen Fehler in der Initialisierung. Guck mal in den von mir geposteten Thread nach dem dort geposteten Manual. Ich bin leider gerade nicht in der Werkstatt sonst hätte ich dir meine Init-Routine geschickt...
Bei mir hatte ich das gleiche Problem. Dein Takt ist nicht gesetzt. Ich hatte damals zwei Zeilen vertauscht gehabt. Überprüfe das nochmals. Dann schau dir die Befehle für die Pixelformate und Ähnliches an. Da ist ein Fehler im Manual. Probiere diese Einstellungen einfach mal alle durch.
Danke, Reginald Leonczuk.
Das war bislang sehr hilfreich. Das neuere Datenblatt enthält auch
irgendwie mehr Infos. Die Farben werden nun korrekt angezeigt. Ich
versuche noch gerade die FPS anzukurbeln.
> Dein Takt ist nicht gesetzt.
GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
Da es ohne diese Zeile erst gar nicht funktionieren würde, denke ich, du
meinst etwas anderes?
GuteFrage schrieb: > GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz; > > Da es ohne diese Zeile erst gar nicht funktionieren würde, denke ich, du > meinst etwas anderes? Nee, ich meinte die SSD PixelClock. Schau dir deine Init-Routine nochmal genau an. Da muss entweder irgendwas vertauscht sein bzw. VCO und PLL stimmt nicht. Zumindest war das bei mir der Fall.
Okay, vielleicht habe ich einen Denkfehler drinn: Am OSCIN des SSD habe ich 10 Mhz. VCO = Input clock * (M + 1) = 10 Mhz * (M + 1) PLL = VCO / (N + 1) mit 250 Mhz < VCO < 800 Mhz und PLL < 110 Mhz (aus dem DB http://www.solomon-systech.com/files/ck/files/SSD1961_2_3_Application_note_v1.7.pdf Seite 16/28). In dem Beispiel des DBs ist auch ein 10 Mhz Quarz angeschlossen. Also habe ich die selben Werte genommen, was zu einer PLL frequenz von 100 Mhz führt. M = 29, N = 2 SSD1963_Write_cmd(0xE2); SSD1963_Write_data(0x001D); SSD1963_Write_data(0x0002); SSD1963_Write_data(0x0054); //ENABLE PLL SSD1963_Write_cmd(0xE0); SSD1963_Write_data(0x0001); delay_us(10); SSD1963_Write_cmd(0xE0); SSD1963_Write_data(0x0003); delay_us(10); Ich habe mit den Werten auch etwas rumgespielt, es ist aber kaum eine Veränderung zu sehen. Irgendwie vermute ich den Fehler woanders - was aber auch nur eine Vermutung ist.
GuteFrage schrieb: > Ich habe mit den Werten auch etwas rumgespielt, es ist aber kaum eine > Veränderung zu sehen. Das bestärkt mich in meiner Vermutung, dass da irgendwas vertauschst ist in der Init-Routine. Ich erinnere mich noch, dass ich ewig den Fehler gesucht habe, ja schon gedacht habe, dass der SSD Schrottreif ist. Bis ich gemerkt habe, dass in meinem Code eine Zeile nicht da war, wo sie hingehört hat. Wie gesagt, wäre ich in der Werkstatt, hätte ich dir meinen Code zugespielt. Muss man nicht am Ende der Übertragung des PLLs und der Teiler noch irgendwie das ganze "Locken"? Ach und noch was: Guck dir mal die FSMC-Timings an. Ist der Code kopiert? Falls ja, lies dich da mal ein bisschen ein und schraube die Werte mal ordentlich runter. Vielleicht kommen die Befehle nicht korrekt an. Nur mal so als Test.
> Ich erinnere mich noch, dass ich ewig den Fehler > gesucht habe, ja schon gedacht habe, dass der SSD Schrottreif ist. Sehr motivierend :-) Laut Datenblatt gibt es ein Dummy Byte welches später gesendet werden muss. Habe ich auch gemacht. Ich gehe nochmal alles Schritt für Schritt durch. Der Teufel steckt im Detail.
Ich hatte noch einmal von vorne angefangen. Der Fehler aber besteht weiterhin. Ich bin mit dem Thema durch für heute.
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.
