4
\$\begingroup\$

I'm currently working a project that will feature writing data to a microSD card. Because my project will be battery powered with a 125mA power regulator, I'm concerned that my write operations will consume too much power.

The microSD standard spec document states that a 25MHz write operation can have a maximum current draw of 100mA. This is somewhat concerning. However, my write operations at most will occur at 12MHz.

So my question, what exactly determines the power consumption of writing to a microSD card? I assume clock speed will effect it, would this relationship be linear? Regardless, assuming I were to write at 25MHz per the spec, is this 100mA simply a limit? Would write operations actually be less than this?

Is power consumption dependent on specific manufacturer implementation? A lot of microSD card datasheets don't list specific power consumption...

I appreciate any help!

\$\endgroup\$
4
  • 1
    \$\begingroup\$ Writing is done for complete sectors, once they are completely transferred, and are internally timed, independantly from the external clock. I don't think clock frequency will have a large effect on power draw. \$\endgroup\$
    – Grabul
    Commented Jul 24, 2016 at 17:24
  • 1
    \$\begingroup\$ Sounds like something that needs to be experimentally determined with a specific selection of test microSD cards. \$\endgroup\$ Commented Jul 24, 2016 at 20:19
  • 1
    \$\begingroup\$ If it's that concerning, put a decoupling capacitor next to the microSD slot, and write in bursts? \$\endgroup\$
    – user20574
    Commented Jul 24, 2016 at 21:19
  • \$\begingroup\$ I believe it is the amount of energy required to guarantee that the information "is written". It is the combination of voltage, current, and time, the signal is applied. If this is correct, then it is possible to reduce the current and increase the time (reduce the frequency). As a first approximation, I expect the relation to be linear (cut the current in half and double the time), so try it and see what happens. Good luck. \$\endgroup\$
    – Guill
    Commented Jul 30, 2016 at 7:29

1 Answer 1

3
\$\begingroup\$

For a past project I had to optimize the power consumption of a battery powered device recording data on a microSD for several days.

Things you need to do or are useful to know.

  1. Measure the power consumption profile of the application, in particular the SDCard.
  2. The SDCard has on internal LDO (Low DropOut regulator) which turns on when you address the card using the CS signal. It remains on during a certain time after you disable the CS signal. That time is pure power loss because you are not doing anything with the SDCard at that time.
  3. The faster you write to the SDCard, the less time it will be on.
  4. SDCards have different performances: read/write speed, read/write/standby current, the delay between the time the LDO turns on and the time that it is ready, the duration that it stays on after the CS signal goes low.
  5. By grouping read/write transactions you will limit the time during which the SDCard is on. By increasing your processor speed while you are writing, you can reduce the access time to your SDCard and therefore the consumption.

What I did:

  • Read specifications from several brands - it turned out that they did not have any helpfull information. The 100mA is a limit that the system hosting the SDCard must be able to provide to ensure that it works with all brands.
  • Buy about 10 different SDCards from different brands (manufacturers) and measure their characteristics: current consumption (read/write/standby), access delay, the time the SDCard remained on after deasserting the CS signal. We did not have to check speed as the microcontroller was well below the speed the SDCards could achieve.
  • Select the SDCard type that had the lowest consumption and "on" duration after CS off. As far as I remember, the avarage consumption ratio between the most efficient SDCard and the worst SDCard is about 3.
  • Limit writes to the SDCard by storing as much data in RAM as possible before writing it to the SDCard in several successive block writes. Only do full block writes and not partial block writes that have to be repeated later.
  • Increase the system clock during the writes to get the highest possible SPI speed, and lower the clock after that to limit microcontroller consumption for the other operations that did not require a high clock speed.
  • With all of that we were able to move from about 6 hours of autonomy to about 3.5 days.
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.