I've got a pretty weird problem. I'm trying to interface to a microSD card using two of sparkfun's logic level changers: http://www.sparkfun.com/products/8745

I've got them set up like this:

Please excuse the horrid circuit diagram.

I've eliminated most of the obvious failure modes; drawing too much power from the arduino's 3.3v (powered it independantly from a 3.3v rail on an ATX PSU), pins plugged into the wrong place (checked four or five times) and basic electrical faults (half an hour with a multimeter). I've tried two different microSD cards that have been independantly verified as being A-OK, neither are kingston branded, and both were FAT32. I'm connecting to the microSD card via an SD-to-microSD adaptor. The adaptor works, I've measured all connections from the pads on the card.

I'm using the bog-standard SD card test sketch that comes with arduino 22. I'm using a 2560, the uno mega.

In general resistor level shifters are not recommended for use with SD cards. The SD spec requires a maximum rise time of 10 ns for SPI signals. Resistor level shifters often produce sort of a sawtooth SPI signal.

In general resistor level shifters are not recommended for use with SD cards. The SD spec requires a maximum rise time of 10 ns for SPI signals. Resistor level shifters often produce sort of a sawtooth SPI signal.

My solution is to create my own stripduino or stripboard based arduino, basically just a atmega328p and the oscillator at 16mhz together with a 3.3v voltage regulator. The AVR used in the arduino can be safely run at 16mhz at 3.3v, and then you can directly interface it to the 3.3v hardware needed thus avoiding all of this resistor and IC based level conversion hassle.

If you must persist with a 5v arduino or avr, then i reccommend the 74lcx245, it is a 8bit level shifter IC but its a SOP part so the pins are far nearer than a DIP product.