Go Down

Topic: Selecting Compatible SD Cards (Read 441 times) previous topic - next topic


What specifications do I need to keep in mind when selecting my micro SD card and hardware to connect it to my microcontroller?

I have read that older cards seem to work better. Is this true and why?

I have read that there are reasons why it might not be possible to address all locations in cards with high capacity. Is this true and why?

I like to use ESP32 and sometimes ESP8266, are there specifications I need to match to my microcontroller? Say I wanted to use an UNO, would there be other specifications I needed to consider?

I have been using a micro SD card wired directly to my microcontroller (soldered to the sd card). What other circuitry should I be using or is this generally okay? I haven't seemed to have any problems yet.

I have just been using SD cards lying around the house, but I would like to pick out a micro SD card for general purpose use on my ESP32 and ESP8266 projects so that I can buy several in bulk and know that they will work and I'm not over stressing them by the way I am wiring them.

Thank you for your help.
Throw a little karma my way. What goes around comes around.


Apr 19, 2019, 01:04 am Last Edit: Apr 19, 2019, 01:10 am by ShermanP
I've just been through this issue while working on an SD card bootloader for another processor.  If you are using a library for your SD card stuff, then you would have to go with the types of cards the library supports.  The original old-style cards were actually MMC cards, not SD at all.  Then in succession you have the basic SD card version 1.0, SD version 2.0, SDHC, SDXC, and I think there are more even larger cards after that.  I didn't use a library, but ended up supporting only SD (v1 and v2) and SDHC, any of which is way larger than needed for my purpose.

If the card is actually larger than what it's formatted for, then you could have part of the card unused and inaccessible.  But again, this is question of which card types and which file systems your library supports.

Instead of soldering the card to your board, I'd suggest you use a breakout board with a microSD card slot.  Then you could replace the card any time you want or need to.  One of these:


Or you could probably use just the card holder if you can find them.

As for the older cards, I found them to use less current than newer cards.  An Ebay no-name 256MB microSD card drew 10ma when reading, whereas a Transcend 4GB microSDHC drew 20ma.  I assume that's due to the difference in maximum speed capability.  If you don't need the speed or the higher capacity, a plain old SD card works pretty well.  That would give you up to 2GB.


Thank you for your suggestions @ShermanP. I am a little worried about current draw having it just wired directly to my microconroller. Seeing the breakout board you linked makes me feel like I'm not super crazy for trying it directly wired as it seems there are no components to the board. Just good access to the pins.

The breakout boards I have seen had components on them and I was worried that circuitry was needed. It appears many of them are to regulate the voltage down to 3.3V that I'm already dealing with on my microcontroller.

I am a little worried about current as most sellers of SD cards don't list the current draw. My maximum Cumulative IO output current is 1200 mA, but I don't know how much one pin can deliver.

If I'm working somewhere in the 10-20 mA I am guessing that should be okay. I've got 33 IO pins so 1200/33 = 36.36. I'm not sure this is how it works though.

Thank you for your help.
Throw a little karma my way. What goes around comes around.


The link I gave you is actually the wrong one for 5V Arduinos.  As you say, SD card modules for Arduinos will have "level shifting" included so they can be used directly with Arduinos.  They also typically have a 3.3V voltage regulator, and the input for that could be the Arduino's 5V pin, or some higher Vin voltage.

I think the only current load issue you are likely to run up against is the current required for writes.  For reading it should be 30ma or less, possibly a lot less for smaller cards, but writing usually involves erasing, and the current requirements go up with that.

You won't be powering the SD card from your I/O ports.  The ports will only see the signalling.  Supplying power to the card may involve the Arduino's 5V voltage regulator, and that could be a problem if it's already pushing against its limits (getting hot).  Of course if you are getting power from USB, you should be ok.

Go Up