Forum: Mikrocontroller und Digitale Elektronik Nucleo STM32F746ZG & Seedstudio 2.8" TFT Touch Shield V2.0


von Christian W. (christian_w944)


Lesenswert?

Hallo zu allererst wollte ich mich vorstellen.
Ich bin der Chris 29 Jahre und noch relativ neu, was das Programmieren 
mit Microcontrollern betrifft, daher hoffe ich, dass meine Frage nicht 
all zuviel Unmut stiftet.

Ich habe mir vor kurzem ein Nucleo STM32F746ZG Board und ein Seedstudio 
2.8" TFT Touch Shield V2.0 Display gekauft.

Laut der mBed Seite sollte es supported werden, daher auch die Wahl des 
Dislpays.
Ich hab mir dann auch sofort den Demo-Code in den Onlinecompiler 
geladen, kompiliert und auf dem Board gespeichert.

Getreu dem Motto: "Wie sie sehn, sehn sie nichts" ist auch nichts weiter 
passiert.

Ich habe dann am Anfang und am Ende des Displaycodes noch ein Blinky 
geschrieben, das ohne weiteres ausgeführt wird. Daher gehe ich davon 
aus, dass der Code schon verarbeitet wird aber irgendwas anderes nicht 
stimmt.

Muss man evtl. die SPI Schnittstelle vorher separat initialisieren oder 
könnte das schon im mBed Code geschehen sein?

https://developer.mbed.org/components/Seeed-Studio-28-TFT-Touch-Shield-V20/

Das wäre der Link zu dem genannten Demo-Programm.

Schonmal vielen Dank für eure Hilfe.

Einen schönen Abend euch noch

Chris

von Johannes S. (Gast)


Lesenswert?

SPI musst du nicht initialisieren, das macht mbed schon. Manchmal sind 
die Libs in den Beispielen nicht neu genug. Mache mal ein Rechtsklick 
auch das Projekt und dann Update all Libs und neu kompilieren.
Und nochmal kontrollieren ob das Display richtig aufgesteckt ist, also 
die Arduino Belegung passt.

von Christian W. (christian_w944)


Lesenswert?

Funfact des Abends

Jetz lässt sich der Code nicht mal mehr kompilieren... Sobald er die 
GraphicsDisplay.cpp angehen will, bekomme ich den Fehler 230.

Selbst wenn ich dann das Projekt lösche und mir nochmal neu lade ...

von e-d (Gast)


Lesenswert?


von Christian W. (christian_w944)


Lesenswert?

Hey e-d

Danke für die Links

Laut Beschreibung und Pinbelegung sollte es eigentlich SPI-Fähig sein. 
Wie gesagt.
Ich habe halt Probleme, es überhaupt zum Laufen zu bekommen..

Hier der Link zum Display

https://www.seeedstudio.com/2.8-TFT-Touch-Shield-V2.0-p-1286.html

von e-d (Gast)


Lesenswert?

Digital Pins
Pin Name   Function
D0   NOT USED
D1   NOT USED
D2   NOT USED
D3   NOT USED
D4   TF_CS
D5   TFT_CS
D6   TFT_DC
D7   BACKLIGHT(Selectable)
D8   NOT USED
D9   NOT USED
D10   NOT USED
D11   SPI_MOSI
D12   SPI_MISO
D13   SPI_SCK

Analog Pins
Pin Name   Function
A0   TOUCH PANEL
A1   TOUCH PANEL
A2   TOUCH PANEL
A3   TOUCH PANEL
A4   NOT USED
A5   NOT USED


geh mal auf die Wiki-page aus deinem Link.
Wie du siehst, sind die SPI-Pin als D-Pin verteilt.
Musst du auf jeden Fall prüfen.
Ansonsten ist es m.M.n. preiswert..

von e-d (Gast)


Lesenswert?

Und, hast du gelesen?
Some of the control signals for the TFT Shield are not connected to the 
Arduino headers by default. Instead, they connect to a small 2x3 header, 
which isn't present on the many platforms like FRDM-KL25Z, ST F401RE, 
LPCXpresso 1549 etc. There are 3 solder jumpers - P1, P2, and P3 - that 
will connect the signals when bridged. Simply heat them up with a 
soldering iron and bridge them together.

von Johannes S. (Gast)


Lesenswert?

Die Belegung sieht passend aus. Aber die mbed Lib die in der Demo 
benutzt wird ist Version 93 und 21 Monate alt. Da gab es das F746 IMHO 
noch nicht.
Dann hattest du beim Importieren evtl. schon die Update Option an? 
Allerdings können die neuesten Versionen auch wieder Fehler haben und 
manchmal hilft nur eine etwas ältere Lib zu nehmen. Gerade in den 
letzten Wochen ist da viel Action in der mbed Entwicklung.

von e-d (Gast)


Lesenswert?

Ich kenne das Nucleo STM32F746ZG nicht mal.
Aber hast du die 3 Brücken eingelötet?

von e-d (Gast)


Lesenswert?

Und flashe erstmal mit abgezogenen LCD..

von Christian (Gast)


Lesenswert?

Also... das ist der Code den ich jetzt geschrieben habe. Deckt sich 
natürlich wie zu erwarten war auch mit dem, des Democodes.

1
#include "mbed.h"              
2
#include "SeeedStudioTFTv2.h"                         
3
#include "Arial28x28.h"                                 
4
//SPI_TFT_ILI9341 TFT(D11, D12, D13, D5, D7, D6,"TFT");  // (mosi, miso, sck, cs, reset, dc)
5
6
SeeedStudioTFTv2 TFT(A3, A1, A2, A0, D11, D12, D13, D5, D6, D7, D4);
7
8
int main()
9
{
10
    
11
    TFT.background(Blue);                              
12
    TFT.foreground(0xFFFF);                            
13
    TFT.cls();                                         
14
    TFT.set_font((unsigned char*) Arial28x28);         
15
    TFT.locate(30, 100);                               
16
    TFT.printf("Hello World!!!!");                  
17
}

Hier der Auszug aus der Headerdatei SeeedStudioTFTv2.h
1
   SeeedStudioTFTv2(PinName xp, PinName xm, PinName yp, PinName ym,
2
                     PinName mosi, PinName miso, PinName sclk,
3
                     PinName csTft, PinName dcTft, PinName blTft,
4
                     PinName csSd);

Beziehugsweise aus der SeeedStudioTFTv2.cpp
1
SeeedStudioTFTv2::SeeedStudioTFTv2(PinName xp, PinName xm, PinName yp,
2
  PinName ym,PinName mosi, PinName miso, PinName sclk, PinName csTft, 
3
  PinName dcTft, PinName blTft, PinName csSd):
Wenn ich die Schematics noch zu lesen weiß, sollten eigentlich die MOSI, 
MISO und CLK Anschlüsse auf dem J2 liegen. Die Pins decken sich auch mit 
denen auf dem Board bzw deren Beschriftung.

Das mit dem Connector in der Mitte hab ich gelesen. Dort wird, wenn ich 
das richtig sehe, ebenfalls die SPI-Schnittstelle rausgeführt.

Jetzt nur mal ne ganz dumme Frage, um die dümmsten Fehler ausschließen 
zu können.
Der Arduino Connector geht nur auf einem Weg vernünftig aufzusetzen, 
oder? Für alles andere, wie er jetzt drauf sitzt, bräuchte ich Gewalt 
und die Pinbelegung stimmt ja soweit auch.

von e-d (Gast)


Lesenswert?

Aus der Ferne betrachtet, stimmts wohl und ja, die Stiftleisten müssen 
passen.
Wenn alle Stricke reißen, musst du einzeln "durchpiepsen"(Durchgang an 
den Kontakten)..

von e-d (Gast)


Lesenswert?

Hast du die Schaltung des Nucleo(Link)?

von Christian (Gast)


Lesenswert?

Inwiefern Schaltung? Der HW-Debugger ist am Board montiert.
Das Board hab ich oben mal verlinkt

Durchpiepsen hab ich grad versucht aber wirklich viel kommt dabei auch 
nicht raus.
Ich glaub, ich leihe mir einfach mal noch nen Arduino zum Testen. Nicht, 
dass das Display ne Macke hat ...

Aber, um jetzt mal systematisch vorzugehen.
- SPI sollte über die mbed.h freigegeben sein
- das Display sollte korrekt auf dem Board montiert sein
- die Software passt soweit auch

Viel bleibt ja dann eigentlich nicht mehr. Höchstens, dass ich mal ins 
Labor gehe und schaue, ob der Controller überhaupt Daten versendet..

von Johannes S. (Gast)


Lesenswert?

Und welche mbed Lib benutzt du jetzt?
Klicke mal die Lib links im Projektbaum an. Dann erscheint rechts oben 
eine Version xxx:yyyyyyyy. Und Synced oder 'newer version available'. 
Wenn da die alte 93:... drin steht dann den Update Link anklicken.

von e-d (Gast)


Lesenswert?

Auch die SPI-Belegung müsste stimmen, wenn sb121 closed und sb122 offen 
ist.

von Christian (Gast)


Lesenswert?

Also was die Libs betrifft, die sind alle "synced" oder "up to date"

@e-d

Ich bin noch ganz neu im Business. Was da offen bzw closed sein soll, 
müsstest du mir erklären.

Ich würd ja das Projekt auch gern für OpenSTM exportieren aber auch da 
hat mbed was dagegen.. sonst hätte ich euch es komplett zur Verfügung 
stellen können....

von e-d (Gast)


Lesenswert?

Hab mir den Schaltplan runtergeladen..

von e-d (Gast)


Lesenswert?

sb sind Solderbridges, -kleine gegenüberliegende Lötpunkte, die gebrückt 
werden(oder eben nicht).

von Christian (Gast)


Lesenswert?

Jo, grad überprüft und für gut befunden. 122 hat keinen Durchgang und 
über 121 nen Widerstand kurzgeschlossen.

von Johannes S. (Gast)


Lesenswert?

Christian schrieb:
> Also was die Libs betrifft, die sind alle "synced" oder "up to date"

Dann probiere mal die Lib v123: wieder mbed selektieren, dann den Button 
Revisions und die 123 auswählen.

Um das SPI zu testen sind die Salea USB LogicAnalyzer ganz gut, gibts 
auch als China clones für <10€.

von e-d (Gast)


Lesenswert?

Ich weis nicht, ob du das schaffst?
In den Config-dateien zum SPI müssen PA5,6,7 als spi-A-CLK,Miso und Mosi 
definiert sein..

von Christian (Gast)


Lesenswert?

Den LogicAnalyser hab ich mir gleich mal gebookmarked.
Das mit der Lib versuch ich morgen mal. Vielleicht hab ich dann mehr 
Glück.

Ich danke euch schonmal für euer Feedback und eure Unterstüztung!

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.