Frage zu Adafruit_ILI9341.h

Hallo, ich schaue mir gerade das Demo unter Arduino IDE an.
Beispiele/Adafruid ILI9341/graphictest.uno
Die Software SPI Schnittstelle ist kein Problem für mich. Aber ich möchte eine Hardware
SPI Schnittstelle benutzen.

#define TFT_CS 54
#define TFT_DC 55

#define TFT_MOSI 56
#define TFT_CLK  57
#define TFT_RST  58  
#define TFT_MISO 59

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);

Hier habe ich meine eigene Pins gesetzt. Und das geht auch.
Nur wenn ich auf Hardware SPI gehen will mit

#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

Wo finde ich die Pin Zuweisung oder SPI Zuweisung ?
Meine Hardware ist ein Adafruit M4 Grand Central und da habe ich mehrere SPI drauf.

Es muss doch eine Möglichkeit geben eine andere SPI einzustellen.

Gruß Schuby

ES sollte so gehen statt

#define TFT_CS 54
#define TFT_DC 55

#define TFT_MOSI 56
#define TFT_CLK  57
#define TFT_RST  58  
#define TFT_MISO 59

nehmen.

#define TFT_CS 54
#define TFT_DC 55
#define TFT_MOSI 12
#define TFT_CLK 13
#define TFT_RST  58  
#define TFT_MISO15

CS, RST, DC sind freibelegbar.

Ganzes Pinout ist hier
Verstehe nicht warum will man zweiten SPI Port nutzen, normaler weise reich nur für anderes Gäret anderen CS Pin nutzen. CS = Cable Select manchmal auch SS = Slave Select bezeichnet
Nur wen man die TFT_eSPI zusammen mit Touch und SD Slot nutzen will muss SD unbedingt auf anderen SPI Port

Hallo fony, ich will im Grunde keinen anderen SPI Port benutzen sondern den richtigen
Hardware SPI Port. in meiner variant sind 2 SPI Ports eingetragen. Ich denke das sercom7
benutzt wird, aber ich finde keine dieser Pins auf mein Board (pin64 / 66 / 65)

Ich verstehe einfach nicht welchen SPI Port dieses Demo benutzt.
Du hast in deinen Text die gelben Zahlen genommen, das sind aber nicht
die Arduino Pins, die sind doch dunkel grün

Gruß Schuby

/*
 * SPI Interfaces
 */
#define SPI_INTERFACES_COUNT 2

#define PIN_SPI_MISO        (64)  //64
#define PIN_SPI_MOSI        (66)  //66
#define PIN_SPI_SCK         (65)  //65
#define PERIPH_SPI          sercom7
#define PAD_SPI_TX          SPI_PAD_0_SCK_1
#define PAD_SPI_RX          SERCOM_RX_PAD_3

static const uint8_t SS	  = (53);
static const uint8_t MOSI = PIN_SPI_MOSI;
static const uint8_t MISO = PIN_SPI_MISO;
static const uint8_t SCK  = PIN_SPI_SCK;

#define PIN_SPI1_MISO       (80)  //80
#define PIN_SPI1_MOSI       (82)  //82
#define PIN_SPI1_SCK        (81)  //81
#define PIN_SPI1_SS         (83)  //83
#define PERIPH_SPI1         sercom2
#define PAD_SPI1_TX         SPI_PAD_0_SCK_1
#define PAD_SPI1_RX         SERCOM_RX_PAD_3

static const uint8_t SS1	 = PIN_SPI1_SS;
static const uint8_t MOSI1 = PIN_SPI1_MOSI;
static const uint8_t MISO1 = PIN_SPI1_MISO;
static const uint8_t SCK1  = PIN_SPI1_SCK;

Das ist HW SPI :wink:
was das Demo angeht zeige mall link.
scheint so aussehen das jemand hat sich eigenes Board gebaut und alle Pins nutzt
Ada nutzt nicht alle mögliche Pins dafür ist das Board zu klein. es wird nur auf Mega 2560 angepasst aus compalitet gründen.

Die MCU SAM xxx kann über100 Pins Haben. dann passt das im dem Demo (Habe nur das Datenblatt kurz überflogen :wink:

ähhhm was ist jetzt Hardware SPI und Software SPI ?

Gruß Schuby

Lese mall das
https://www.mikrocontroller.net/topic/64575

Jetzt erinnere mich das was ähnliches mit dem SAM D51 wegen HW SPI und SW SPI war.

Habe das Board nicht, nutze nur ESP und Arduino NANO R3 + Mega 2560

Genau, bei mir läuft gerade Software SPI wo ich selber meine Pins eintrage.
Aber ich hätte gerne eine Hardware Lösung an einen richtigen SPI Port

Und das wird ja da auch richtig beschrieben was Hardware SPI ist

HARDWARE SPI = eine durch hardwaremäßige Verschaltung im Chip
integrierte
Schnittstelle, die durch beschreiben interner Register gesteuert wir.
Das Shiften der Daten erfolgt dann automatisch. <

Gruß Schuby

Also wen Du den Adafruit Beispiel nimst mit der Einstellung

#define TFT_CS 54
#define TFT_DC 55

#define TFT_MOSI 56
#define TFT_CLK  57
#define TFT_RST  58  
#define TFT_MISO 59

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);

nutzt Du Hardware SPI.
Wo möglich irritiert dich dass das Display schnarch langsam ist, hier ist aber die Bibliothek schuld, die soll funktionieren nix weiteres :wink:

Das Display an sich ist sehr schnell mit anderer Lib, schau dir das mall an, ist ein 4" Display ( Der kleiner war gerade nicht vorhanden )

Das ist keine Hardware SPI Einstellung, sondern SW-SPI

Hardware SPI sieht so aus.
#define TFT_CS 54
#define TFT_DC 55
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

Es muss doch eine Möglichkeit geben der HW-SPI Port in diesen Demo einzustellen.
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>

Mein Adafruit M4 Grand Central Board hat sehr sehr viele Pins,
nur welcher ist denn jetzt der HW-SPI Port ?

Gruß Schuby

Beide was habe gezeigt.
Wo möglich macht dass das Core nicht.
Alle SPI Ports auf dem Pinout sind HW Ports.
Mit Software SPI muss man das extra deklarieren mit
#define SoftwareSPI.h
und im setup bei begin eintragen.
Mach mal folgendes, spiel das mal auf :

#include <SPI.h>
void setup() {
 Serial.begin(9600);
 Serial.print("MOSI = ");
 Serial.println(MOSI);
 Serial.print("MISO = ");
 Serial.println(MISO);
 Serial.print("SCK = ");
 Serial.println(SCK); 
}
void loop() {}

Das sollte anzeigen den ersten SPI Port was diene Core nutzt. Wen das Funktioniert zeige mir das damit ich auch weis für die Zukunft.
Damit kennst Du den "Standard" SPI

Habe ich gemacht
MISO = 64 MOSI = 66 SCK = 65

Diese Pins habe ich aber nicht auf dem Board

/*
 * SPI Interfaces
 */
#define SPI_INTERFACES_COUNT 2

#define PIN_SPI_MISO        (64)  //64  50  80
#define PIN_SPI_MOSI        (66)  //66  51  82
#define PIN_SPI_SCK         (65)  //65  52  81
#define PERIPH_SPI          sercom7  //sercom7
#define PAD_SPI_TX          SPI_PAD_0_SCK_1
#define PAD_SPI_RX          SERCOM_RX_PAD_3

static const uint8_t SS	  = (53);   // alt 53
static const uint8_t MOSI = PIN_SPI_MOSI;
static const uint8_t MISO = PIN_SPI_MISO;
static const uint8_t SCK  = PIN_SPI_SCK;

#define PIN_SPI1_MISO       (80)  //80
#define PIN_SPI1_MOSI       (82)  //82
#define PIN_SPI1_SCK        (81)  //81
#define PIN_SPI1_SS         (83)  //83
#define PERIPH_SPI1         sercom2  //sercom2
#define PAD_SPI1_TX         SPI_PAD_0_SCK_1
#define PAD_SPI1_RX         SERCOM_RX_PAD_3

static const uint8_t SS1	 = PIN_SPI1_SS;
static const uint8_t MOSI1 = PIN_SPI1_MOSI;
static const uint8_t MISO1 = PIN_SPI1_MISO;
static const uint8_t SCK1  = PIN_SPI1_SCK;

Gruß Schuby

Und jetzt schreibe ich den SPI Port um,also auf Pin´s vom SPI die auf eine
Leiste geht. Und dann bekomme ich das raus

MISO = 50 MOSI = 51 SCK = 52

Aber das Display Arbeitet nicht, weißer Hintergrund

/*
 * SPI Interfaces
 */
#define SPI_INTERFACES_COUNT 2

#define PIN_SPI_MISO        (50)  //64  50  80
#define PIN_SPI_MOSI        (51)  //66  51  82
#define PIN_SPI_SCK         (52)  //65  52  81
#define PERIPH_SPI          sercom7  //sercom7
#define PAD_SPI_TX          SPI_PAD_0_SCK_1
#define PAD_SPI_RX          SERCOM_RX_PAD_3

static const uint8_t SS	  = (53);   // alt 53
static const uint8_t MOSI = PIN_SPI_MOSI;
static const uint8_t MISO = PIN_SPI_MISO;
static const uint8_t SCK  = PIN_SPI_SCK;

#define PIN_SPI1_MISO       (80)  //80
#define PIN_SPI1_MOSI       (82)  //82
#define PIN_SPI1_SCK        (81)  //81
#define PIN_SPI1_SS         (83)  //83
#define PERIPH_SPI1         sercom2  //sercom2
#define PAD_SPI1_TX         SPI_PAD_0_SCK_1
#define PAD_SPI1_RX         SERCOM_RX_PAD_3

static const uint8_t SS1	 = PIN_SPI1_SS;
static const uint8_t MOSI1 = PIN_SPI1_MOSI;
static const uint8_t MISO1 = PIN_SPI1_MISO;
static const uint8_t SCK1  = PIN_SPI1_SCK;

Wie geschrieben, habe das Board nicht, kann nur schreiben was ich im Netz gefunden habe.
Wurde versuchen anderes ähnliches Board Was hat die gleiche MCU installieren.
Allgemein die ARM Boards machen öfters Probleme, wie man hier im Forum liest.
Hast du alle Warnungen in der IDE eingeschaltet?
Laut Ada müsste die funktionieren.

Compatibility

This library is compatible with all architectures so you should be able to use it on all the Arduino boards.

Was ist Bitte sercom7?

/* =========================

  • ===== SERCOM DEFINITION

  • =========================

*/

extern SERCOM sercom0;

extern SERCOM sercom1;

extern SERCOM sercom2;

extern SERCOM sercom3;

extern SERCOM sercom4;

extern SERCOM sercom5;

extern SERCOM sercom6;

extern SERCOM sercom7;

extern Uart Serial1;

#endif

ich Arbeite mit platformio und da weiß ich echt nicht
wie ich sowas einschalte.

Gruß Schuby

Dan nimm dir zeit und Installiere mall die IDE1.8.19 die ist auf der Seite ziemlich unten. Wenn dann nicht funktioniert weis nichts mehr. Normal gerade die Ada Lib machen keine Probleme.

Eigentlich was für Display ist das, Link oder Foto bitte. Einige machen Probleme meistens die vom AZ oft war falscher Aufkleber drauf.

Das ist mein Display

Guten morgen
Das ist mein Display

Und ich gebe auf, dann bleibt das TFT eben auf einen SW-SPI.
Weil ich weiß jetzt echt nicht weiter.

PS-. Vllt gibt es andere Treiber wo man das HW-SPI einstellen kann

Gruß Frank

Wie oft soll isch schreiben dass das ist keine SW SPI, habe extra in die .h und .cpp dort ist nix mit SW SPI.
Wen SW SPI nutzen will muss die deklariert werden und das geschieht nirgend wo.
Habe mir extra die neuste Adafruit_ILI9341 heruntergeladen bei der ist ach nichts mit SW SPI.
Warum meinst Du das Du SW SPI nutzt.
Hast Du mit der Arduino IDE getestet?