reducing power consumption - PHY powerdown?

Go To Last Post
7 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi everyone again,
here I am triying to reduce current consumption in NGW100.
I'm planning to do an audio player prototype, and since most of the time the eth ports are not being used, I would like to shut them down.
I saw there is a powerdown bit in one of the PHY registers, is it set when the interface is down? or does anyone know a way to force it so that I get less mA consumption?

Of course, disconnecting the RJ45 jack saves a lot of power (about 25mA here), but I wanted to know if there is something else that could be done.

thanks!

EDIT: is there a way to put the AVR into sleep mode while in linux, to wake up again by some interrupt?

Carlos

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

If you run a resent kernel (2.6.22 or above IIRC) then the CPU enter sleep 0 when not doing anything.

Hans-Christian

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

nice. thanks!
I see that those 25mA @ 11V (measuring from the power source) that I save by not connecting the ethernet are somehow what the PHY datasheet refers as power consumption @ 100Mbits or 10Mbits, which is about 90 or 80mA @ 3.3V, thus it looks as if it is not fully active, which is nice.

However, I tried a little 'trick' by disabling the PLL and clocking from the main crystal, thus 'hanging' linux, in order to see what happens with current consumption.
I get 60mA @ 11V on the input.. which might be like 9V after the diode bridge. That's quite much for the avr not doing anything, but of course I forgot to switch all peripherals' clock off...

I have to check the RAM and FLASH's specs so I get an idea about what's going on. I just want to know how far I can reduce power consumption when idle.

I also tried dynamic clock speed support in the kernel, which is nice but when idle won't change things much (which is acceptable based on what you are saying about sleep 0 when idle).

oh, those measurements where done with nothing connected to the board but power source.

thanks again,

EDIT: I would like to be able to shut down to the minimal power state, like a deep sleep, to wake up on button press, for instance. Is it possible with current linux kernel?

Carlos

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

well now I'm trying to do some improvements over the last post.
I tried forcing the AVR32 to sleep 5 mode, and I get about 100mA @ 7V on the switching reg input.
That's still too much. Probably the PHY not being powered down completely, I wonder where that current goes...
Nothing connected but power and RS232 (which would lessen about 1-2mA if disconnected).

any ideas on this?
I was thinking in a way to shut the whole board down to make a battery powered device. Of course that the NGW100 wasn't made for that, but I wanted to try to lower power consumption to something reasonable.

Edit: I force sleep 5 mode by writing a module which does

asm("csrf 16; aa: sleep 5; rjmp aa;");

That hangs the CPU but it should be enough to give the results i'm looking for. is there something i'm missing?

EDIT 2: It should be ssrf 16; to disable ints, however that won't change much given the situation.

thanks
Carlos

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

So just to confirm, you're seeing 100ma current draw with the CPU in sleep 5? Owch. I don't spose you're feeling keen and are up for lifting power pins on, for example, the PHY?

AVR32 recently grew suspend/hibernate support which will probably help you a fair bit. Especially as you then have an in-kernel hook in which to write to the PHY powerdown register.

-S.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

squidgit.. well, as you say.. I would prefer to avoid removing the PHY :P
As the PHY's datasheet says it should only draw 14mA @ 3.3V when in power down mode. I thought about sending it the power down command yesterday, but I didn't have the time. I will see if I can try that today.
On the other hand, 100mA @ 7V would mean about 200mA @ 3.3V (neglecting 1.8V current). That might be both phys working at 100mBPS or so, although the network cables were disconnected during the test.
Do you have an idea about how low current consumption can be lowered on the NGW100?

I also read that the RAM is another important current consuming device, but I guess that with all clocks stopped (sleep 5) that wouldn't be of such a harsh.

thanks.

Carlos

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Today I was able to shut down the PHYs and current got really better :P
Now, with both PHYs powered down, I get 54mA @ 9.45V in sleep 5 mode.
The Power led and the system led where ON when I issued the sleep 5 instruction. Measuring voltage on the LEDs the green one consumes about 6mA and the system led 7mA.

Computing total power gives 54mA*9.5V = 0.475W.
The swithing regulator has a quiescent current about 7mA @ 9.5V, so that gives us 47mA or 0.446W. Eficciency is about 90% (expected, not tested) so final usable power is 400mW.

Substracting the LEDs I get 357mW.

If the CPU is idle and on sleep 5 then there shouldn't be much current drawn from 1.8V.. then that means that there are about 108mA flowing from the 3.3V supply.
PHYs in power down eat about 14mA, so there are 80mA left.

The RAM datasheet says 40mA standby current but 2mA powerdown current.. I wonder which one is valid here, and if it is the first one how to put it in powerdown, I have to investigate.
So supposing it is standby current there are 40mA left to guess..

The MAX232 takes 8mA so we get 32mA left.

The ATTiny might contribute on something.. Also the FLASH, and the MAX232 too.

Well this has gone too mathematical, but I tried to get to the details. I think the NGW100 wasn't designed for power saving or anything similar, and it's fine, it's a great board.
However now I see that it's important to consider lots of aspects here, specially when there are so much external components.

thanks squidgit for your support,
Carlos