W5500 resets when >40ms between SPI transfers

Dear All,

I am experiencing an issue that I cannot quite figure out. I am using a w5500 on a custom development prototype. After the first time I write a register from my MCU I have to keep a continuous stream of SPI transactions (read or write, it makes no difference) otherwise the w5500 will reset. If I ever wait more than ~40ms between two consecutive transactions the device will reset. Any periodic SPI transaction will keep the device alive, such as simply reading the status register.

If I let this 40ms time elapse and then I try to read the status of the physical layer with getPHYCFGR() I will find it down and I have to recreate and reconnect to all my sockets to restore the ethernet communication.

Any idea what could be causing the issue? Please let me know how I can help reproduce the issue.
Best regards,

How did you know that it is being “reset”? All values in all registers (including common - own IP address, mask, GW) are being reset to default (see datasheet)?

What exactly do you find out? No link?

What state sockets are in? What issues you face if continue in the current state?

Hello Eugeny,
Sorry for the late reply. Before we even talk about sockets, reading PHYCFGR normally returns “10111111” when everything is working fine. When the issue appears PHYCFGR is first “10111010” for some time (so link off and half duplex) and then “10111110” for a few us (so only link off) and then it recovers normal operation. I can see the link is truly off because the green led on the ethernet connector is switching off.

This doesn’t happen if I implement the aforementioned workaround of polling the status register or the PHYCFGR continuously as a form of “keepalive”.

I will see what the sockets return and come back to you, but I think this is already enough to say that there is some kind of issue.

If you see link LED off and on then there’s hardware/connectivity issue. Recheck your circuit (connections, component values), change physical port on the switch.

Hello Eugeny,

Cable and switch are fine. The circuit of course could be an issue, I am using an arduino ethernet shield 2 but I modified it quite a bit.

Strange that the issue only occurs when I am not communicating through SPI. My workaround works perfectly, so it is hard to find a hardware failure that matches my observations. I will monitor VCC as well as the reset output from the voltage controller on board, maybe a small brown-out or an interference is triggering a reset.

Ensure you do not accidentally write to PHYCFGR resetting PHY.