Utilisation W5500 avec ESP32

Bonjour à tous,

Aprés une tentative non concluante de connexion entre un ESP32 devkit v1 et un LAN8720.
Je me suis procurer un W5500, et je suis maudit pas moyen de le faire fonctionner.

Voici mon programme de test :

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

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

void setup() {
  Serial.begin(115200);
  
  Serial.println("Starting ethernet");
  Ethernet.begin(mac,ip);

  Serial.println(Ethernet.localIP());
}

void loop() {
}

et voici le retour console :

16:46:25.168 -> rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
16:46:25.168 -> configsip: 0, SPIWP:0xee
16:46:25.168 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
16:46:25.168 -> mode:DIO, clock div:1
16:46:25.168 -> load:0x3fff0030,len:1344
16:46:25.168 -> load:0x40078000,len:13964
16:46:25.168 -> load:0x40080400,len:3600
16:46:25.168 -> entry 0x400805f0
16:46:25.268 -> Starting ethernet
16:46:26.732 -> ets Jun 8 2016 00:22:57
16:46:26.732 ->
16:46:26.732 -> rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
16:46:26.732 -> configsip: 0, SPIWP:0xee
16:46:26.732 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
16:46:26.732 -> mode:DIO, clock div:1
16:46:26.767 -> load:0x3fff0030,len:1344
16:46:26.767 -> load:0x40078000,len:13964
16:46:26.767 -> load:0x40080400,len:3600
16:46:26.767 -> entry 0x400805f0
16:46:26.867 -> Starting ethernet
16:46:28.316 -> ets Jun 8 2016 00:22:57
16:46:28.316 ->

Et ça en boucle.

Brachement :

ESP32 w5500
D5 CS
D18 SCK
D19 MISO
D23 MOSI
3.3v VCC
GND GND

Ai je fait une erreur quelque part ?
Car j'ai l'impression de ne pas avoir fait de bétises.

PB Alimentation ?

Alimentation séparée très fortement recommandé ici
https://mischianti.org/esp32-ethernet-w5500-with-plain-http-and-ssl-https/

Ok @al1fch, je viens de lui mettre une alimentation séparé (ce qui n'était pas le cas avant), et toujours le même résultat.

l'ESP32 reboot en boucle.

Choix de GPIO ?
tu 'titilles' peut être involontairement un GPIO sensible :wink:
le message de démarrage
rst:0x8 (TG1WDT_SYS_RESET)....
semble renvoyer vers un conflit de GPIO empếchant un démarrage complet de l'ESP32

je ne vois pas dans ton code l'endroit ou un GPIO est attribué au signal CS,
vois Ethernet.initi() dans le programme de Renzo Michianti

Effectivement il y a du mieux, mais ce n'est toujours pas bon.

L'ESP ne reboot plus, mais ne se connecte pas au réseau :

Programme :

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

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

void setup() {
  Serial.begin(115200);
  
  Ethernet.init(5);
  Serial.println("Starting ethernet");
  Ethernet.begin(mac,ip);

  Serial.println(Ethernet.localIP());
}

void loop() {
}

Retour console :

17:30:33.223 -> rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
17:30:33.223 -> configsip: 0, SPIWP:0xee
17:30:33.223 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
17:30:33.259 -> mode:DIO, clock div:1
17:30:33.259 -> load:0x3fff0030,len:1344
17:30:33.259 -> load:0x40078000,len:13964
17:30:33.259 -> load:0x40080400,len:3600
17:30:33.259 -> entry 0x400805f0
17:30:33.355 -> Starting ethernet
17:30:33.907 -> 0.0.0.0

Il ne m'affiche pas l'adresse IP.

Bizarrement je viens de le réalimenter le W5500 directement sur l'ESP, sans passer par une alimentation séparé.
Et apparemment ça fonctionne :

18:09:34.832 -> rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
18:09:34.832 -> configsip: 0, SPIWP:0xee
18:09:34.832 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
18:09:34.832 -> mode:DIO, clock div:1
18:09:34.832 -> load:0x3fff0030,len:1344
18:09:34.832 -> load:0x40078000,len:13964
18:09:34.832 -> load:0x40080400,len:3600
18:09:34.832 -> entry 0x400805f0
18:09:34.946 -> Starting ethernet
18:09:35.522 -> 192.168.0.42

Une idée du pourquoi du comment ?
Car de mon coté je ne comprend pas.

Une idée du pourquoi du comment ?

suffisamment de courant + un meilleur 'timing' avec l'ESP32 et le W5500 'resettés' simultanément lors d'une mise sous tension commune ?

ça marche maintenant c'est l'essentiel !

Avec une alimentation séparée du W5500 peut être qu'a chaque lancement du code tu envoyais dans les registres du W5500 des données d'initialisation sans que celui-ci ait été resetté.

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