SPI-2 Schnittstelle im ESP8266

Hallo Forum,
ich bin auf der Suche nach der 2.SPI Schnittstelle um eine SD Karte anzusprechen.
Bevor mir einer schlaue Ratschläge gibt, warum ich nicht die erste nehme, die Pins sind belegt. In meinem Projekt gibt es den I2C, OneWire Bus und 4 Eingänge. (So ist natürlich auch schon alles angeschlossen) Bevor ich umbauen, möchte ich diese Möglichkeit erst ausschöpfen).
SPI Standard läuft, aber wenn ich die Pins auf der linken Seite nutzen möchte schmiert der ESP ab.

Gerne poste ich meinen Code, aber vielleicht hat jemand schon diese Schnittstelle benutzt und kann mir Tipps geben, was ich einstellen muss.

Über ein paar Anregungen bin ich sehr dankbar.

Das wird schwierig. Der 2. SPI ist für den Flashspeicher reserviert.
Mein Tipp: nutze den 1. SPI und erweiter mit einem I2C-Portexpander.

Und welche Pins sind das ? Linke Seite ist ganz schlechte Kennzeichnung.

Wie kann man einen I2C Expander an SPI anschließen? Oder meinste Du einen SPI expander?

Habe ich das richtig verstanden, daß Du die Pins der ersten SPI Schnittstelle für andere Zwecke benutzt und nach der 2- Schnittstelle suchst?.
Benutze andere Pins für diese Zwecke zB auch durch Verwendung eines Port Expanders mit I2C oder SPI Schnitstelle und so hast Du die erste SPI Schnittstelle für die SD Karte frei.

Grüße Uwe

Ok ein zweites Mal durchgelesen und dann sagst Du das gleiche wie ich gesagt habe.
Grüße Uwe

Hi an Alle,
vielen Dank für die Beiträge.
Warum suche ich nach der 2.Schnittstelle, weil es eine fertige Platine ist und ich schon alles angeschlossen und verbaut habe.
Wenn ich ein neues Projekt anfangen würde, würde ich nicht danch fragen.
Also warum helft ihr nicht einfach im Forum nach dem was jemand fragt, vielleicht wird er einfach seine Gründe haben.

Hallo,
Gegenfrage:
Warum nimmst du die Hilfe hier im Forum nicht einfach an ?
In Post #2 habe ich dir die Antwort gegeben. Wenn sie dir nicht gefällt, liegt es sicher an dir. Für den ESP8266 gibt es leider für eine stabile Funktion, keine andere.

Ich hatte gestern dir gedankt, aber ich finde den Beitrag nicht, es es ist wohl beim Antworten hängen geblieben. Sorry.

Ach ja, da sehe nichts.
Und verstehe die Antwort in Post #5 nicht.

ich habe jetzt auch nichts mehr gesehen. (Habe ich wohl nicht richtig auf Antworten gedrückt).

Dein Post hat mir sehr geholfen bei der Entscheidung.

Ok, das verstehe ich.
Dann solltest du aber deine Antwort in Post #5 nochmals überdenken und evtl. korrigieren.

Könntest Du auch gleich im ersten Post schreiben.

Wenns unbedingt sein muß kann man Leiterbahnen auch Durchtrennen und mittels Kabel andere Teile dazulöten.
Grüße Uwe

Da wird dann der Flashbaustein aber nicht mehr funktionieren.
Somit sollte der 2. SPI nicht verwendet werden.

Da muss dann wohl eine neue Platine her.

Ich meinte die erste SPI - Schnittstelle.

Grüße Uwe

Ach ok,
war drauf gekommen, weil der TO von der 2. SPI schrieb.

Bin sowieso noch interessiert, was mit den "linke Seite Pins" gemeint ist.

Wenn man in der SPI.CPP reinschaut, ist ein zweiter SPI vorgesehen (übrigens PIN 6,7,8,CS-11)
Dort scheint es autzuhören, denn der Kommentar sagt, oh WD schlägt an. Wenn ich das richtig deute, könnte es weitergehen, aber wie?
Daher an Euch die spannende Frage, weiss jemand wie es dort weitergehen könnte?

Auszug aus der SPI.CPP:
...
...
bool SPIClass::pins(int8_t sck, int8_t miso, int8_t mosi, int8_t ss)
{
if (sck == 6 &&
miso == 7 &&
mosi == 8 &&
ss == 11) {
pinSet = SPI_PINS_HSPI_OVERLAP;
} else if (sck == 14 &&
miso == 12 &&
mosi == 13) {
pinSet = SPI_PINS_HSPI;
} else {
return false;
}

return true;

}

void SPIClass::begin() {
switch (pinSet) {
case SPI_PINS_HSPI_OVERLAP:
IOSWAP |= (1 << IOSWAP2CS);
//SPI0E3 |= 0x1; This is in the MP3_DECODER example, but makes the WD kick in here.
SPI1E3 |= 0x3;

    setHwCs(true);
    break;
case SPI_PINS_HSPI:
default:
    pinMode(SCK, SPECIAL);  ///< GPIO14
    pinMode(MISO, SPECIAL); ///< GPIO12
    pinMode(MOSI, SPECIAL); ///< GPIO13
    break;
}

SPI1C = 0;
setFrequency(1000000); ///< 1MHz
SPI1U = SPIUMOSI | SPIUDUPLEX | SPIUSSE;
SPI1U1 = (7 << SPILMOSI) | (7 << SPILMISO);
SPI1C1 = 0;

}

Echt jetzt ?
Du erwartest Antworten, obwohl du unsere Fragen nicht beantwortest.

Aber ok, die Antwort steht in Post #2
Und Hier darfst du das gern noch nachlesen.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.