Teilantwort von 1,8-Zoll-TFT-Bildschirm mit Arduino

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.Spannungsverschiebung

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.

Was ist die Geschwindigkeit, die Sie verwenden? Ich habe auf einem anderen Spi-Display getestet, ob der Ersatzwiderstand vorhanden ist R 1 R 2 R 1 + R 2 10k beträgt, beträgt die maximale Frequenz, die Sie verwenden können, aufgrund von Streukapazitäten etwa 1 MHz. Ihr Ersatzwiderstand beträgt ungefähr 3 k, sodass Sie nicht schneller als 3 MHz fahren können. Wenn Sie einen 1k + 1,5k-Widerstandsteiler verwenden, sollten Sie die maximale ATMEGA328P-SPI-Geschwindigkeit von 8 MHz erreichen.
Ich weiß, dass es nicht die Lösung ist, aber ich habe das Arduino direkt mit 4,7 V versorgt (ST7735 ist tolerant gegenüber 4,7 V) und das Ganze funktionierte wie ein Zauber. Wird die endgültige Lösung aktualisieren, sobald sie fertig ist.

Antworten (3)

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.

Hey, ich habe vergessen zu erwähnen, dass ich die Spannung mit einem Widerstandsnetzwerk ( openimpulse.com/blog/wp-content/uploads/2012/06/… ) absenke und die Wellenform auf DSO und etwa 3 V beobachtet habe.

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 R 1 R 2 R 1 + R 2 Ist 10   k Ω , 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 3   k Ω . Dies würde in meinem Fall eine maximale Geschwindigkeit von 3,3 MHz (dh 2 MHz auf Arduino Uno) ergeben.

mögliche Lösungen:

  • Verwenden Sie einen Widerstandsteiler R 1 = 1   k Ω Und R 2 = 1.5   k Ω .
  • Wenn es nicht funktioniert, oder wenn Sie keine Lust auf einen zusätzlichen Stromverbrauch von einigen mA haben:

    1. Überprüfen Sie die maximale SPI-Geschwindigkeit F M A X an dem Ihr Display arbeitet.
    2. Berechnung k = F D e S ich R e D F M A X
    3. Teilen Sie beide Widerstände durch k.
Hallo @next-hack. Ich habe es mit 1k und 1,5k Widerstand versucht, aber kein Glück. Aber ich denke, Ihre Idee könnte mich in die richtige Richtung führen. Da das Betrachten der Signale auf DSO ein kapazitives Verhalten zeigt (allmählich ansteigende und abfallende Signale anstelle eines scharfen Signals), darf ich wissen, wie Sie die maximale Geschwindigkeit mit Hilfe von Widerständen berechnet haben?
Ab sofort stört mich der Überstrom nicht, da ich im Endstromkreis vorhabe, einen Puffer zu verwenden (wie auf der Adafruit-Seite gezeigt). Ansteuern des Puffers bei 3,3 V und Verschieben der V-Pegel auf 3,3 V.
Nur Versuch und Irrtum :) Eine Frage: Wenn Sie eine SPI-Geschwindigkeit von beispielsweise 250 kHz einstellen, funktioniert es?
Ich habe das nicht versucht ... lassen Sie mich das versuchen und mich bei Ihnen melden.
Kein Glück. Ich habe es mit 250kHz Taktfrequenz versucht. Gleiche Ergebnisse, nur langsamere Updates. (Ergebnisse:- ibb.co/mD0M0b )
Ich kann daraus schließen, dass etwas mit der Konfigurationsdatei und nicht mit der SPI-Kommunikation nicht stimmt.
Könnten Sie in Ihrer Frage auch den Quellcode posten? Haben Sie auch Reset, CS und D/C (über einen Teiler) angeschlossen? Kannst du die Spannungen prüfen?
Ich verwende den Beispielcode "graphicstest" aus der Adafruit ST3775-Treiberbibliothek ( learn.adafruit.com/1-8-tft-display/downloads ). Und ja, ich habe Reset und D / C (über Teiler) angeschlossen, CS habe ich direkt geerdet, da ich keine Widerstände mehr hatte. Die Spannungspegel liegen wie erwartet bei 3 V. Und der Originalcode, der mit Tiva funktioniert, ist auch in der Frage verlinkt (auf Github geteilt).
Der CS sollte nicht immer geerdet sein, da er als "Start of Frame" verwendet wird. Auf diese Weise weiß der Display-Controller, wann Sie das erste Byte des Befehls senden. Sie könnten für das CS-Widerstandspaar "jedes" (z. B. 10-15k) versuchen, das das Verhältnis 3/5 ergibt, und eine sehr langsame Taktfrequenz verwenden und es versuchen.

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.

youtube.com/watch?v=LZ6oAqTX5fg&feature=youtu.be&t=186 . Dieses Video hat mich zur Lösung geführt.