Wie erhöhe ich die Aktualisierungsrate eines Nokia LCD, das ich mit dem STM32F103-Mikrocontroller fahre?
Das LCD ist 132*162 und nimmt einen 9-Bit-Befehl/DATEN mit RGB für jedes Pixel im 565-Format. Da SPI auf STM32 keine 9 Bits ausführen kann, verwende ich USART (mit maximal 4.000.000 Bit / s, da ich HSPI verwende) im 9-Bit-Modus, um das LCD anzusteuern.
Das funktioniert ganz gut, aber die Bildwiederholfrequenz ist nicht so toll. Im Moment brauche ich ungefähr 230 ms, um den gesamten Bildschirm zu schreiben.
Grob gerechnet, (132*162*2*9)/4e6 = 97 ms. Meins ist aufgrund von Overheads höher + der Tatsache, dass ich jedes Byte vor dem Senden spiegeln muss, da USART zuerst nur LSB macht.
Ich suche nach einigen Vorschlägen, wie ich die Bildwiederholfrequenz reduzieren kann.
Verwenden Sie DMA? Ich bin mir nicht sicher, wie nützlich es in diesem Fall wäre, da mein Mikrocontroller nur das LCD ansteuert. Nichts anderes.
Puffern Sie das LCD-Display im RAM und senden Sie es auf einmal an das LCD. Ich kann nicht, da der Mikrocontroller nur 16 KB RAM hat.
Bit Bang GPIO zum Ansteuern des LCD. Ich bin mir nicht sicher, ob dies eine Rate von mehr als 4 MHz von USART erreichen würde. Außerdem verliere ich damit die Möglichkeit, DMA bei Bedarf in Zukunft zu verwenden.
Das von mir verwendete LCD wird in der Nokia C100-Serie verwendet und verwendet den Controller SPFD54124B.
Sie wollen etwas, das wie SPI aussieht, also würde ich versuchen, SPI zum Laufen zu bringen.
Unter der Annahme, dass Ihr LCD (das Sie vielleicht spezifizieren möchten) kein bestimmtes Timing zwischen den Wörtern benötigt, sollten Sie einfach die Wortmodi verwenden, die der STM32F1 zu bieten hat (8 oder 16 Bit, iirc), und 8 Wörter bei ausgeben einmal – das wären 72 Bit, und das kann in 9 SPI-Übertragungen aufgeteilt werden.
Der SPFD54124B verfügt über eine 4-polige 8-Bit-SPI-Schnittstelle. Verwenden Sie diese einfach anstelle der 3-poligen 9-Bit-"SPI-ähnlichen" Schnittstelle.
Siehe folgendes Datenblatt Seite 118.
Die vierpolige SPI-Schnittstelle verwendet a
CSX, SCL, SDA können vollautomatisch von SPI-Hardware auf Ihrer MCU verarbeitet werden. DCX müsste ein GPIO sein. Das ist kein Problem. Sie können den GPIO-Pin einfach auf Daten setzen, Ihre High-Rate-Pixeldaten streamen, dann den Interrupt abfangen, wenn das erledigt ist, den DCX-Pin umschalten, Befehle senden, den Interrupt abfangen, wenn er fertig ist, und wieder in den Datenmodus wechseln.
Wirklich, ich bin irgendwie traurig, dass du so lange gebraucht hast, um zu sagen, welchen Controller du verwendest. Du hättest viel, viel schneller eine Antwort bekommen können.
Sie verwenden LCD mit serieller Schnittstelle. Das hat großen Einfluss auf die Geschwindigkeit. Sie sollten LCD mit paralleler Schnittstelle verwenden, wenn Sie die Bildwiederholfrequenz erheblich beschleunigen möchten.
Tony Stewart EE75
Tony Stewart EE75
SoreDakeNoKoto
SoreDakeNoKoto
Ankit
Ankit
SoreDakeNoKoto