1
\$\begingroup\$

I use a Microchip KSZ9031RNX as Ethernet phy on a custom board. I have two boards of the same type. The KSZ9031RNX is connected to an TI Sitara AM5728 (ARM Cortex A15) microcontroller that runs embedded linux (Kernel Version 4.19.38). Now I'am facing the problem, that the phy sporadically doesn't work as expected.
For example on board one the Link LED is always on. Regardless of whether an Ethernet cable is plugged in or not. And it is impossible to get an Ethernet connection. The chip seems not working. On the second board the link LED switches on when plugging in a cable and the board connects to the Ethernet as expected. But sometimes after powering off and on the phy doesn't work. The LEDs stay off when plugging in the Ethernet cable and an Ethernet connection can not be established. After one or some more power on resets the chip works without any fault again.

I checked the hardware several times and couldn't find any faults. So I'm going to exclude the hardware for now.

After powering on an additional reset is performed by pulling down the phy's reset pin for a few milliseconds. So afterwards the phy should be in an well defined state.

The reset circuit looks like this.

enter image description here

What I'm doing wrong?

Are there probably some special timing requirements at power on? Or a special power on sequence that has to be satisfied?

Are there some special timing requirements at power on? Or a special power on sequence that has to be satisfied?

\$\endgroup\$
7
  • \$\begingroup\$ Can you show your reset circuit? Did you checked your drivers? Which ARM microcontroller do you use (I assume microprocessor not microcontroller) \$\endgroup\$
    – esehic
    Commented May 19, 2021 at 15:26
  • \$\begingroup\$ The processor is a TI Sitara AM5728 (Cortex A15) installed on a phyCORE-AM57x System on Module (SOM) from phytec. A KSZ9031RNX is also installed on the SOM. This works correctly. The Linux Kernel uses the DaVinci MDIO Module driver. \$\endgroup\$
    – mcoc7n
    Commented May 20, 2021 at 13:30
  • \$\begingroup\$ Why do you have 2 74LVC*? They have open drain outputs, and there in no pullup resistor connected. It has undefined behaviour!! \$\endgroup\$
    – esehic
    Commented May 20, 2021 at 13:39
  • \$\begingroup\$ Youre right. There are pull ups. However, I forgot to include them. I revised the sketch. \$\endgroup\$
    – mcoc7n
    Commented May 21, 2021 at 9:33
  • 1
    \$\begingroup\$ Have you tried debugging to see if the chip is initialized correctly during power-up, especially with no eth cables plugged in (Of course, you should have set up the system for debugging outputs)? If you see unstable initializations (i.e. sometimes ok, sometimes not, sometimes ok after a few restarts or power cycles, etc) then the problem could be either PCB (i.e. RMII lines), bad power supply line, or even the crystal oscillator. \$\endgroup\$ Commented May 21, 2021 at 10:03

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.