Ich versuche mich an LCD-Bildschirmen. Also entschied ich mich für diesen 1,8-Zoll-TFT-LCD-Bildschirm und testete ihn mit dem TM4c123gxl-Board unter Verwendung einer ST7735-Bibliothek (adaptiert von Adafruit) und der Bildschirm funktioniert wie erwartet perfekt. ( LCD-Code der Tiva-Serie 1,8 Zoll ).
Für ein anderes Projekt plane ich also, denselben Bildschirm zu verwenden, aber mit Arduino UNO. Also habe ich dasselbe angeschlossen und versucht, das mit der Adafruit-Bibliothek gepackte Grafiktestbeispiel zu testen, aber leider funktioniert es nicht wie erwartet, wie Sie im Video sehen können .
Ich verwende ein Widerstandsteilernetzwerk, um die Spannung von der 5-V-Logik auf 3 V zu verschieben.
Ich habe die SPI-Leitungen mit einem Logik-Sniffer überprüft und sie scheinen wie erwartet zu funktionieren. Und das kann kein Rauschen sein, weil es wiederholt programmiert wurde und das Verhalten genau das gleiche ist wie im Video.
Ich kann daraus schließen, dass mir wahrscheinlich etwas bei der Konfiguration fehlt, aber ich habe die Bibliotheksdatei von Tiva und Arduino verglichen und beide scheinen das LCD mit identischen Werten zu konfigurieren.
Jede Richtung wäre also eine große Hilfe, da mir die Ideen ausgehen.
Das von Ihnen verwendete LCD ist ein 3,3-V-Teil. Das Tiva Launchpad ist auch ein 3,3-V-Teil. Der Arduino Uno ist jedoch ein 5-V-Teil.
Sie versorgen das LCD mit einer zu hohen Spannung - ganz ehrlich, Sie haben Glück, dass es überhaupt funktioniert. Verwenden Sie einen Pegelumsetzer oder ein 5-V-kompatibles LCD.
Die Widerstandswerte Ihres Teilers scheinen zu hoch zu sein, es sei denn, Ihre SPI-Geschwindigkeit ist auf eine sehr niedrige Frequenz eingestellt.
Ich habe auf einem anderen SPI-Display getestet , dass aufgrund von Streukapazitäten der Ersatzwiderstand vorhanden ist Ist , dann beträgt die maximal zuverlässige SPI-Geschwindigkeit 1 MHz.
Ihr Display + PCB kann natürlich unterschiedliche Streukapazitäten aufweisen, aber ich erwarte keine Variation, die größer als eine Größenordnung ist.
Ihr Ersatzwiderstand ist ungefähr . Dies würde in meinem Fall eine maximale Geschwindigkeit von 3,3 MHz (dh 2 MHz auf Arduino Uno) ergeben.
mögliche Lösungen:
Wenn es nicht funktioniert, oder wenn Sie keine Lust auf einen zusätzlichen Stromverbrauch von einigen mA haben:
Wie vermutet lag das Problem bei der Bibliothek selbst und nicht bei der Hardware.
Anstatt Adafruit ST7735 und die Adafruit GFX-Bibliothek zu verwenden, habe ich die mit Arduino bereitgestellte Standard-TFT-Bibliothek verwendet, und es hat wie ein Zauber funktioniert.
Und dieses Problem ist sehr unberechenbar. Da es manchmal mit bestimmten LCDs funktioniert, können Sie manchmal während des Bootens von Arduino einen Blitz dessen sehen, was es anzeigen sollte. Aber die TFT-Bibliothek funktioniert jedes Mal sehr gut mit dem LCD.
nächster Hack
Mayank