I am adding a microSD card to my new '644 board to make a low-cost data logger. All my boards are 3.3 V, so I won't have the 5 V issues. I have tried three different libraries and none of these initialize the cards :( I have also tried three different SD and SDHC cards from two different
manufacturers (all large capacity) and none initialize.
I have my logic analyzer on the board now, and I am reviewing the
specification. It looks like the initialization procedure is different for
the newer card. I am almost certain that the SDHC is different. There is no response to the initialization routine.
From a lot of googling I have found out the following:
NB: (I have not verified this information, only found it ;)
Using the resistor dividers to translate from 5 V to 3.3 V
can be problematic due to loss of edge speed due to the
series resistance. I am not sure how much edge speed is lost
or how sensitive different cards are to this.
Since this is not an issue for my 3.3 V board I wasn't
worried.
If the I/O pins are not at 0 V when power is applied to the
card the card may be startup in an unknown state. Unfortunately
the datasheet does not mention if there is a software
initialization procedure that can be used to reset the
card to a known state.
In version 2.00 of the SD specification the initialization
procedure changed. I am not sure if the libraries support
these changes.
Some people have reported success changing to low-capacity
cards. I was hoping to find a low capacity at the office
supply store, but the smallest they had in stock was 2 GB.
I am suspecting that it may not be the size of the card,
but the age (since most smaller cards are also older cards).
SPI support is optional for microSD. I would be surprised if
cards didn't support SPI since if is required for the other
formats. I was hoping to find a list of cards that were
known to support SPI, but I could not find it.
That is where I am at. Unfortunately I probably won't have
much time to work on this during the week. My next step
is to go through the specification and write a simple
initialization function and verify the output on the
logic analyzer.