WIZnet Developer Forum

Power down PHY from Arduino Mega

Hi,

I have an 5500 ethernet shield attached to a Mega 2560. We need some way to reduce the power usage on the shield when we aren’t transmitting anything. I see a reference to powering off the PHY, but I have no idea on how to do that and I can’t seem to find much information on it. Is there something in the Arduino library that would allow me to do that or perhaps some other way?

Thanks,

Eli

I don’t know how the arduino libraries work but its controlled in the PHYCFGR register at 0x002E offset.

To power down the PHY you need to modify the OPMDC bits to 110 the powered down PHY mode, also set the OPMDC bit so the PMODE pins do not control the power mode. I would also set the RST bit of the register at this time.

Once this is done you need to reset the PHY to make the change take effect. This is done by clearing the RST bit in the PHYCFG register. I read the whole register, clear the MSB (RST bit) and then write it back.

With everything enabled and no cable connected I see 64mA, with the PHY powered down I see 31mA at 3.3V and room temperature.
The W5500 data sheet has a typical power consumption value of 13mA but I haven’t managed to achieve this.

If anyone has any real world current consumption numbers for the power down mode I would appreciate them posting them. I prefer my chip data sheets to have max values, even if its a somewhat high test limit.

Hi

There is power down mode in W5500.

Refer to W5500 datasheet.

wizwiki.net/wiki/lib/exe/fetch.p … 160223.pdf

It is need PHY operation mode control.

Thank you

Thanks Guys,

DillonMCU, I’m not quite used to manipulating registers as suggested. I’ll work on that, but it you had a coding example of how to manipulate them in any language as suggested, that would be a big help. I think in Arduino land it looks something like:

W5500Class test;
test.setPHYCFGR(0b10110000); // where 0b10110000 is the value of the bits to set, for manipulating the PHYS anyway.

Thanks,

Eli

Hi Edward,
The data sheet only lists a typical value of 13mA for power down mode.
Is there a max current for power down or a testing limit using during device test?

From the library, it looks like one can read the PHY with uint8_t W5500Class::getPHYCFGR()

When I try that though, the Arduino seems to crash. Any insight is appreciated as I seem to be doing something wrong. Here is the code that I am using:

W5500Class test;
int readback = test.getPHYCFGR();
Serial.print("readback of the phys: ");
Serial.println(readback);

Hi.

W5500 power down mode is phy company support function.

This function no have in more below current support.

Just provide function from phy company.

Thank you

I’m not really sure what you mean Edward. Are you saying that function is no longer supported?

Thanks,

Eli

NoNoNo…

Sorry… My english skill… very insufficient.

That’s all. power down mode function in datasheet…

Thank you

Thanks for the clarification. I still have no idea how to make this work. Like I said, I tried:

W5500Class test;
int readback = test.getPHYCFGR();
Serial.print("readback of the phys: ");
Serial.println(readback);

which seemed reasonable to me for testing reading back the state of the phys, before I try to actually set it. This seemed to crash the Arduino, though.

Am I giving a bad command or is this just not working. I’d really like to get this figured out, so thanks for everything.

Eli

Hello all,

I am very late to this game…

I have successfully put the W5500 to power down mode and set it to lower speed mode in Arduino. Checkout my repo at https://github.com/pauldeng/arduino-leonardo-eth-w5500-powerdown-example

Hope it is still useful to someone.

Cheers,
Paul

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.