Go Down

Topic: Do not use this SD card module with 5V Arduinos (Read 136 times) previous topic - next topic

ShermanP

Jul 14, 2019, 05:56 pm Last Edit: Jul 14, 2019, 06:00 pm by ShermanP
If you search for a standard-size SD card module on the net, you will likely find one that looks like this:

https://www.ebay.com/itm/141957834496

This one is made by LC Technology, but there may be other brands that use the same circuit.

Since all SD cards (standard and micro) are 3.3V devices, the question arises as to how the four Arduino 5V data lines are interfaced to the corresponding SD 3.3V pins.  Based on pictures, I thought this LC module had inline series resistors in those lines.  They would allow protection diodes on the SD pins to shunt any excess voltage above, say, 3.9V to Vcc, but the inline resistors would limit the current flowing through the diodes.  There may have been modules like that in the past.

But I was wrong.  I ordered this LC module and traced out the circuit, and the resistors you see are not inline current-limiting resistors.  They are 10K pullup resistors to 3.3V.  I found a schematic for this module, and it is attached.

When driven at 5V by an Arduino GPIO port pin, such a pullup resistor has essentially no effect on anything.  The full 5V is connected directly to the SD pin.  If there is a protection diode there, current will flow out of the GPIO port pin through the diode until the output voltage of the port pin drops to 3.9V.  That could be quite a few milliamps.  And in theory, if enough of the pins are high, enough current could pass through the protection diodes to power the SD card in full, shut down the 3.3V regulator on the module, and raise the SD's Vcc pin to 4.4V.

If there are no protection diodes on the SD card pins, then the card could be destroyed if those pins are not "5V tolerant".  I've seen no datasheet for SD cards that suggests they are.

I don't know what over-voltage protections are built into SD cards.  But even though this module is advertised as providing both 3.3V and 5V input, I think it is clearly a bad choice for use with a 5V processor of any kind.  The most likely victim is the SD card, but damage to the Arduino through excess current flow is also a possibilty.  What's amazing to me is that this module apparently does actually work at 5V in some cases.  At least for a while.

MicroSD card modules, on the other hand, typically have level-shifting ICs that convert the 5V signals to 3.3V.  They work fine.  I don't know why standard-size SD modules don't also include these ICs.


Go Up