SD Card Problems (LC Technology) on Uno

Hello, friends.

First of all, in my first message, I would like to congratulate this forum! It's almost an "Alexandria Library". :slight_smile:

Well... I'm trying to make a DataLogger using a SD Shield. So I'm using an OEM shield from LC Technology with a SDHC Card (16GB) with an Arduino Uno, but always got the "Fail" message.

So I tried every single wiring possibilities, (5v supply with tension divider to 3.3v interfacing the shield... used also the 3.3 output from Arduino with direct connections to the shield) and none worked.

Also, I've tried every single suggestion given to similar problems depicted in this forum. None too.

Thus, running the SdInfo code, with direct connections (MOSI @ 11; SCK @ 13; MISO @ 12; CS @ 4) and using the 3.3v supply, I've got the following response:

init time: 5 ms

Card type: SDHC

Manufacturer ID: 0X27
Product: SD16G
Version: 3.0
Serial number: 1460981884
Manufacturing date: 7/2014

cardSize: 15476.98 MB (MB = 1,000,000 bytes)
flashEraseSize: 128 blocks
eraseSingleBlock: true

SD Partition Table

vol.init failed
SD errorCode: 0X4
SD errorData: 0X0

I've tried all CS possible pins (4, 8 and 10), and tried to change the SPI_HALF_SPEED to "sixteenth" and "full" variations. Nothing changes.

May I conclude there is a hardware problem with my shield? Or its my SD? (The SD is working fine on my camera and on PC; it's on FAT32)

Thank you.


Well... after the message above, I kept myself trying to put the things working, and I've found something that could be useful:

I/O digital pins are 5v, but the newest cards requires - exactly - the 3.3v. So you (may) need a IC level shifter...

A possible solution when you are using resistors to drop the tension from 5 to 3.3 v, you should try the SPI_HALF_SPEED or SPI_SIXTEENTH_SPEED (I tried these only with direct connections). If none works, you should use a level shifter (or try an older SD card).


“It’s almost an Alexandria Library” How so? Is it almost impossible to find a specific thing there too ? 8)

SD cards need 200-300mA of 3.3V current and 3.3V interface signals. Driving the signals from 5V is not good.
Fast cards need a buffer chip like cd74HC4050 or 74VHC125MTC for 3.3V level conversion
and it’s a good idea to buffer MISO coming back as well to keep 5V from other MISO outputs from being dragged down by the SD card.
Google SDFat arduino and use that library for best results also.

"It's almost an Alexandria Library" How so? Is it almost impossible to find a specific thing there too ? 8)

hahahaha... no! I meant about the amount of knowledge! lol

Well, thank you for your advice.

I solved my problem by using an IC-based level converter (exactly as you said).

Now all works smooth!

Thank you. :slight_smile: