Forum: Mikrocontroller und Digitale Elektronik Probleme ILI9341 8Bit


von Michael A. (michael_a108)


Angehängte Dateien:

Lesenswert?

Hallo community,
Arbeite gerade an einem Projekt mit einem MCU von NXP (i.mxRT1020). 
Versuche hierbei gerade ein Display-Board (integrierter chip ILI9341) im 
8Bit Modus anzusteuern (Link: 
https://www.conrad.at/de/p/tru-components-touchscreen-monitor-7-1-cm-2-8-zoll-320-x-240-pixel-inkl-touchpen-2144984.html). 
Habe hier allerdings einige Probleme, zum Einen bin ich mir nicht 
sicher, ob die Initialisierungsroutine korrekt ist. Zum Zweiten habe ich 
ein Problem mit den Spannungspegeln. Habe die Communication-lines 
natürlich nicht direkt an das Display geschlossen, sondern jeweils in 
Serie einen 10k Resistor, man weiß ja nie. Jetzt fällt mir allerdings 
auf, dass an den Pins des Display-Boards nicht immer der gewünschte 
Spannungspegel liegt (z.B. gebe ich beim MCU 3.3V [also logic high] aus 
und am Displayboard liegen 1,7V an -> Spannungsabfall am Widerstand 
1,6V, obwohl das nur eine Kommunikationsline ist). Das führt dann 
logischerweise auch zu ner fehlerhaften Kommunikation.
An was das liegen?
Habe nen kleinen Verdacht: Dieses Board ist dafür gebaut auf nen Arduino 
board aufgesteckt zu werden, folglich auch für den Betrieb von 5V-Logik 
gebaut. Folglich wurde auf dem Board Bus-Transceiver (74LVC245A) in 
Serie mit der Kommunikationsline verbaut. Laut dem Datenblatt dürfte der 
Betrieb mit 3.3V Logik allerdings kein Problem darstellen!?.
Hättet ihr eine Idee, wo das Problem liegen könnte. Die init-Routine 
findet ihr im Anhang.
Viele Grüße

von Olaf (Gast)


Lesenswert?

> Habe die Communication-lines natürlich nicht direkt an das Display
> geschlossen, sondern jeweils in Serie einen 10k Resistor, man weiß ja nie.

Klingt ziemlich dumm.

1. Intellektueller Ansatz:

Schau dir mal Ausgangswiderstand, Eingangswiderstand, Kapazitaetsbelag 
an und rechne.

2. Ing-Ansatz:

Haeng dein Oszi auf die Leitungen und staune.

3. Arduino-Ansatz:

Solange googeln bis man jemand findet der genauso brilliant war.

Olaf .-)

von Arduinoquäler (Gast)


Lesenswert?

Michael A. schrieb:
> Hallo community,

Muss man ein Display wirklich so kompliziert ansteuern? Ich
habe da einfachere (und funktionsfähige) Versionen vor Augen.

z.B:
Beitrag "Re: ILI9341 langsam Verbesserungsvorschläge?"

von Arduinoquäler (Gast)


Lesenswert?

Eigentlich eher noch das, die aufgeräumte Version.
Zwar nicht C++, aber braucht's ja auch nicht um jeden Preis.

Beitrag "Re: ILI9341 langsam Verbesserungsvorschläge?"

von Cartman (Gast)


Lesenswert?

> in Serie einen 10k Resistor

Koestlich. Wo lernt/lehrt man denn sowas?

von Michael A. (michael_a108)


Lesenswert?

Cartman schrieb:
>> in Serie einen 10k Resistor
>
> Koestlich. Wo lernt/lehrt man denn sowas?
Naja, alleine die Tatsache, dass es ein Potentialunterschied zwischen 
meinen MCU-Pins und den Pins des LVC245A gibt, zeigt dass meine 
Intuition korrekt war.
Mir scheint, als wären Sie nicht sehr bewandert bezüglich 
Signalleitungen?
Wären Sie an diesem Projekt gesessen, hätten Sie jetzt wahrscheinlich 
zerstörte Pins am MCU (die sind nicht sehr tolerant gegenüber hohe 
Ströme).

: Bearbeitet durch User
von Michael A. (michael_a108)


Lesenswert?

Arduinoquäler schrieb:
> Michael A. schrieb:
>> Hallo community,
>
> Muss man ein Display wirklich so kompliziert ansteuern? Ich
> habe da einfachere (und funktionsfähige) Versionen vor Augen.
>
> z.B:
> Beitrag "Re: ILI9341 langsam Verbesserungsvorschläge?"

Die Kommunikation ist Interrupt-gesteuert, weil der MCU mit ner 
wesentlich höheren Frequenz arbeitet und einfache delay-Funktionen 
würden den Prozessor stark ausbremsen.
Viele Grüße

von Cartman (Gast)


Lesenswert?

> Mir scheint, als wären Sie nicht sehr bewandert bezüglich
> Signalleitungen?

Wie man sich taeuschen kann.
Das perlt aber an meiner Teflonseele tropfenfrei ab.


> gebe ich beim MCU 3.3V [also logic high] aus
> und am Displayboard liegen 1,7V an

So ein Murks war mir aber immerhin fuer einen kurzen Lacher gut.

Ich werde aber den weiteren Fortgang aufmerksam verfolgen.
Da kommt bestimmt noch mehr.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Ich hole auch schon Mal das Popcorn. Das kann noch lustig werden.

von Arduinoquäler (Gast)


Lesenswert?

Andreas S. schrieb:
> Das kann noch lustig werden.

Geil finde ich auch dass man den Parallel-Port eines Displays
interrupt-gesteuert anspricht.

von Michael A. (michael_a108)


Lesenswert?

Anyway, hab das Problem jetzt gelöst.
Schönen Tag noch

von drm (Gast)


Lesenswert?

>Habe nen kleinen Verdacht:
>Dieses Board ist dafür gebaut auf nen Arduino board aufgesteckt zu werden.
Zitat Datenblatt vom TFT "Monitor"
>Dieser Touchscreen ist für den Arduino® UNO/Mega2560 geeignet.
>Kompatibel mit jedem Arduino® '328 oder Mega
pures Comedy Gold

wie ersichtlich auf den Fotos erwartet das TFT 5V Signalpegel und 
konvertiert sie nach 3.3V für den ILI9341.

der verwendete NXP i.mxRT1020 ist ein typischer Cortex-M mit 3,3V IO 
Spannung

>Wären Sie an diesem Projekt gesessen, hätten Sie jetzt wahrscheinlich
>zerstörte Pins am MCU.
>Die sind nicht sehr tolerant gegenüber hohe Ströme.
Spannungen über 3.6V, nicht Ströme. Und was passiert wohl wenn man die 
Spannung mit 10k "begrenzt" ?

Der ILI9341 ist sehr wohl für einen Cortex-M geeignet, im SPI Modus, 
Direct Drive oder Parallel ist da geschmackssache, aber nicht das hier 
verwendete Arduino Board.

Aber die Firmware wird noch ein paar Highlights bereit halten nach dem 
Codeschnipsel zu urteilen. Wöre ja auch zu einfach aus der TFT_espi Lib 
von Arduino zu klauen.
wenn doch, bitte hier:
https://github.com/Bodmer/TFT_eSPI

von Arduinoquäler (Gast)


Lesenswert?

Michael A. schrieb:
> Anyway, hab das Problem jetzt gelöst.

Mit noch mehr 10kOhm "Resistoren"?

Michael A. schrieb:
> sondern jeweils in Serie einen 10k Resistor, man weiß ja nie.

von Michael A. (michael_a108)


Lesenswert?

Arduinoquäler schrieb:
>
> Mit noch mehr 10kOhm "Resistoren"?
>
Ne habe mich ursprünglich verschrieben, es waren je 1kOhm.

von Arduinoquäler (Gast)


Lesenswert?

Michael A. schrieb:
> Anyway, hab das Problem jetzt gelöst.

.... und die Lösung ist natürlich hochgeheim, nicht wahr?

Das steht schon in der netiquette (Punkt 6) dass man
möglichst alles geheimhalten soll. Aber die Form wahren
und der helfenden Forums-Gemeinde einen Dienst erweisen
wäre ja voll uncool ....

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
Noch kein Account? Hier anmelden.