Other Parts Discussed in Thread: DP83825EVM
We have the TI demo board and we connected with our application board, when we receive/transmit a large packet we are losing the Ethernet link. We checked crystal clock and power supply looks ok and register too.
The issue is a bit random.
Initially I was polling BMSR register, and the Link_Status bit is randomly read as ‘0’.
It gets worse when transmitting many consecutive packets. Seems that increasing the data traffic on RMII is causing a link drop.
Then I found the same Link_Status flag in PHYSTS register but reading just it never returns ‘1’, either if the link LED is blinking and everything is working.
PHYSTS register returns a valid link (Link_Status = 1) only after a read of BMSR.
So for now the summary is that:
- Connecting the cable do not set PHYSTS Link_Status. A read on BMSR is needed in order to have good link status on PHYSTS.
Disconnecting the cable cause PHYSTS Link_Status = 0. I do not need to read BMSR.
- After a good link has been stablished, Polling BMSR randomly returns Link_Status = 0.
- After a good link has been stablished, Polling PHYSTS Link_Status returns 0 only if I disconnect the ethernet cable. The random link down read in BMSR is not reflected in PHYSTS.
Therefore, now I am polling PHYSTS instead of BMSR, and if Link_State is ‘0’ I read BMSR to reset PHYSTS flag.
It seems stable, but I need to ask you:
- Why PHYSTS reflects BMSR if I disconnect the ethernet cable and does not reflect the random link drop during data transmission?
- How to properly pool the link status.