ESP8266 - Utilizar SPI secundario

Hola, estoy haciendo un proyecto con ESP8266 (NODEMCU V3) conectado a un W5500 a través de SPI, y utilizar comunicación I2S con un amplificador de audio.
Actualmente conecto a internet con el W5500 sin problemas, pero estoy usando los pines D5, D6, D7 y D8 del SPI, y necesitaría liberar el D8 para el I2S.
He visto que el micro tiene otro puerto SPI pero por más que busco no sé cómo configurar mi proyecto para que use este otro puerto.
¿Me podéis ayudar?
Muchas gracias

para que usas un ESP8266 que tiene WIFI y lo conectas via W5500? No tiene sentido. Usa otro micro con mas pines I/O que te permita usar el SPI y el I2S en lugar de complicarte la vida o bien usa el ESP via WIFI

Moderador
He movido el hilo a la sección que le corresponde.
Todo tema de micros no Arduino, van en esta sección.

El pin D8 es precisamente el CS, (Chip Selet), es el unico que cambia al tener mas de un esclavo conectado al bus SPI. Cambialo en el constructor al que mas te interese.

Aparentemente no se puede.

HSPI signals are fixed to the following IO indices and GPIO pins:

Signal	IO index	ESP8266 pin
HSPI CLK	5	GPIO14
HSPI /CS	8	GPIO15
HSPI MOSI	7	GPIO13
HSPI MISO	6	GPIO12

Lo que recomiendan hacer es revertir la función del GPIO15 para que se comporte como un pin "normal" y luego manejar el CS "a mano" asignándolo al pin que se desee.

Todo está en la documentación de NodeMCU.

Saludos

Es una instalación donde no hay conexión Wifi, sino Ethernet.
Disculpa por haber publicado en el hilo incorrecto y gracias por moverlo.

¿Cómo puedo cambiarlo en el constructor?
Eso sería lo ideal, pero no sé exactamente a qué te refieres.

ENtiendo que no tengas WIFI pero siempre hay alternativas.
Alternativa 1:
Usa un Extensor de señal WIFI y con eso amplias el rango y resuelves el problema SPI.

Alternativa 2:
Usa otro micro que tenga I2S. Opciones.

  • Zero, MKR1000 or MKRZero Board
  • DUE
  • ESP32 que tiene mas pines y es mas flexible.
  • Blue Pill de STM pero hay otras opciones tambien con I2S

Bueno, si no me queda más remedio que cambiar de micro tendré que hacer eso.
Pero si puedo cambiar el pin CS como mencionaba gonpezzi sería lo más sencillo.
Aunque no sé a qué se refiere exactamente con "cambiarlo en el constructor".

He revisado la documentación de NodeMCU que ha recomendado gatul pero ahí mencionan una función spi.setup que mi programa no utiliza.
Estoy utilizando este proyecto como punto de partida:

Gracias

¿ Podrias subir el inicio de tu codigo?, solo desde la primera linea hasta el setup.

Por supuesto, ahí va:

#include <SPI.h>

#include <Ethernet.h>

// Enter a MAC address for your controller below.

// Newer Ethernet shields have a MAC address printed on a sticker on the shield

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// if you don't want to use DNS (and reduce your sketch size)

// use the numeric IP instead of the name for the server:

//IPAddress server(74,125,232,128); // numeric IP for Google (no DNS)

char server[] = "www.google.com"; // name address for Google (using DNS)

// Set the static IP address to use if the DHCP fails to assign

IPAddress ip(192, 168, 0, 195);

IPAddress myDns(192, 168, 0, 1);

// Initialize the Ethernet client library

// with the IP address and port of the server

// that you want to connect to (port 80 is default for HTTP):

EthernetClient client;

// Variables to measure the speed

unsigned long beginMicros, endMicros;

unsigned long byteCount = 0;

bool printWebData = true; // set to false for better speed measurement

void setup() {

Y que tal si miras la libreria Ethernet y sus ejemplos y buscas alguno en el que cambien el CS. Normalmente lo llaman SS o _SS
Mira esto

Aca tu posible solución
Este es un ejemplo para un MEGA pero intenta con el ESP8266 y el GPIO que elijas

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(10, 0, 0, 177);

void setup() {
  Ethernet.init(53);  // use pin 53 for Ethernet CS !!! esta es la línea !!!!
  Ethernet.begin(mac, ip);
}

void loop () {}

Luego mira este hilo del foro Platformio y alguien que quiere usar W5500 con un ESP32
La idea te servirá

Maravilloso, esta ha sido la clave.

Ya lo tengo funcionando con el CS en otro pin. Muchas gracias a todos.

@Surbyte, "Has dado en el clavo " yo andaba buscando un constructor de tipo:

Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

Antes del setup.
@nocturno , ¿ no tienes algo parecido a lo que dice @Surbyte en tu setup?, o en los ejemplos del I2S ¿ algo parecido al constructor que yo indico antes o dentro del setup?

Valla te adelantaste, me alegro que lo hayas solucionado.
Saludos.

Pues seguramente habrá algo, pero llevo poco tiempo con el entorno Arduino y todavía ando perdido.
Gracias por tu ayuda también