Link LED starts flashing when ethernet cable connected, but no network activity

Ok, interesting update…

While probing with an oscilloscope I checked the crystal on the W5500, and it turns out it was oscillating at around 135MHz! It is a 25MHz crystal, so something went majorly wrong. I used 12pF as the capacitance to ground next to XO and XI, so I wonder if this was too high.

I made a new board with new components, but this time I changed the crystal capacitors to 10pF (I don’t have any smaller) and it seems to be operating at 25MHz now. I also changed the RX line AC coupling capacitors to 6.8nF from 10nF.

The problem is still there, though :unamused:. Interestingly, though, the code stops at a different point. Now I can read back my MAC address by using the registers, but this time it seems like the code loops forever waiting for a reply after sending a broadcast looking for a DHCP server. My switch - to which the RJ45 is attached - does not flash to indicate any activity. This makes me suspect that there’s an issue still with my board and not the software. The blinking LED on the RJ45 socket is still going at ~0.5Hz.

Rooting around further, I realise I used 51R pull-up and pull-down resistors on the TX and RX lines, instead of the reference schematic’s 49R9. I didn’t think this would matter, but I read here that “The individual trace impedance of Tx+/Tx- and Rx+/Rx- must be kept below 50 ohms, and the differential characteristic impedance of the pair must be 100 ohms.”

It’s a long shot, but perhaps swapping out those resistors will fix it…? I don’t have any to hand, unfortunately.