First of all I am fairly new to this community and thankyou for having such a great community.
I have tried to create a custom W5500 + RP2040 custom board. While designing the board I have referenced the schematic available on
I got the boards fabricated and when they came in, there wasn’t any Link Led light when I plugged the RJ45 connector into the board. It was strange as there should be Link Led light.
I am using Arduino IDE to program and started to debug. I could see that the w5500 Ethernet.hardwareStatus() was detected but there was no link Ethernet.linkStatus(). I am using Ethernet Library in arduino. I am also using UDP to send / receive data.
After going through a few articles, I followed instructions mentioned in this article
I set the PHYCFGR register.
Half Duplex 10 - Link LED constantly ON
Full Duplex 10 - Link LED constantly ON
Half Duplex 100 - Link LED off | non responsive state
Full Duplex 100 - Link LED off | non responsive state
Full Duplex 100 with Auto Neg - Link LED off | non responsive state
Auto Neg - Link LED off | non responsive state
Observations :
In the Half/full duplex 10 mode, I can see that the link is up but I am not able to send or receive data through UDP.
If I configure w5500 in Half/full duplex 10 mode, then I am able to configure them in Full Duplex 100 mode as well, but as soon as power down the board and then power it up again, the Link Led is off and the link is down. Then I have to configure w5500 in Half/full duplex 10 mode again for the link LED to be ON.
I am using a very dumb router DLink 1005c
Any help or directions on this will be very helpful.
Correct, it should if PHY is not configured down and powered up and not in reset state.
I did not look into the circuit closely, brief look did not show any fatal problems (unless some pins are confused).
First thing to check is power. Second thing to check is clock. But thing number 0 to check is what is on the board in reality vs circuit diagram. For example, do you have 49.9k resistors instead of 49.9 Ohms soldered.
Check 0 : All the values of the resistances used are fine and within the 1% limit.
Check 1 : Powered through external power supply directly to the w5500, still the same behviour.
Check 2 : The crystal seems fine delivering 25MHz.
I was going through the hardware design parameters
Do you think that the problem lies in the artwork?
As far as we are sure hardware must be ok (hopefully chip was not overheated during manufacturing), you seem to have SPI access functioning. Please prove it by reading VERSIONR register.
Next test is you remove ALL the driving code, and leave only the following:
hardware reset using RST pin
software reset using MR register
reading VERSIONR to ensure you read 0x04
stop (infinite loop).
With this set up chip is in default state, PHY is enabled. Now when you plug cable in - try both direct and crossover, with one of these cables you must have link LED on, but only in case another end of cable is connected to the port which is up.