ESP32 S3 SPI Problem

Hallo,

liebe Bastelkollegen.
Ich hatte mal einen Projekt vor 2 Jahren begonnen, mit ESP 32 und 3 Displays laufend über u8g2.
Auf dem alten ESP32 Devkit V1 lädt er die Bildschirme durch, auf dem neuen S3 N8R8 bekomme ich es nicht zum laufen, vielleicht übersehe ich eine Kleinigkeit?

Der neu Lädt kurz durch und bleibt stehen. Entweder nicht ganz oder einen Brei, wenn alle Bildschirme auf SPI CLK hängen, kommt gar nichts, zieht man einen ab. Laufen zwei nur bis zum ersten laden.
Habe schon so viel probiert... Komme nicht weiter, sorry falls die Frage zu doof ist.

Viellicht muss ich SPI 3 nutzen, ich weiß aber nicht wie ich die Pins frei bestimmen darf.

So funktioniert es auf dem Devkit 1:

// U8g2lib
#include <Arduino.h>
#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

U8G2_GP1294AI_256X48_F_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/2, /* dc=*/U8X8_PIN_NONE, /* reset=*/15);
U8G2_GP1294AI_256X48_F_4W_HW_SPI u8g2_2(U8G2_R0, /* cs=*/19, /* dc=*/U8X8_PIN_NONE, /* reset=*/U8X8_PIN_NONE);
U8G2_GP1294AI_256X48_F_4W_HW_SPI u8g2_3(U8G2_R0, /* cs=*/4, /* dc=*/U8X8_PIN_NONE, /* reset=*/U8X8_PIN_NONE);

So ist es gerade angeschlossen auf dem S3:

#include <Arduino.h>
#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

U8G2_GP1294AI_256X48_F_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/5, /* dc=*/U8X8_PIN_NONE, /* reset=*/8);
U8G2_GP1294AI_256X48_F_4W_HW_SPI u8g2_2(U8G2_R0, /* cs=*/6, /* dc=*/U8X8_PIN_NONE, /* reset=*/U8X8_PIN_NONE);
U8G2_GP1294AI_256X48_F_4W_HW_SPI u8g2_3(U8G2_R0, /* cs=*/7, /* dc=*/U8X8_PIN_NONE, /* reset=*/U8X8_PIN_NONE);

Reset ist gemeinsam für alle Bildschirme da, SPI CLK auch auf dem Pin 12 und SPI_D auf dem Pin 11.
Die 3 alle zusammen geschlossen für die Bildschirme, so funktionierte das auch bei dem Dev 1.

Übersehe ich da was? bin für jede hilfe sehr dankbar.

Mit freundlichen Grüßen

Auf dem ESP32 S3 kannst du fast jeden Pin als SPI Pin (MISO, MOSI, CLK) definieren.
Dazu musst du dir in der Library ansehen, welcher Pin da verwendet wird und diesen einsetzen.
SPI Reference

Dankeschön meine lieben, hab schon fast befürchtet das man da tiefer rein muss.
Zwar nie gemacht, hoffe klappt es auch.
Grüße

Ja, da hättest du mit I2C weniger "Probleme".
Oder mit TFT und TFT-eSPI.

Ja, wenn er dieses unterstützen würde.
Sind so altmodische VFD Displays.
Hab es auch immer nach Anleitungen gemacht, funktionierte aber doch gut mit dem Dev 1.
Daher war ich an mir schon am verzweifeln, im Netz auch kaum was zu finden.

Versuche die Methode mal bei Gelegenheit

Leider hat das nicht weiter gebracht, die Einträge waren schon vorhanden:

static const uint8_t SS = 10;
static const uint8_t MOSI = 11;
static const uint8_t MISO = 13;
static const uint8_t SCK = 12;

Habe das auch geändert, er hat es auch übernommen, er spricht von den Pins auch die Displays an, aber leider ohne Besserung:

static const uint8_t SS = 10;
static const uint8_t MOSI = 15;
static const uint8_t MISO = 17;
static const uint8_t SCK = 16;

Ich verstehe das nicht...

Wer ist er ?
Der ESP32-S3 unterstützt das sicher.

Aber ok, wenn du die Oled weiter nutzen möchtest, ist das schon ok und sollte auch funktionieren. Ist halt ein wenig "gefrickel".
Wenn die allerdings schon länger in Betrieb sind, ist das Bild sicher nicht mehr so doll. Der Kontrast lässt doch mit der Zeit extrem nach.
Edit:
Ich würde es tatsächlich mal mit SPI3 SPI2 Hier nachlesen machen.

Ach so , der Display.
Ist nicht Oled sonder VFD.

Ich vermute irgendwie meine Verkabelung.
Wenn ein Display angeschlossen ist, lädt durch, beim 2 Displays Fehler, bei 3 nichts.
Oder ich bekomme sehr viele störungen am Steckbrett rein, aber theoretisch müssten die ja trotzdem ab und an reagieren.
Oder braucht man bei S3 jetzt, beide MISO und MOSI?

Für die üblichen Displays braucht es nur MOSI.
Sorry das mit VFD hatte ich übersehen.

Gut, vielen Dank.
Werde vielleicht morgen mal gleiches aufbau mit dem DEV 1 ausprobieren.
Obwohl habe es von da rückgebaut, hab ja ein paar ESP32 da, kann man ja ausprobieren.

Auf den Link ist IPS3 mit den Pins 35 rum glaube, auf einer anderen Seite wird behauptet, darf man nicht nutzen da für PSRAM reserviert ist.
Oder mache ich was bei Reset falsch, irgendwas banales bestimmt wie immer.

Ist ja nicht schlimm, muss man mal nachforschen. Haben aber scheinbar aber, echt mehrere Probleme damit.

Danke aber für die tollen Antworten

Ja sorry, mein Fehler, meinte SPI2. Die habe ich bei mir auch verwendet.
Grad nochmal geprüft..

Ah, Dankeschön.
Alles super, Dankeschön für Deine Unterstützung.
Entschuldige bitte Dich nicht jedes mal :wink:

Ah gerade rein geschaut nochmal, dann benutze ich gerade auch SPI2, laut den Pins.
Hmmmm

Ein Rätsel

Dies ist meine Definition:

 #define TFT_RST   GPIO15
 #define TFT_DC    GPIO14
 #define TFT_MOSI  GPIO13
 #define TFT_CLK   GPIO12
 #define TFT_CS      GPIO11
 #define TFT_MISO     -1  

Guten Morgen,

interessant! Da sitzt dann im jeden Sketch?
Und das TFT davor sitzt wird für SPI keine Nachteile haben?

Heute Abend werde ich es mal ausprobieren. Dankeschön für den Ansatz.

Grüße

Mir ging es da hauptsächlich um die GPIO. Die Bezeichnungen sind von deiner Library abhängig und solltest du nicht ändern.
Und ja, das kann in jedem Sketch für TFTs oder deine Displays verwendet werden.
Muss halt zum verwendeten ESP passen.

Vielen Dank,

habe noch mal die vordefinierte Pins angeschaut, kann es sein das man über den Pin 45 die SPI Spannung steuern kann, nicht das gerade deswegen es zusammen bricht, je mehr Displays.:

Strapping Pins

Typically these can be used, but you need to make sure they are not in the wrong state during boot.

  • gpio.0 Boot Mode. Weak pullup during reset. (Boot Mode 0=Boot from Flash, 1=Download)
  • gpio.3 JTAG Mode. Weak pull down during reset. (JTAG Config)
  • gpio.45 SPI Flash voltage. Weak pull down during reset. (SPI Voltage 0=3.3v 1=1.8v)
  • gpio.46 Boot mode. Weak pull down during reset. (Enabling/Disabling ROM Messages Print During Booting)

While not recommended, it is possible to burn the SPI voltage in a EFuse, effectively ignoring gpio.45. See Espressif EFuse docs for more information; look for VDD_SPI .

Der Pin ist bei mir nicht belegt, verstehe ich das richtig, bei 0 = 3.3V, vielleicht auf GND ziehen?

Bisher habe ich mich damit nicht beschäftigt.
Das hat aber nichts mit deinen Displays zu tun. Die Spannung der Displays beziehst du ja nicht aus den SPI-Pins.
Wenn, dann liegt es an einer fehlerhaften Verkabelung oder Programmierung (SPI-Ansteuerung).

Hast du verstanden was Espressif meint?

hier die Übersetzung:

"Es wird zwar nicht empfohlen, aber es ist möglich, die SPI-Spannung in einer EFuse zu brennen, wodurch gpio.45 effektiv ignoriert wird. Siehe Espressif EFuse-Dokumente für weitere Informationen; suchen Sie nach VDD_SPI"

Was meinst du damit?
Wo zu die SPI PInspannung abschalten?
Ich meine du bist auf falschem Dampfer, normaler weise bei allen SPI Displays usw. nach Unterbrechung egal vom welschem GPIO muss das Gerät = Display (wenn der BUS gerade am Arbeiten ist ) neu gestartet werden mit Resett oder Begin.