W5500 phy stuck at 10mbps / 1/2 Duplex
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Share projects and connect with makers.
Joined before the site update? first.
New to WIZnet Makers?
We sent a verification link to your address. Open it to activate your account, then log in.
Accounts from this email provider are reviewed by an administrator after verification. Approval usually takes one business day.
Already have an account?
Enter your email address. If it belongs to an account, we'll send a link to set a new password. Members who joined before the site update use this to set their password.
If an account uses that address, we sent a link to set a new password. The link works once and expires in 30 minutes.
Know your password?
Need an account?
RE: W5500 phy stuck at 10mbps / 1/2 Duplex
by becky ·
hello,
Are you really half-duplex at 10mbps?
If you do not configure phy, the W5500 will work with auto negoation, which is the default setting.
If you set it to 100mbps, the link is caught at 100mbps or not caught.
So I think that you are not doing the right thing, or might be wrong.
RE: W5500 phy stuck at 10mbps / 1/2 Duplex
by dannypovolotski ·
I have the exact same issue. I set it up:
But it keeps defaulting to 10 half. On all routers and networks. @becky any advice?
RE: W5500 phy stuck at 10mbps / 1/2 Duplex
by pspeirs ·
I notice there hasn’t been any action on this topic for a while and disappointingly there has also been no resolution.
I have the same issue when setting PHY_MODE_AUTONEGO using the github libraries.
When PHY configuration is set as per below, I get 100M Full duplex.
however, when I set as follows, it drops down to 10M Half Duplex
RE: RE: W5500 phy stuck at 10mbps / 1/2 Duplex
by Eugeny ·
It seems
PHY_MODE_AUTONEGOoverrides all other settings and causes chip to auto-negotiate, and it can only auto-negotiate at 10M/H. Why? No idea… probably other device is set to auto-negotiate too, and they start with 10M/H and find connection and even do not try higher speeds and full duplex. Check and play with other device’s settings.RE: W5500 phy stuck at 10mbps / 1/2 Duplex
by pspeirs ·
I’ve verified the issues directly on a switch that I know works properly. Auto negotiation does not start at the slowest speed, it will agree on the fastest speed (bandwidth actually) that both sides support and configure for that.
Basically, when set to auto negotiate or HW controlled it will connect at 10M Half duplex, whereas if I force it to 100M Full, it works there as well.
UPDATE: OK, I think it is negotiating correctly to 100M however this doesn’t seem to be reflected when calling the function “void wizphy_getphyconf(wiz_PhyConf* phyconf)” and I’m not sure that the function is even correct looking at how it works.
If I call the following function I appear to get the results I expect so whilst not being a huge issue, I’d still like to get to the bottom of why the above function works in the way it does.
RE: W5500 phy stuck at 10mbps / 1/2 Duplex
by Eugeny ·
Seems to be correct bit assignment according to W5500’s PHYCFGR register.
The ultimate truth is the value of the PHYCFGR register. Read it using
and check its bits according to the description in the datasheet. Does its reading look incorrect?
RE: W5500 phy stuck at 10mbps / 1/2 Duplex
by pspeirs ·
Yes, I am getting the correct return from getPHYCFGR(), the problem seems to be with that I was using function void wizphy_getphyconf(wiz_PhyConf* phyconf) to read the results. Looking at this function, and based on getPHYCFGR returning a value of 255 for 100M Full, Auto Negotiation the function is loading the following into the phyconf structure.
255 & (1<<6) = 64 → PHY_CONFBY_SW → Correct
255 & (7<<3) = 56 → Goes to default, this is incorrect and will never match the first two cases.
Again, 255 & (7<<3) = 56 → Goes to default, this is incorrect and will never match the first three cases.
This is where I’m getting the incorrect result from. As you suggested, if I just look at the bit result from getPHYCFGR() then I guess that will give me the correct result. Just think that the above function I highlighted needs to be looked at.