Ich möchte ein Arduino TFT-Schild (ILI9341) auf einem Nucleo STM32L476-Entwicklungsboard verwenden. Diese Abschirmung verwendet den 8-Bit-MCU-Modus und funktioniert gut, aber die Pin-Implantation für den Arduino-Anschluss am Nucleo ist nicht sehr praktisch.
Die Zuordnung der Datenbus-Pins ist eigentlich:
TFT | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
NUCLEO | PA8 | PB10 | PB4 | PB5 | PB3 | PA10 | PC7 | PA9 |
Um ein Byte auf den TFT-Bus zu schreiben, muss ich viel verschieben, maskieren usw. ... Dies erzeugt einen Overhead auf der TFT-Kommunikationsbandbreite.
Gibt es auf dem STM32L4 eine Möglichkeit, die GPIOs und PORTs in eine Art "virtuellen parallelen Port" umzuwandeln, wo ich nach der Konfiguration einfach mein Byte in ein Register schreiben und die Hardware dieses Register in die angegebenen GPIOs/PORTs verdrahten kann?
Sie haben Recht mit Ihrer Analyse, dass es sich um ein ungünstiges Layout für einen parallelen Bus handelt.
Eine andere Version Ihrer Pinbelegungsgrafik:
Entnommen aus dem Referenzhandbuch .
Leider gibt es keine Möglichkeit, interne Pins externen Pins zuzuordnen. Der STM32 ist da sehr restriktiv (auch was alternative Funktionen der Pins angeht).
EDIT: Verschrotten Sie diesen Teil für den GPIO:
Das einzige, was mir einfällt (ohne die Hardware zu ändern), was Ihren Prozess beschleunigen könnte, ist der speicherabgebildete Bitbanding-Zugriff auf einzelne Bits des entsprechenden Registers durch einen einzigen Schreibvorgang an eine Wortadresse.
Um dies detaillierter zu sehen, werfen Sie einen Blick auf das Referenzhandbuch des L476, Abschnitt 2.3 über Bitbanding .
Ich habe es bisher nicht benutzt, daher kann ich nichts über die Nützlichkeit sagen. Aber das Erhalten der richtigen Wortadressen für jedes der benötigten Pin-Bits im ODR-Register könnte die Arbeit beschleunigen.
Grund, die Idee mit Bitbanding zu verwerfen:
Wenn man sich das Bitbanding im L476 genauer ansieht, zeigt das Programmierhandbuch , dass nur der Bereich von 0x40000000 bis 0x400FFFFF zugänglich ist. Die GPIO-Register beginnen bei 0x48000000, liegen also außerhalb des Bitbanding-Bereichs.
Die einzige Möglichkeit, Ihre Software wirklich zu vereinfachen, besteht also darin, die Platine anders zu verdrahten.
DiBosco
rom1nux
DiBosco
DiBosco
Arsenal
DiBosco
rom1nux