mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ILI9341 mit RGB interface


Autor: Maximilian Majchrzyk (maximilian_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe enorme Schwierigkeiten meinen Display mit dem ILI9341 mit 
meinem µC zu benutzen, da die Dokumentation meines Erachtens völlig 
konfus konzipiert wurde.

(Der von mir verwendete Mikrokontroller hat ein RGB-18 Bit parallel 
Interface und funktioniert auch mit anderen vorkonfigurierten TFTs, mir 
geht es grad hauptsächlich drum den Fehler in meiner Applikation zu 
finden)

Hat jemand Erfahrungen mit dem IC oder weiss wie man diesen mittels 
SerialInterface auf RGB-18Bit umstellt ?

Denn sobald das funktioniert hat sollte der Rest ja von alleine gehen 
oder ?

Autor: Frickelfritze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maximilian M. schrieb:
> Hat jemand Erfahrungen mit dem IC

ja ich, ein bisschen ganz wenig.

Maximilian M. schrieb:
> weiss wie man diesen mittels
> SerialInterface auf RGB-18Bit umstellt ?

Man liest das Datenblatt und sucht sich den richtigen Befehl
heraus. Schliesslich und endlich wendet man ihn auch noch an.

Im Datenblatt zu finden unter:

8.2.33. COLMOD: Pixel Format Set (3Ah)

(etwa Seite 134 je nach Version des Datenblatts.)

War das zu schwierig um selbst draufzukommen?

Autor: Frickelfritze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maximilian M. schrieb:
> Denn sobald das funktioniert hat sollte der Rest ja von alleine gehen
> oder ?

Erfahrungsgemäss geht nichts von alleine, insbesondere dann wenn
man sich schon beim Heraussuchen eines Befehls schwer tut.

Autor: void (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maximilian M. schrieb:
> ILI9341 [...] da die Dokumentation meines Erachtens
> völlig konfus konzipiert wurde.

Nein, wurde sie nicht. Es werden nur viele Möglichkeiten für das 
Interface geboten und du findest vermutlich nicht die richtige...

> (Der von mir verwendete Mikrokontroller hat ein RGB-18 Bit parallel
> Interface und funktioniert auch mit anderen vorkonfigurierten TFTs

Dann möchtest du also das "18-bit Parallel RGB Interface" (Kapitel 
7.6.9) benutzen?
Nicht verwechseln mit dem "18-bit Parallel MCU Interface" (Kapitel 
7.6.6) welches ein reines Schreib-/Lese-Interface auf den Display 
internen Speicher bietet. Das möchtest du nicht?

> Hat jemand Erfahrungen mit dem IC oder weiss wie man diesen mittels
> SerialInterface auf RGB-18Bit umstellt ?

Wenig. Mal den Adafruit code für ein Display mit 8-bit Parallel MCU 
Interface benutzt. Aber das ist vermutlich genau nicht das was du 
möchtest. ;-/

Für "18-bit Parallel RGB Interface" mit DE Mode müssen DPI [2:0] = “110” 
und RCM [1:0] = “10” gesetzt werden.
Das sind (oh Wunder) die Default-Werte nach Power-Up/HW-Reset. Falls dir 
jetzt auch noch die Default-Timing Werte (z.B. Polarität der Sync 
signale) gefallen brauchst du garnichts mittels "SerialInterface" 
umstellen.

Einfach TFT Signale VSYNC, HSYNC, DE, DOTCLK, D[17:0] anlegen und 
freuen.

Autor: Dominik B. (odysseus1710)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void schrieb:
> Das sind (oh Wunder) die Default-Werte nach Power-Up/HW-Reset. Falls dir
> jetzt auch noch die Default-Timing Werte (z.B. Polarität der Sync
> signale) gefallen brauchst du garnichts mittels "SerialInterface"
> umstellen.

Der ILI ist standardmäßig im Serial-Interface, also mit den 
Default-Werten läuft noch kein RGB-Interface.

Für das RGB-Interface einzustellen habe ich folgende Register 
konfiguriert:

0x3A // Colmod, schon mehrfach angesprochen
0xB0 // Polaritäten der Steuersignale
0xB5 // Timing
0xF6 // Interface Control, hier muss im 3. Parameter-Register
auch wieder das RGB-Interface eingestellt werden (DM und RM)

Ansonsten muss dir klar sein, wie die Parameter-Register eingestellt 
werden.
Dabei unterscheidet der ILI je nach Pegel des DCX-Pin, ob es sich um ein 
Befehl oder ein Wert handelt. Um zu Beispiel das 3. Parameterregister 
des Interface-Control-Registers zu beschreiben, muss deine Senderoutine 
wie folgt aussehen:
ILI_COMMAND(0xF6);
ILI_PARAM(0x00);    // Default-Wert
ILI_PARAM(0x01);    // Default-Wert
ILI_PARAM(0x06);

Autor: dasrotemopped (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das STM32F429i-disc1 verwendet den ili9341 im directdrive-RGB Modus.
Im Beispielcode vielleicht mal nachschauen, wie es dort gemacht wird.

Gruß,

dasrotemopped.

Autor: void (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dominik B. schrieb:
> Der ILI ist standardmäßig im Serial-Interface, also mit den
> Default-Werten läuft noch kein RGB-Interface.

Arg. Stimmt, die Default Werte DM[1:0] = "2'b00" / RM = "1'b0" passen 
nicht zu RGB interface.

"Standardmäßig im Serial-Interface" ist aber auch nicht ganz korrekt; 
Default ist wohl nur ein MCU-Interface Mode. Welcher das ist bestimmen 
dann die IM3-IM0 Pins.

Dominik B. schrieb:
> ILI_COMMAND(0xF6);
> ILI_PARAM(0x00);    // Default-Wert
> ILI_PARAM(0x01);    // Default-Wert
> ILI_PARAM(0x06);

Kann es sein, dass du die beiden ersten Parameter ("Default-Wert") 
vertauscht hast?
So-rum würde es zum mir vorliegenen ILI9341_DS_V1.02 passen.
ILI_COMMAND(0xF6);
ILI_PARAM(0x01);    // Default-Wert
ILI_PARAM(0x00);    // Default-Wert
ILI_PARAM(0x06);    // RGB I/F mode; DM[1:0] = "2'b01" / RM = "1'b1"

Autor: Dominik B. (odysseus1710)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
void schrieb:
> Default ist wohl nur ein MCU-Interface Mode. Welcher das ist bestimmen
> dann die IM3-IM0 Pins.

Stimmt. Beim ST32F429I-Disc1 sind die IM[3:0] eben so verschaltet, dass 
hardwareseitig bereits das serielle Interface aktiviert ist.

void schrieb:
> Kann es sein, dass du die beiden ersten Parameter ("Default-Wert")
> vertauscht hast?

Jepp schuldig, so wie du es geschrieben hast passt es.

Autor: Maximilian Majchrzyk (maximilian_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh vielen Dank für die viele Antworten!

Mein Account hier läuft über mein Gmail (alternativ Maildadresse) und 
deshalb bekam ich keine Notifikation das mir jemand geantwortet hat :(

STM32F429i-disc1... dieses Board besitze ich sogar auch, wo finde ich 
denn den Source Code von CubeMx (ich gehe davon aus das ich dort schauen 
muss) ?


Ich habe schon so viel an Initalisierung durchprobiert und meine 
Display-Settings des Frameworks X-mal angepasst und es passiert nichts 
ausser das ich per SPI Configs meinen Screen schwarz bekomme, sprich er 
macht schon was - nur was ist die Frage...

: Bearbeitet durch User
Autor: dasrotemopped (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
von ST ist alles hier:
C:\Users\->deinUserName<-\STM32Cube\Repository\STM32Cube_FW_F4_V1.13.0\P 
rojects\STM32F429I-Discovery\Examples\BSP

guckst du hier:
Youtube-Video "STM32F429 ILI9341 SPI DMA"

Projekt für das Disco gibt's zum Download da:
https://my.st.com/public/STe2ecommunities/mcu/List...
(incl. ili9341 Lib für CubeMX)
BIN-Datei mit ST-Link Utility flashen ...

Den Rest muss du dir jetzt selbst anlesen.

Gruß,

dasrotemopped.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.