Thanks @kuriko for your reply!
With this informations I tried with this pins without success :
#define INT_GPIO 35
#define MOSI_GPIO 23
#define MISO_GPIO 38
#define SCK_GPIO 18
#define CS_GPIO 33
I think there must be weird things happening in the SPI initialization with M5.begin() and all that, in any case this code doesn't work:
#include <Arduino.h> #include <M5Unified.h> #include <M5Module_LAN.h> #include <SPI.h> #define _ASYNC_WEBSERVER_LOGLEVEL_ 2 M5Module_LAN LAN; ////////////////////////////////////////////////////////// // Optional values to override default settings // Don't change unless you know what you're doing #define ETH_SPI_HOST SPI3_HOST #define SPI_CLOCK_MHZ 25 // Must connect INT to GPIOxx or not working #define INT_GPIO 35 #define MOSI_GPIO 23 #define MISO_GPIO 38 #define SCK_GPIO 18 #define CS_GPIO 33 ////////////////////////////////////////////////////////// #include <AsyncTCP.h> #include <AsyncWebServer_ESP32_W5500.h> AsyncWebServer server(80); const char *PARAM_MESSAGE = "message"; void notFound(AsyncWebServerRequest *request) { request->send(404, "text/plain", "Not found"); } void setup() { M5.begin(); Serial.begin(115200); if (esp_netif_init() != ESP_OK) { Serial.println("main::setup(): Error: Unable to initialize network interface"); } uint8_t cs_pin = 33; uint8_t rst_pin = 0; uint8_t int_pin = 35; SPI.begin(SCK, MISO, MOSI, -1); LAN.setResetPin(rst_pin); LAN.reset(); LAN.init(cs_pin); Serial.print(F("\nStart AsyncSimpleServer_ESP32_W5500 on ")); Serial.print(ARDUINO_BOARD); Serial.print(F(" with ")); Serial.println(SHIELD_TYPE); Serial.println(ASYNC_WEBSERVER_ESP32_W5500_VERSION); Serial.println("Default SPI pinout:"); Serial.println("SPI_HOST:" + String(ETH_SPI_HOST)); Serial.println("MOSI:" + String(MOSI_GPIO)); Serial.println("MISO:" + String(MISO_GPIO)); Serial.println("SCK:" + String(SCK_GPIO)); Serial.println("CS:" + String(CS_GPIO)); Serial.println("INT:" + String(INT_GPIO)); Serial.println("SPI Clock (MHz):" + String(SPI_CLOCK_MHZ)); Serial.println("========================="); /////////////////////////////////// // To be called before ETH.begin() ESP32_W5500_onEvent(); // bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, // int SPI_HOST, uint8_t *W5500_Mac = W5500_Default_Mac); // ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); Serial.print("Network::connectEthernet(): Connecting to Ethernet with DHCP "); byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; if (!Ethernet.begin(mac)) { Serial.println("Network::connectEthernet(): DHCP failed, aborting"); } EthernetLinkStatus linkStatus; while ((linkStatus = Ethernet.linkStatus()) != LinkON) { Serial.print("."); delay(100); } Serial.println(" ...Connection established!"); Serial.println("Network::connectEthernet(): IP address : " + LAN.localIP().toString()); Serial.println("Network::connectEthernet(): Subnet mask : " + LAN.subnetMask().toString()); Serial.println("Network::connectEthernet(): Gateway IP : " + LAN.gatewayIP().toString()); Serial.println("Network::connectEthernet(): DNS : " + LAN.dnsServerIP().toString()); ESP32_W5500_waitForConnect(); /////////////////////////////////// server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) { request->send(200, "text/plain", "Hello, world from AsyncSimpleServer_ESP32_W5500"); }); // Send a GET request to <IP>/get?message=<message> server.on("/get", HTTP_GET, [](AsyncWebServerRequest *request) { String message; if (request->hasParam(PARAM_MESSAGE)) { message = request->getParam(PARAM_MESSAGE)->value(); } else { message = "No message sent"; } request->send(200, "text/plain", "Hello, GET: " + message); }); // Send a POST request to <IP>/post with a form field message set to <message> server.on("/post", HTTP_POST, [](AsyncWebServerRequest *request) { String message; if (request->hasParam(PARAM_MESSAGE, true)) { message = request->getParam(PARAM_MESSAGE, true)->value(); } else { message = "No message sent"; } request->send(200, "text/plain", "Hello, POST: " + message); }); server.onNotFound(notFound); server.begin(); } void loop() { delay(1000); }