Forum: Mikrocontroller und Digitale Elektronik STM32F0xx ILI9341 TFT-Display


von Henning R. (henning_r)


Lesenswert?

Hallo erstmal in die Runde!

Ich bin neu hier im Forum und in etwa genauso neu in der Programmierung 
von STM32 MCUs.

Momentan arbeite ich mich für eine Arbeit in das STM32F072B-DISCO Board 
ein und versuche vergebens ein 3,5" Display (ILI9341) über SPI 
anzusteuern.

Während meiner Suche bin ich auf folgendes GitHub-Projekt gestoßen:
https://github.com/martnak/STM32-ILI9341

Mit seinem Treiber soll man mit jedem STM32x Chip in der Lage sein ein 
Display zu betreiben.

Soweit so gut. Ich habe die h/c Dateien in mein Projekt geladen und 
etwas auf mein Board angepasst. Nun ist es jedoch so, dass ich Probleme 
bei der Erstellung einer SPI Instanz habe. In der 
"ILI9341_STM32_Driver.h" wird diese mittels
#define HSPI_INSTANCE    &hspi5
definiert. Hier kriege ich jedoch die Fehlermeldung "'hspi5' undeclared 
(first use in function)". Auch in der Quelldatei melden einige 
Funktionen in denen HSPI_INSTANCE vorkommt dadurch natürlich Fehler. Die 
SPI_HandleTypeDef hspi5 deklariere ich in der main.c. (Ist da der 
Felher?)

Im Vorhinein entschuldige ich mich schonmal für die eine oder andere 
Wissenslücke. Ich programmiere nun seit knapp 1 Woche in C und bin mir 
bei vielen Sachen noch nicht bewusst, wie sie richtig zu handhaben sind. 
(Gerade bei STM32 scheint mir der Einstieg schwer zu sein, da komplex 
und nicht so komfortabel wie Arduino etc.)

Sollte es helfen, kann ich gerne auch den Code Hochladen.

Weitere Info:
Board: STM32F072B - DISCO
IDE: STM32Cube IDE
Display: https://www.aliexpress.com/item/32960934541.html

Für alternative leichter verwendbare Treiber wäre ich natürlich auch 
dankbar! :-)

Vielen Dank!
Henning

von Harry L. (mysth)


Lesenswert?

Henning R. schrieb:
> das STM32F072B-DISCO Board

Damit hast du dir das denkbar ungünstigste Board für dein Vorhaben 
ausgesucht.
Viel zu wenig RAM für solche Display-Spielereien.

Henning R. schrieb:
> Fehlermeldung "'hspi5' undeclared

Ja logisch!
SPI5 gibt es beim F072 auch nicht.

von Olaf (Gast)


Lesenswert?

> Während meiner Suche bin ich auf folgendes GitHub-Projekt gestoßen:

Vielleicht solltest du erstmal das Datenblatt deiner MCU und deines 
Display suchen, finden und lesen? Ich mein ja nur....

Olaf

von Henning R. (henning_r)


Lesenswert?

Harry L. schrieb:
> Damit hast du dir das denkbar ungünstigste Board für dein Vorhaben
> ausgesucht.
> Viel zu wenig RAM für solche Display-Spielereien.
>
> Henning R. schrieb:
>> Fehlermeldung "'hspi5' undeclared
>


Das hatte ich schon vermutet, ich habe ansonsten noch ein STM32F429I - 
DISCO, da ist ja auch ein Display drauf verbaut, jedoch parallel 
geschaltet.

> Ja logisch!
> SPI5 gibt es beim F072 auch nicht.

Genau! um den Code aber nicht überall abändern zu müssen habe ich 
erstmal die TypeDef hspi5 genannt allerdings eine SPI2 Instanz damit 
erstellt. (Wenn man das so sagen kann?)

Also würdest du mir raten direkt das Größere Board zu nehmen?

von Henning R. (henning_r)


Lesenswert?

Hallo Olaf,
natürlich macht das Sinn. Jedoch ist es am Anfang wirklich eine 
Informationswelle die einem in solchen Handbüchern überrollt. Viel 
schlauer wird man dadurch zunächst erstmal nicht...

von Harry L. (mysth)


Lesenswert?

Henning R. schrieb:
> Genau! um den Code aber nicht überall abändern zu müssen habe ich
> erstmal die TypeDef hspi5 genannt allerdings eine SPI2 Instanz damit
> erstellt. (Wenn man das so sagen kann?)

hspix ist bereits ein definierter Typ: SPI_HandleTypeDef

Ich würde es so machen:
1
SPI_HandleTypeDef *hILI9341;
2
3
hILI9341 = hspi2;

und dann überall nur noch hILI9341 nutzen.
Der Austausch von hspi5 ist dank Refactoring ja kein Problem.

Henning R. schrieb:
> Also würdest du mir raten direkt das Größere Board zu nehmen?

Allerdings!

von Dr. Sommer (Gast)


Lesenswert?

Henning R. schrieb:
> Das hatte ich schon vermutet, ich habe ansonsten noch ein STM32F429I -
> DISCO, da ist ja auch ein Display drauf verbaut, jedoch parallel
> geschaltet.

Benutze das doch, da gibt es ja auch fertige Bibliotheken & Beispiele 
für. Das "parallele" Display ist letztlich einfacher zu benutzen (Pixel 
schreiben = Schreibzugriffe in RAM) und ist schneller 
(Bildaktualisierung).

von Henning R. (henning_r)


Lesenswert?

@Dr. Sommer
@Harry L.

Alles klar, dann wird es wohl am sinnvollsten sein ich lege die Sache 
erstmal aufs Eis und befasse mich mit der parallelen Ansteuerung und dem 
größeren Board!

Vielen Dank auf alle Fälle. Es wird sicherlich nicht die letzte Frage 
sein die ich habe. Seid gewarnt ;)

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.