SD Card higher Snooze.hibernate currents.

Status
Not open for further replies.
I was doing some more messing around with the snooze library and cpu speeds when I noticed that if I had an SD card inserted in my Teensy 3.6 while I was hibernating, it uses 500 uA vs 60 uA.

I also noticed that while running at 24 MHz a card inserted also raised my operating current by about 20 mA while idle.

I will spend some time investigating this weekend, but I thought I would ask here to see if someone could beat me to it:
Is there a way for me to shut down the sd card and then remove power from to the card before I go to sleep in order to save power?
 
Yep, i have observed the same thing on various boards with SD. The SD has its own processor, and the amount of power consumed varies by SD card. If feasible, you could add an FET to the VDD line to the SD and turn it off as desired. That's probably not possible with the T3.6 PCB.

SD card specs of SANdisk: the SD card goes to power saving mode when it receives no command within 5ms - and should only consume 250uA

some idle power comparisons: https://electronics.stackexchange.com/questions/37173/low-power-micro-sd-card-storage
 
Last edited:
I also noticed that while running at 24 MHz a card inserted also raised my operating current by about 20 mA while idle.
That means there is an open command and the card doesn't go to sleep. E.g., SdFatSdioEX uses open-ended transfers. Calling 'sd.card()->syncBlocks();' will allow the SD card to go to sleep.
 
I had the same behaivour. When I open and close the data file in the loop I was able to reduce the power consumption to 150uA. I testets sveral sd card, the resulting current was all the thime nearly 150 uA.


Code:
 String dataString = "12345";
  File dataFile = SD.open ("datalog.txt", FILE_WRITE);


  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
  }
 
That means there is an open command and the card doesn't go to sleep. E.g., SdFatSdioEX uses open-ended transfers. Calling 'sd.card()->syncBlocks();' will allow the SD card to go to sleep.

Thank you tni, I appreciate the help. That solved the 20 mA issue.

If anyone is interested this is what I am seeing for currents now:

Snooze.hibernate() current with no uSD Card = ~63 uA

Snooze.hibernate() current with various uSD cards I have lying around:
SanDisk Ultra microSDHC UHS-I 80 MB/s 533x Class 10 16GB = 166 uA
Old 2gb San Disk = 157uA
Samsung 16 gb evo (U1)(yellow) = 138 uA
Samsung 32GB 95MB/s (U1) Class 10 MicroSD EVO = 143 uA

I am happy with those numbers, but if anyone knows how to get it lower I am all ears.
 
I am happy with those numbers, but if anyone knows how to get it lower I am all ears.

You could think about using Serial Flash Memory instead of the sd card....
I also found the current consuption a little bit high for my purposes. Now I am trying to use Teensy LC+ external Rtc + Serial Flash Memory instead of Teensy 3.6. The current consumption of the Teensy LC is only around 10uA in hilbernate.
 
Status
Not open for further replies.
Back
Top