Issues with WIZ550io and ESP32

I’m attempting to get a WIZ550io running with a ESP32-S3-DevKitC-1-N8R2 development board and am having some issues getting the system to respond as expected.

I started out with the standard ESP32 example code for basic ethernet and a W5500 driver module

I (344) main_task: Calling app_main()
I (364) esp_eth.netif.netif_glue: 4a:27:e2:66:2f:08
I (364) esp_eth.netif.netif_glue: ethernet attached to netif
I (374) main_task: Returned from app_main()
I (374) eth_example: Ethernet Started
I (2374) eth_example: Ethernet Link Up
I (2374) eth_example: Ethernet HW Addr 4a:27:e2:66:2f:08

The first 5 seconds of data on the link lines:

The amount of “traffic” on the nINT line concerns me, especially since some of it looks like data:

I’m not an expert on the ESP32 W5500 drivers, so I can’t comment further on that traffic.

Now I know that the default IP address and gateway/net for the module will not work on my local network, so I set up an SPI interface to program those registers. I had a considerable amount of trouble getting those settings to “stick” - sometimes I’d write them, immediately re-read them back correctly, then read them again and get all zeros. (even though I was getting 01 02 03 on the RX lines, so I figured the W5500 was responding properly):

I (497) main_task: Calling app_main()
I (497) MainPrimary: [APP] MainPrimary Startup..
I (507) MainPrimary: [APP] Free memory: 317964 bytes
I (507) MainPrimary: [APP] IDF version: v5.1.2
I (517) Role01_main: [APP] Role_01 Startup..
I (517) Engineering Prototypes: ETHERNET DEV... 90
I (527) McuSpiPrimaryBusEsp32: McuSpiPrimaryBusEsp32 Constructing...
I (537) McuSpiPrimaryBusEsp32: SPI Primary Host Bus Initializing...
I (537) McuSpiPrimaryBusEsp32: SPI Primary Host Bus Initialized!
I (547) McuSpiPrimaryBusEsp32: McuSpiPrimaryBusEsp32 Constructed!
I (557) DevSpiPrimaryBus: DevSpiPrimary Initializing...
I (557) Engineering Prototypes: ETHERNET DEV... 94
I (567) McuEthernetW5500_Esp32: McuEthernetW5500_Esp32 Initializing...
I (577) McuSpiDeviceEsp32: McuSpiDeviceESP32 Constructing...
I (577) McuSpiDeviceEsp32: McuSpiDeviceESP32 Constructed!
I (587) DevSpiDevice: DevSpiDevice Initializing...
I (587) DevEthernetW5500: DevEthernetW5500 Constructing...
I (597) McuGpioDigitalEsp32: McuGpioDigitalEsp32 Initializing...
I (607) DevGpioDigital: DevGpioDigital Initializing...
I (607) gpio: GPIO[46]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
E (617) McuGpioDigitalEsp32: [0x3fcaaef4] SET Pin[46]=1
I (627) McuGpioDigitalEsp32: McuGpioDigitalEsp32 Initializing...
I (627) DevGpioDigital: DevGpioDigital Initializing...
I (637) gpio: GPIO[14]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (647) DevEthernetW5500: DevEthernetW5500 Initializing as SPI...
I (657) McuSpiDeviceEsp32: Set Device Chip Select to 10
I (657) McuSpiDeviceEsp32: Set Device HostID to 1
I (667) McuSpiDeviceEsp32: [0x3fcaae78] init() complete! [0]
E (667) McuGpioDigitalEsp32: [0x3fcaaf0c] GET Pin[14]=1
I (677) DevEthernetW5500: [0x3fcaae78] GET W5500 Version...
I (687) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 39 04 FF FF FF FF FF FF  |   000 057 004 255 255 255 255 255 255
I (697) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 00 FF FF FF FF FF  |   001 002 003 000 255 255 255 255 255
I (707) Engineering Prototypes: ESP32 MAC Address: [48:27:E2:66:2F:08]
I (717) DevEthernetW5500: [0x3fcaae78] SET W5500 MAC Address...
I (717) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 09 04 48 27 E2 66 2F 08  |   000 009 004 072 039 226 102 047 008
I (737) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 00 00 00 00 00 00  |   001 002 003 000 000 000 000 000 000
I (747) DevEthernetW5500: [0x3fcaae78] GET W5500 MAC Address...
I (747) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 09 00 FF FF FF FF FF FF  |   000 009 000 255 255 255 255 255 255
I (767) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 48 27 E2 66 2F 08  |   001 002 003 072 039 226 102 047 008
I (777) Engineering Prototypes: Set W5500 MAC Address to: [48:27:E2:66:2F:08]
I (787) DevEthernetW5500: [0x3fcaae78] SET W5500 IP Address...
I (787) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 01 04 C0 A8 56 01 FF FF  |   000 001 004 192 168 086 001 255 255
I (797) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 00 00 00 00 FF FF  |   001 002 003 000 000 000 000 255 255
I (807) DevEthernetW5500: [0x3fcaae78] GET W5500 IP Address...
I (817) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 01 00 FF FF FF FF FF FF  |   000 001 000 255 255 255 255 255 255
I (827) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 C0 A8 56 01 FF FF  |   001 002 003 192 168 086 001 255 255
I (837) Engineering Prototypes: Set Gateway to: [192.168.86.1]
I (847) DevEthernetW5500: [0x3fcaae78] SET W5500 Subnet Mask...
I (857) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 05 04 FF FF FF 00 FF FF  |   000 005 004 255 255 255 000 255 255
I (867) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 00 00 00 00 FF FF  |   001 002 003 000 000 000 000 255 255
I (877) DevEthernetW5500: [0x3fcaae78] GET W5500 Subnet Mask...
I (887) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 05 00 FF FF FF FF FF FF  |   000 005 000 255 255 255 255 255 255
I (897) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 FF FF FF 00 FF FF  |   001 002 003 255 255 255 000 255 255
I (907) Engineering Prototypes: Set Subnet Mask to: [255.255.255.0]
I (917) DevEthernetW5500: [0x3fcaae78] SET W5500 IP Address...
I (927) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 0F 04 C0 A8 56 BA FF FF  |   000 015 004 192 168 086 186 255 255
I (937) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 00 00 00 00 FF FF  |   001 002 003 000 000 000 000 255 255
I (947) DevEthernetW5500: [0x3fcaae78] GET W5500 IP Address...
I (957) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 0F 00 FF FF FF FF FF FF  |   000 015 000 255 255 255 255 255 255
I (967) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 C0 A8 56 BA FF FF  |   001 002 003 192 168 086 186 255 255
I (977) Engineering Prototypes: Set IP to: [192.168.86.186]
I (987) DevEthernetW5500: TOGGLING RESET!
E (987) McuGpioDigitalEsp32: [0x3fcaaef4] SET Pin[46]=0
E (997) McuGpioDigitalEsp32: [0x3fcaaef4] SET Pin[46]=1
E (1147) McuGpioDigitalEsp32: [0x3fcaaf0c] GET Pin[14]=1
I (1147) DevEthernetW5500: [0x3fcaae78] GET W5500 Version...
I (1147) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 39 04 FF FF FF FF FF FF  |   000 057 004 255 255 255 255 255 255
I (1157) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 00 FF FF FF FF FF  |   001 002 003 000 255 255 255 255 255
I (1167) DevEthernetW5500: [0x3fcaae78] GET W5500 MAC Address...
I (1177) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 09 00 FF FF FF FF FF FF  |   000 009 000 255 255 255 255 255 255
I (1187) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 48 27 E2 66 2F 08  |   001 002 003 072 039 226 102 047 008
I (1197) Engineering Prototypes: W5500 MAC Address: [48:27:E2:66:2F:08]
I (1207) DevEthernetW5500: [0x3fcaae78] GET W5500 IP Address...
I (1207) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 0F 00 FF FF FF FF FF FF  |   000 015 000 255 255 255 255 255 255
I (1227) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 C0 A8 56 BA FF FF  |   001 002 003 192 168 086 186 255 255
I (1237) Engineering Prototypes: W5500 IP [192.168.86.186]
I (1237) DevEthernetW5500: [0x3fcaae78] GET W5500 IP Address...
I (1247) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 01 00 FF FF FF FF FF FF  |   000 001 000 255 255 255 255 255 255
I (1257) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 C0 A8 56 01 FF FF  |   001 002 003 192 168 086 001 255 255
I (1267) Engineering Prototypes: W5500 Gateway [192.168.86.1]
I (1277) DevEthernetW5500: [0x3fcaae78] GET W5500 Subnet Mask...
I (1287) DevEthernetW5500: [0x3fcaae78] tx_buffer: 0x  00 05 00 FF FF FF FF FF FF  |   000 005 000 255 255 255 255 255 255
I (1297) DevEthernetW5500: [0x3fcaae78] rx_buffer: 0x  01 02 03 FF FF FF 00 FF FF  |   001 002 003 255 255 255 000 255 255
I (1307) Engineering Prototypes: W5500 Subnet [255.255.255.0]
E (1317) McuGpioDigitalEsp32: [0x3fcaaf0c] GET Pin[14]=1
I (1317) DevEthernetW5500: DevEthernetW5500 Initializing as Ethernet...
I (1337) esp_eth.netif.netif_glue: 4a:27:e2:66:2f:08
I (1337) esp_eth.netif.netif_glue: ethernet attached to netif
I (1347) McuEthernetW5500_Esp32: Ethernet Started
I (5347) McuEthernetW5500_Esp32: Ethernet Link Up
I (5347) McuEthernetW5500_Esp32: Ethernet HW Addr 4a:27:e2:66:2f:08
I (25347) McuEthernetW5500_Esp32: Ethernet Link Down
I (27347) McuEthernetW5500_Esp32: Ethernet Link Up
I (27347) McuEthernetW5500_Esp32: Ethernet HW Addr 4a:27:e2:66:2f:08

Also note that I never get the proper VERSION back from the W5500 - it should be responding with 0x4, but I never get that (never mind! I realized while looking at this here that I was doing a write transaction to that register, I’m getting 0x4 properly with a read transaction.)

Here’s one of the “SET” transactions for the IP (along with that suspicious interrupt data):

Likewise the corresponding “GET”:

So, I don’t have a lot of concern about setting the network information in the short term.

Would anyone be able to provide any direction on where to start looking into the issue, or is this firmly in the ESP32 side of the house?

Thanks!

A

I broke down and re-wired my SPI runs on my breadboard setup and the system started working as expected!

Thanks for anyone that took a look at this!