Forum: Mikrocontroller und Digitale Elektronik 4DLCD-32QA mit STM32 initialisieren


von Moot S. (mootseeker)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

ich möchte das 4DLCD-32QA Display von 4D-Systems ansteuern.
Als Kontroller verwende ich einen STM32F103RBT6. Ich möchte das Display 
per Parallel-Schnittstelle ansteuern.
Das Display habe ich wie folgt angeschlossen:

1  -> GND   (GND)
2  -> GND   (GND)
3  -> VCC   (+3.3V)
4  -> x
5  -> x
6  -> x
7  -> RESET (PA0)
8  -> RS    (PA2)
9  -> CS    (PA1)
10 -> RD    (PA4)
11 -> WR    (PA3)
12 -> VCC   (+3.3V)
13 -> x
14 -> GND   (GND)
15 -> x
16 -> x
17 -> x
18 -> x
19 -> x
20 -> x
21 -> x
22 -> x
23 -> DB7   (PA5)
24 -> DB6   (PB6)
25 -> DB0   (PB0)
26 -> DB1   (PB1)
27 -> DB2   (PA15)
28 -> DB3   (PB3)
29 -> DB4   (PB4)
30 -> DB5   (PB5)
31 -> x
32 -> x
33 -> LEDA  (+3.3V)
34 -> LEDK1 (GND)
35 -> LEDK2 (GND)
36 -> LEDK3 (GND)
37 -> LEDK4 (GND)
38 -> LEDK5 (GND)
39 -> LEDK6 (GND)
40 -> GND   (GND)

Ich habe Pin 4 - 6, 13, 15 - 22, 31 - 32 nicht angeschlossen.

Hier der Link zum Datenblatt: 
https://4dsystems.com.au/mwdownloads/download/link/id/483/

Code habe ich noch keinen Programmiert.

Weiss jemand wie man die Init-Funktion realisiert in Code?
Im Anhang habe ich ein Screenshot vom Datenblatt hinterlegt.
Zwar habe ich auf diesem Screenshot wahrscheinlich alle Daten, aber wie 
ich diese verarbeiten soll verstehe ich noch nicht.

Hat jemand ein Tipp oder ein Beispiel wie ich dies realisieren könnte?

: Bearbeitet durch User
von Achim M. (minifloat)


Lesenswert?

Moot S. schrieb:
> 8  -> RS    (PA2)

Damit wird vermutlich wie bei den HD44780-Displays zwischen Register- 
und Daten-Zugriff umgeschaltet. Also erst Register schreiben und Daten 
hinterherpusten.

Eleganter als die defines für Registernamen wäre ein Enum, womit du 
gleich einen Datentyp machen kannst:
typedef enum
{
   4DLCD_READ_COMMAND_AND DISPLAY_PIXEL_STUFF = 0x0C,
   4DLCD_WRITE_OTHER_STUFF_AND_SO_ON = 0x01,
   4DLCD_LOL_ROFL_CRACK_DISPLAY_SPIDERMAN_APP = 0xFF,
   .... usw.
} 4DLCD_32QA_RegT;

mfg mf

von Achim M. (minifloat)


Lesenswert?

PS. Ich hab' mir das DaBla nicht rein gezogen.

von Moot S. (mootseeker)


Lesenswert?

Danke für deine Antwort, ich probiere mal eine brauchbare Funktion zu 
basteln.

von J. -. (Gast)


Lesenswert?

Moot S. schrieb:
> Hat jemand ein Tipp oder ein Beispiel wie ich dies realisieren könnte?
Mit dem ILI9341 habe ich schon lange nichts mehr gemacht und arbeite ich 
da auch nicht wieder ein. Der ist ziemlich bekannt und nicht 
außergewöhnlich.

Er kann mit 8-Bit commands (nach Format-Umstellung auf RGB888 oder 
RGB565 auch mit 8 bit Daten) angesprochen werden. Mit dem 
103RBT-Prozessor sollte das gehen.
Init-Sequenzen findest Du für den ILI9341 im Internet zuhauf. Am 
einfachsten mal bei github suchen.
Aber auch hier auf µC-net kannst Du nach ILI9341 suchen und wirst mit 
Infos eingedeckt.

von Moot S. (mootseeker)


Lesenswert?

Jürgen S. schrieb:
> Init-Sequenzen findest Du für den ILI9341 im Internet zuhauf.

Ja das ist so, aber es scheint, dass es bei diesem Display anderst ist.
Ich kriege es nicht mit den "Standard" Beispielen für den ILI9341 zum 
laufen.

von J. -. (Gast)


Lesenswert?

Moot S. schrieb:
> Ja das ist so, aber es scheint, dass es bei diesem Display anderst ist.
> Ich kriege es nicht mit den "Standard" Beispielen für den ILI9341 zum
> laufen.
Dein Steuerbus (WR/RD/CS/RS/RESET)ist komplett rausgeführt, der 
Daten/Command-Bus auch richtig verdrahtet?
Wenn die Hintergrundbeleuchtung geht, sollte man da zumindest 
'irgendwas' am TFT sehen, wenn ein Init läuft (weil die Kristalle sich 
durch die Spannungsbooster ausrichten).

Hast Du drauf geachtet, daß die IM0..X-Modi hardwareseitig richtig 
eingestellt sind? Die müssen entweder hi(3.3V) oder lo(0V) beschaltet 
werden, sonst wird serieller SPI-Modus oder Anderes aktiviert.

Edit: Ergänzung zum letzten Absatz: Ich sehe gerade, es gibt nur an Pin 
3 des ILI einen IM0 und keinen seriellen Mode. Der IM0 muß für einen 16 
Bit Bus auf lo gesetzt werden und für 8 Bit Bus auf hi.

von Ja Supa (Gast)


Lesenswert?

Moot S. schrieb:
> Ja das ist so, aber es scheint, dass es bei diesem Display anderst ist.
> Ich kriege es nicht mit den "Standard" Beispielen für den ILI9341 zum
> laufen.

Das widerspricht ja komplett der Eingangs gemachten Aussage:

Moot S. schrieb:
> Code habe ich noch keinen Programmiert.
>
> Weiss jemand wie man die Init-Funktion realisiert in Code?

von Ja Supa (Gast)


Lesenswert?

Jürgen S. schrieb:
> Hast Du drauf geachtet,

Hast du darauf geachtet was der TO eingangs geschrieben hat?

von J. -. (Gast)


Lesenswert?

Jürgen S. schrieb:
> Der IM0 muß für einen 16 Bit Bus auf lo gesetzt werden und für 8 Bit Bus auf hi
Ah, da ist ja auch erledigt, wie man aus Deinem ersten Post entnehmen 
kann ;-)
Ja, dann liegt's wohl am Timing für die manuell bedienten Steuersignale 
oder daran, daß der 103RBT seine Daten- und/oder Steuersignalports nicht 
auf Ausgang gestellt hat. Alle GPIO-Clocks aktiviert?

von Moot S. (mootseeker)


Lesenswert?

Danke für eure Antworten, ich denke nicht, dass es an dem Pinout liegt 
sondern an der Firmware. Ich habe mal ein paar standart beispiele 
versucht, aber konnte keinen Erfolg sehen. Da ich nicht weiss ob irgend 
eins dieser Beispiele Funktioniert, habe ich aktuell keinen Code den ich 
euch zeigen könnte oder so.

von Dr Watson (Gast)


Lesenswert?

Moot S. schrieb:
> 23 -> DB7   (PA5)
> 24 -> DB6   (PB6)
> 25 -> DB0   (PB0)
> 26 -> DB1   (PB1)
> 27 -> DB2   (PA15)
> 28 -> DB3   (PB3)
> 29 -> DB4   (PB4)
> 30 -> DB5   (PB5)

Wenn ich mir diese Signalbelegung alleine anschaue dann bin ich
mir ziemlich sicher dass der TO überhaupt nicht weiss was er tut
und ist mit dem was er erreichen will voll überfordert.

Oder es besteht hier wieder mal grösste Troll-Gefahr!

Typisches Troll-Zeichen ist dass auf die Beiträge nur sehr un-
differenziert oder gar nicht eingegangen wird. Auch wider-
sprüchliche Angaben des TO bzw wirre oder völlig ungenaue
Aussagen deuten darauf hin.

Ich tippe mal auf hohe Troll-Gefahr. Unglaublich was hier manch-
mal abgeht. Reine Verarschung der hilfsbereiten Community.

Ich denke man wird in diesem Thread keinen Aufbau zu Gesicht
bekommen. Auch ein Zeichen für ein rein virtuelles Problem
mit keinerlei realem Hintergrund.

von Moot S. (mootseeker)


Lesenswert?

Dr Watson schrieb:
> Wenn ich mir diese Signalbelegung alleine anschaue dann bin ich
> mir ziemlich sicher dass der TO überhaupt nicht weiss was er tut
> und ist mit dem was er erreichen will voll überfordert.

Was hat mein PinOut damit zu tun? Ich muss ja nicht unbedingt alle Daten 
Pins auf den gleichen Port anschliessen. Ich definiere im Code die Pins 
als Daten Pins, dann sollte das schon gehen.

Und das ist kein Troll Post... Ich suche wirklich hilfe, und ja mit so 
einem Display habe ich noch nie gearbeitet und ich habe noch nicht so 
viel Erfahrung.

von Moot S. (mootseeker)


Lesenswert?

Jürgen S. schrieb:
> Dein Steuerbus (WR/RD/CS/RS/RESET)ist komplett rausgeführt, der
> Daten/Command-Bus auch richtig verdrahtet?

Ich überprüfe die Verdrahtung nochmals, aber ich bin mir eigentlich 
sicher, dass ich das Display richtig verdrahtet habe.

von Dr Watson (Gast)


Lesenswert?

Moot S. schrieb:
> Ich definiere im Code die Pins
> als Daten Pins, dann sollte das schon gehen.

Nö.

Troll ruhig weiter, oder zeige deinen Code mit dem du es
versucht hast.

von Moot S. (mootseeker)


Lesenswert?

Ich habe mein Beispiel von diesem Video:

https://www.youtube.com/watch?v=UTeNyY_g5i0&t=195s

Von da habe ich auch den Code. Hier der Link zum Code:
https://www.youtube.com/redirect?event=video_description&v=UTeNyY_g5i0&redir_token=_E0MrYBmFdrbfu3gGzkUEYueH7p8MTU5MDkwNDc2N0AxNTkwODE4MzY3&q=https%3A%2F%2Fcontrollerstech.com%2Fwp-content%2Fuploads%2F2019%2F10%2FTFT_F103.zip

Ich habe auch versucht das PinOut 1:1 zu übernehmen für eine höhere 
Erfolgschance...

Bei mir leuchtet aber nur das Backlight.

von Dr Watson (Gast)


Lesenswert?

Moot S. schrieb:
> aber ich bin mir eigentlich
> sicher, dass ich das Display richtig verdrahtet habe.

Dann kannst du ja mal deinen Aufbau zeigen, das erhöht die
Chance deinen Thread als seriös zu betrachten erheblich.

Moot S. schrieb:
> Hier der Link zum Code:

Der taugt überhaupt nichts.

Poste deinen Code als Anhang zu einem Beitrag von dir.

Du reihst dich ein ein die Sorte von Usern denen man jedes
Detail einzeln als Popel aus der Nase ziehen muss.

Das nennt man auch "passive Salami-Taktik".

von Moot S. (mootseeker)


Angehängte Dateien:

Lesenswert?

Das ist mein Aufbau, sehr chaotisch aber ich habe die Verbindungen 
Kontrolliert und diese stimmen.

von Moot S. (mootseeker)


Angehängte Dateien:

Lesenswert?

Dr Watson schrieb:
> oste deinen Code als Anhang zu einem Beitrag von dir.

Hier die entscheidenden Files für das ganze Projekt könnt ihr mit dem 
Link das Projekt herunterladen.

von Dr Watson (Gast)


Lesenswert?

Moot S. schrieb:
> aber ich habe die Verbindungen
> Kontrolliert und diese stimmen.

Ich habe die Verbindungen auch kontrolliert und die stimmen.
Ist zwar kein Display angeschlossen aber das ist ja egal.

von Johannes S. (Gast)


Lesenswert?

ich vermute es liegt an PA2/PA3. Die sind bei dem Board per default zu 
dem STLink Anhängsel geführt und machen da die virtuelle serielle 
Schnittstelle. Da müsste man per Lötjumper umstellen, würde ich aber 
nicht machen. Besser diese beiden auf andere Pins legen.

von Moot S. (mootseeker)


Lesenswert?

Johannes S. schrieb:
> ich vermute es liegt an PA2/PA3. Die sind bei dem Board per default zu
> dem STLink Anhängsel geführt und machen da die virtuelle serielle
> Schnittstelle. Da müsste man per Lötjumper umstellen, würde ich aber
> nicht machen. Besser diese beiden auf andere Pins legen.

Danke für den Tipp, ich versuche es mal mit anderen Pins.

von Johannes S. (Gast)


Lesenswert?

diese dann im user_setting.h umdefinieren und hoffen das restliche Code 
auch damit arbeitet... sieht auf den ersten Blick aber so aus das es 
geht.

von Moot S. (mootseeker)


Lesenswert?

Ich habe nun PA2 -> PA6 und PA3 -> PA7 gewechselt. Dies natürlich im 
user_setting.h angepasst. Aber es läuft immer noch nicht. Das Display 
Flackert zwar, was mir sagt etwas passiert, aber funktionieren tuts noch 
nicht.

: Bearbeitet durch User
von Dr Watson (Gast)


Lesenswert?

Moot S. schrieb:
> Hier der Link zum Datenblatt:

Dort steht dass ein ILI9341 Controller verwendet wird.

Das steht aber im <user_setting.h> nicht drin. Weder
gibt es einen Eintrag dafür noch ist es ausgewählt.

von Moot S. (mootseeker)


Lesenswert?

Das Stimmt, hab ich jetzt auch gesehen.

von Johannes S. (Gast)


Lesenswert?

die Controller sollen aber kompatibel sein.

Am Nucleo liegt noch die LED auf PA5, aber das sollte nicht unbedingt 
stören, die würde dann irgendwie glimmen wenn das Display angesteuert 
wird.

von Moot S. (mootseeker)


Lesenswert?

Johannes S. schrieb:
> die würde dann irgendwie glimmen wenn das Display angesteuert
> wird.

Ja das tut es auch. Ich suche mal ein neues Firmware Beispiel für den 
richtigen Display Kontroller.

von J. -. (Gast)


Lesenswert?

Dr Watson schrieb:
> Dort steht dass ein ILI9341 Controller verwendet wird.
>
> Das steht aber im <user_setting.h> nicht drin. Weder
> gibt es einen Eintrag dafür noch ist es ausgewählt.
Zum Ausgleich steht in den tft-Files, daß sie für einen HX8347 sind ;-))

(scheint aber wohl ähnlich zum ILI9341 zu sein)

von STK500-Besitzer (Gast)


Lesenswert?

Moot S. schrieb:
> 23 -> DB7   (PA5)
> 24 -> DB6   (PB6)
> 25 -> DB0   (PB0)
> 26 -> DB1   (PB1)
> 27 -> DB2   (PA15)
> 28 -> DB3   (PB3)
> 29 -> DB4   (PB4)
> 30 -> DB5   (PB5)

Dazu schrieb ja schon jemand, dass das nicht so gut ist.
Kann man machen, ist aberunpraktisch, wenn man ein Byte-Port auf mehrer 
Ports verteilt.
Besser wäre es, die Display-Datenpins auf einem arm-Port in der 
passenden Reihenfolge zu verdrahten, dass man nur das Datenbyte auf den 
Port schreiben kann. Das Byte kann man natürlich noch mit einer 
Schiebe-Operation an die richtige Stelle setzen.

Moot S. schrieb:
> Im Anhang habe ich ein Screenshot vom Datenblatt hinterlegt.
Aber nicht aus dem Datenblatt, das du verlinkt hast?!

von Moot S. (mootseeker)


Lesenswert?

STK500-Besitzer schrieb:
> Aber nicht aus dem Datenblatt, das du verlinkt hast?!

Das hab ich hier von der Hersteller Seite:
https://4dsystems.com.au/4dlcd-32qa

von Johannes S. (Gast)


Lesenswert?

zumindest die Controller Initialisierung ist doch anders. Hier wäre eine 
Tabelle für den HX8347 aus der Adafruit Lib:
https://github.com/adafruit/TFTLCD-Library/blob/9b701b6d5a5818aacaa99ba6a815fdae6625dd02/Adafruit_TFTLCD.cpp#L123

Die Bitanordnung ist ungünstig, aber das org. Beispiel war ja für ein 
Bluepillboard. Das Nucleo hat einen grösseren F103 und mehr Pins 
rausgeführt, aber auch mit den zusammengestückelten Bits muss es gehen. 
Ist natürlich langsamer als ein Portzugriff.

von Dr Watson (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> Dazu schrieb ja schon jemand, dass das nicht so gut ist.

Dann schreibe ich hier noch explizit dass man mit so einem
Aufbau mit hoher Wahrscheinlichkeit nicht Erfolg haben wird.

Zu viel Unsicherheit in Anzahl Leitungen und Kontakt-Vielfalt.

Für einen anständigen Aufbau (wenn es denn schon von Typ
Stechkbrett sein muss) nimmt man genau einen Controller
und genau ein Display und nichts anderes dazu, und die
minimale Anzahl von erforderlichen Verbindungen.

von Moot S. (mootseeker)


Lesenswert?

Johannes S. schrieb:
> zumindest die Controller Initialisierung ist doch anders. Hier wäre eine
> Tabelle für den HX8347 aus der Adafruit Lib:
> 
https://github.com/adafruit/TFTLCD-Library/blob/9b701b6d5a5818aacaa99ba6a815fdae6625dd02/Adafruit_TFTLCD.cpp#L123
>
> Die Bitanordnung ist ungünstig, aber das org. Beispiel war ja für ein
> Bluepillboard. Das Nucleo hat einen grösseren F103 und mehr Pins
> rausgeführt, aber auch mit den zusammengestückelten Bits muss es gehen.
> Ist natürlich langsamer als ein Portzugriff.

Ich bräuchte die Tabelle wenn schon Für den ILI9341 für den HX8347 hab 
ich schon die Firmware.

von Moot S. (mootseeker)


Lesenswert?

Dr Watson schrieb:
> STK500-Besitzer schrieb:
>> Dazu schrieb ja schon jemand, dass das nicht so gut ist.
>
> Dann schreibe ich hier noch explizit dass man mit so einem
> Aufbau mit hoher Wahrscheinlichkeit nicht Erfolg haben wird.
>
> Zu viel Unsicherheit in Anzahl Leitungen und Kontakt-Vielfalt.
>
> Für einen anständigen Aufbau (wenn es denn schon von Typ
> Stechkbrett sein muss) nimmt man genau einen Controller
> und genau ein Display und nichts anderes dazu, und die
> minimale Anzahl von erforderlichen Verbindungen.

Am Aufbau liegt es ja nicht, dass Display Flackert (Macht irgendwas) mir 
fehlt nur die richtige Firmware dazu.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

ja, richtig. Die ist da im Code, nicht als Tabelle:
https://github.com/adafruit/TFTLCD-Library/blob/9b701b6d5a5818aacaa99ba6a815fdae6625dd02/Adafruit_TFTLCD.cpp#L343

auch ein bisschen wirre... Viele Grafiklibs sind irgendwie chaotisch 
gewachsen. Die Initwerte mal im Datenblatt zu kontrollieren ist immer 
eine gute Idee.
Auch in der von dir verlinkten Lib stecken offensichtlich Teile der 
Adafruit Lib drin.

von Moot S. (mootseeker)


Angehängte Dateien:

Lesenswert?

Beim Debuggen krieg ich diesen Wert als Display ID Stimmt das ?

von Johannes S. (Gast)


Lesenswert?

in der verlinkten Lib findet man auch das 9341, rufe im main mal 
tft_init(0x9341) auf. Das ID lesen klappt nicht immer, nicht alle 
Controller unterstützen das lesen und oft haben die Displayplatinen noch 
unidirektionale Pegelwandler drauf.

von J. -. (Gast)


Lesenswert?

Johannes S. schrieb:
> Auch in der von dir verlinkten Lib stecken offensichtlich Teile der
> Adafruit Lib drin.
Dann wäre doch das hier passend
https://github.com/adafruit/Adafruit_ILI9341
Ist wahrscheinlich zu einfach.

von STK500-Besitzer (Gast)


Lesenswert?

Moot S. schrieb:
> Am Aufbau liegt es ja nicht, dass Display Flackert (Macht irgendwas) mir
> fehlt nur die richtige Firmware dazu.

Ja, genau die meinte ich.
Man könnte einfach die Defines von 4D-Systems übernehmen und auf die 
richtige Position des Ports verschieben und hättte ein Problem weniger.

Dr Watson schrieb:
> Dann schreibe ich hier noch explizit dass man mit so einem
> Aufbau mit hoher Wahrscheinlichkeit nicht Erfolg haben wird.
>
> Zu viel Unsicherheit in Anzahl Leitungen und Kontakt-Vielfalt.

Und wie soll man das sonst ausprobieren?
Immer erst eine Platine ätzen lassen?
Oder an besten gleich lassen, weil man ja kein Experte ist?!

Das Display hat einen ILI9341 als Controller. Ist der kompatibel zu dem, 
der in der tft.c genannt wird?

von Dr Watson (Gast)


Lesenswert?

Jürgen S. schrieb:
> Dann wäre doch das hier passend

Ja schon klar. Der Profi findet alles ganz schnell und hat die Lösung.

Hauptsache man findet "driver" und "ILI9341", gelle?

>> * This is the documentation for Adafruit's ILI9341 driver for the
>> * Arduino platform.

von Dr Watson (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> Und wie soll man das sonst ausprobieren?

Dr Watson schrieb:
> nimmt man genau einen Controller
> und genau ein Display und nichts anderes dazu, und die
> minimale Anzahl von erforderlichen Verbindungen.

von Moot S. (mootseeker)


Lesenswert?

Jürgen S. schrieb:
> Johannes S. schrieb:
>> Auch in der von dir verlinkten Lib stecken offensichtlich Teile der
>> Adafruit Lib drin.
> Dann wäre doch das hier passend
> https://github.com/adafruit/Adafruit_ILI9341
> Ist wahrscheinlich zu einfach.

Ich möchte aber nicht mit einem Arduino sondern mit dem STM32 arbeiten.

Wie im .cpp File steht:
1
* This is the documentation for Adafruit's ILI9341 driver for the
2
* Arduino platform.


Zudem kenne ich mich nicht mit C++ aus, wie schreibe ich das in C um?

von J. -. (Gast)


Lesenswert?

Dr Watson schrieb:
> Hauptsache man findet "driver" und "ILI9341", gelle?
Stimmt gar nicht. 'Adafruit' war nämlich auch dabei!
Hab mich tierisch ins Zeug gelegt.

von Johannes S. (Gast)


Lesenswert?

Moot S. schrieb:
> Ich möchte aber nicht mit einem Arduino sondern mit dem STM32 arbeiten.

schon klar, nur die init Sequenzen wären ja gleich.

Aber hier wird schon wieder soviel Müll gepostet. Wenn du schon mit dem 
Debugger dran bist, dann gehe doch das ReadID und tft_init durch.
Wie geschrieben, ReadID funktioniert nicht immer. Der Code für den 9341 
ist in der Lib vorhanden, über die SUPPORT_xx Makros werden zusätzliche 
Displays eingebunden, die kann man beim 9341 alle abschalten, kosten nur 
unnötig Speicher.
Probiere also mal tft_init(0x9341) ohne das ReadID.

von STK500-Besitzer (Gast)


Lesenswert?

Moot S. schrieb:
> Zudem kenne ich mich nicht mit C++ aus, wie schreibe ich das in C um?

Indem du noch viel lernst.
Hast du schon LEDs zum Leuchten gebracht, oder ist das dein erstes 
Projekt?
Silberne Tabletts sind gerade alle anderweitig unterwegs.

von Moot S. (mootseeker)


Lesenswert?

Johannes S. schrieb:
> Probiere also mal tft_init(0x9341) ohne das ReadID.

Aber in dem Code den ich habe gibt es im Switch wo das Display 
ausgewählt wird keinen case für 0x9341 ?

von Moot S. (mootseeker)


Lesenswert?

STK500-Besitzer schrieb:
> Moot S. schrieb:
>> Zudem kenne ich mich nicht mit C++ aus, wie schreibe ich das in C um?
>
> Indem du noch viel lernst.
> Hast du schon LEDs zum Leuchten gebracht, oder ist das dein erstes
> Projekt?
> Silberne Tabletts sind gerade alle anderweitig unterwegs.

Nein das ist nicht mein erstes Projekt. Ich kann auch mehr ansteuern wie 
eine led... ich hab einfach noch nie so ein Display angesteuert.

von Dr Watson (Gast)


Lesenswert?

Jürgen S. schrieb:
> Hab mich tierisch ins Zeug gelegt.

Man merkt es deutlich. Heute ist wieder mal Mitlabern angesagt.

von Johannes S. (Gast)


Lesenswert?

Moot S. schrieb:
> Aber in dem Code den ich habe gibt es im Switch wo das Display
> ausgewählt wird keinen case für 0x9341 ?

doch, es gibt einen switch case im tft_init. Es gibt kein define in den 
user_settings, das Display soll in ReadID automagisch erkannt werden. 
Das klappt entweder nicht oder du hast auch keinen 9341. Falls die ID 
1541 stimmt, was ich aber bezweifle. Deshalb tft_init(0x9341) aufrufen.

von J. -. (Gast)


Lesenswert?

Moot S. schrieb:
> Ich möchte aber nicht mit einem Arduino sondern mit dem STM32 arbeiten.
[..]
> Zudem kenne ich mich nicht mit C++ aus, wie schreibe ich das in C um?
Gibt man bei Github 'ILI9341' ein, kommt man auf 226 Repositories, die 
in C geschrieben sind. Der 3. und 4. Eintrag hat dort auch noch STM32 im 
Titel stehen.
Ich habe keine Ahnung, weshalb Du Dir dann ein HX8347 aus einer 
Adafruit-Umgebung heraussuchst. Aber wenn Du schon so was machst, hätte 
Dir das Init aus der ILI9341-Adafruit-Lib evtl. helfen können.
Dann allerdings fragst Du wieder, wie Du C++ in C umschreibst ... tja, 
so wird das nix ;-)
Immerhin flackert das Dingens schon, da ist es dann normalerweise nicht 
mehr weit, bis es geht.

von Johannes S. (Gast)


Lesenswert?

habe ich einen anderen Source Code?? Ich sehe die Unterstützung für den 
9341 darin. Und wenn es richtig verdrahtet ist braucht man das nur noch 
ausprobieren was ich schrieb.

von Moot S. (mootseeker)


Lesenswert?

Johannes S. schrieb:
> habe ich einen anderen Source Code?? Ich sehe die Unterstützung für den
> 9341 darin. Und wenn es richtig verdrahtet ist braucht man das nur noch
> ausprobieren was ich schrieb.

Ja es ist schon drin aber es funktioniert nicht.

Ich bin mir 100% sicher das das Pinout stimmt und das es ein ILI9341 
Controller ist.

von Dr Watson (Gast)


Lesenswert?

Moot S. schrieb:
> Ich bin mir 100% sicher das das Pinout stimmt und das es ein ILI9341
> Controller ist.

Und ich bin mir zu 100% sicher dass dein Aufbau scheisse ist.

von Johannes S. (Gast)


Lesenswert?

hast du beim ändern auf PA6/PA7 auch das MX_GPIO_Init() angepasst?

bzw. in user_setting die Einstellungen für Dx_PORT / Dx_PIN? Die werden 
auch für die Initialisierung benutzt und müssen korrekt sein.

noch ein Edit:
PA2/PA3 waren nicht in den Datenbits, diese Makros also nicht 
beeinflusst und MX_GPIO_Init hat auch nix zu sagen weil es wieder eigene 
Makros gibt die die Initialisierung der Steuerleitungen macht.

Also Debugger benutzen und die Pegel an den Leitungen am Display messen 
ob die wie gewünscht ankommen.

von Moot S. (mootseeker)


Lesenswert?

Johannes S. schrieb:
> hast du beim ändern auf PA6/PA7 auch das MX_GPIO_Init() angepasst?
>
> bzw. in user_setting die Einstellungen für Dx_PORT / Dx_PIN? Die werden
> auch für die Initialisierung benutzt und müssen korrekt sein.
>
> noch ein Edit:
> PA2/PA3 waren nicht in den Datenbits, diese Makros also nicht
> beeinflusst und MX_GPIO_Init hat auch nix zu sagen weil es wieder eigene
> Makros gibt die die Initialisierung der Steuerleitungen macht.
>
> Also Debugger benutzen und die Pegel an den Leitungen am Display messen
> ob die wie gewünscht ankommen.

Ich habe die Pins angepasst, habe auch den init code verglichen und 
gesehen, dass dieser nicht gleich war. Habs nun aufgegeben mit diesem 
Display.

Das Display Flackert au wenn nur die Speisung angeschlossen ist. Habe 
die Spannung im Betrieb gemessen und die ist 3.3V denke das Display war 
schon hinüber hab mir nun ein anderes Bestellt, dass auch SPI fähig ist, 
von dem gibt es auch deutlich mehr Dokus und Beispiele.

Aber Danke für die Hilfe

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.