Why doesn't SD card reading work?

Hi All

I am hoping someone can shed some light on my problem. I just can not get an SD card to be recognised on my setup

System

Funduino Uno board (modified to run at 3.3V to save endless level shifters)
LC Studio SD card module ( http://www.lctech-inc.com/Hardware/Detail.aspx?id=0c3b6f7a-d101-4a60-8b56-3abfb7fd818d ): I removed the 5V regulator as it's no longer needed and shorted 3.3V regulator output pad to 5V regulator input pad for more 3.3V connections.

Running the CardInfo Sketch gives the usual


Initializing SD card...initialization failed. Things to check:

  • is a card is inserted?
  • Is your wiring correct?
  • did you change the chipSelect pin to match your shield or module?

I have done the following

Checked the wiring again and again
Checked the SD card module header goes to the correct SD adapter pin and cross-checked this against the SD card pinout.
Made sure that chipSelect is Pin 10 and an output
Ran at full speed and quarter speed
Tried a 1GB (FAT) and 8GB (FAT32) SD card
Looked at all the signals on a scope:
CS, MOSI, SCLK seem fine and have good edges
MISO is dead: I have removed the pull-ups (no effect)
Lifted the adapter pin to check for a PCB short (nope)
Even tried a dedicated 3.3V supply to make sure it wasn't a current limitation

Nothing makes any difference.

I thought it could be a hardware fault but I don't think so now. My suspicion is that MISO is dead because the card is not being addressed properly, but why?

I am at a bit of a loss and not finding anything new from internet searches.

I am really hoping someone can help.

Many thanks in advance

JasD

My suspicion is that MISO is dead because the card is not being addressed properly, but why?

If you bring SS (chip select) low it is being addressed. Can you show a photo of your setup, and your scope output if possible?

Hi Nick

Thanks for the response.

After further testing with 2 other cards (a 256MB and a 2GB card) I found that it is indeed working.

So what is it about the SD.h library that only favours some cards?

JasD

Try the SdFat library.

One thing I found from Wikipedia is that different SD cards, although they may look the same, can be somewhat different inside. Their SPI implementation could be different, for example. You could certainly try the SDfat library, and after that, well, maybe just live with the fact that some cards work, and some don't.