I've been solving this parallel with Hannu, here's my take.
Generally power consumption problems need to be solved on a board by board basis, so I made a program, power.dlx, that has various functions that you can try one after another, to find a combination that works best for you. My best achievement with it so far has been to decrease the amount of power taken from a lab power supply from 74 mA down to 9 mA. At 9mA it runs at 3.07 MHz and doesn't play MP3 any more, but it can list files from an SD card, for example.
Here's a copy-paste from the command line, using the VS1010D developer board, V2.0. I've written the mA figure shown by the lab power supply after each command so you can compare.
VS1010D VSOS 4.20
Crockett's Theme 12 inch.mp3 [power draw after this step: 74 mA]
VS1010>power usboff [power draw after this step: 61 mA]
VS1010>power gpio [power draw after this step: 53 mA]
Unfloating GPIO pins (may make your board not work)..
VS1010>power dacoff [power draw after this step: 33 mA]
VS1010>power low [power draw after this step: 30 mA]
VS1010>power 0.25x [power draw after this step: 16 mA]
VS1010>power sdoff [power draw after this step: 9 mA]
Please note that the amout of current drawn is not just the VS1010 - there developer board has a huge amount of other chips and devices that also draw power. Here's the same sequence run in the VS1010D Minidemo board
Playing Crockett's Theme after reset - 49mA. power usboff -> no change, USB has not been started. power gpio -> 37 mA. power dacoff -> 26 mA. power low -> 23 mA. power 0.25x -> 9 mA. power sdoff -> 4 mA
To find the lowest settings to play the same song, I gave the following sequence:
power save, power low, power 2x, power gpio, play s:C* and it plays the MP3 file using 32 mA
For low bitrate MP3 you can use 1x clock. The same sequence (save, low, 1x, gpio) plays 12 kHz, 16 kbps MP3 using 20 mA
Playing the low bitrate song from the SPI flash instead of the SD card uses 16 mA
on the minidemo board.
Below are the command line commands that are available at the moment. You can explore the source code to find out more and get new ideas.
Some functions may not work after some other functions. And you must restore the chip to at least 1X clock before doing a reboot, otherwise the soft boot will fail.
Please test these using your command line and tell us how it goes!
POWER.DLX First version commands, all are case sensitive:
- turn power off. Needs power button press to switch power back on.
- stop SD card, terminate all ongoing functions. Saves power but does not lose SD card functionality. Using the SD card makes it active again, so you must give the command "power sdoff" again to get back to the power saving state.
- switch off the SD card. Experimental, needs power cycling to recover
- switch to 1x clock (12.288 MHz)
- switch to 2x clock (24.576 MHz)
- switch to 3x clock (36.864 MHz)
- switch to 4x clock (49.152 MHz)
- switch to 5x clock (61.440 MHz)
- switch to 0.5x clock (6.144 MHz)
- switch to 0.25x clock (3.072 MHz)
- experimental power saving settings
- switch off USB (no effect if USB is not started)
- set lower voltages
- switch off DAC and analog drivers
- unfloat GPIO pins (a little bit dirty, reads GPIO states and sets them as outputs accordingly - it might need tweaking to be usable in your own boards. Thanks to Hannu for this trick)