I've doubled check the connections...
You have drawn the symbol in a way that does not correspond to the physical layout of the package pins. That's OK, in general, but if you look at the symbols on Page 21 of the data sheet that you referenced, and if you read (really read
) the explanations there, the functionality is easier to understand. (It's also easier to keep track of the connections if you are wiring by hand.)
Pin numbers go down
from 1 through 10 on one side of the package and from 11 through 20 up
the other side of the package, and the pins on the package are conveniently arranged for "flow-through" PC layout.
Anyhow, no matter how you draw the symbol...
Pin 1 on the low-voltage side corresponds to pin 20 on the high-voltage side
Other signal pins correspond as follows:
3 <--> 18
4 <--> 17
If Pin 20 is the "SS" signal from the CPU, then Pin 1 should be connected to "CS" on the SD
If Pin 18 is " MOSI" from, the CPU, then Pin 3 should be connected to "DI" on the SD.
The 3.3V DO from the SD can be connected directly to the MISO pin on the Arduino as you show, but, since you have a level shifter, why not send that signal through it as well? With a direct connection, if you accidentally enable a pull-up on the Arduino MISO, or if the pin, somehow gets configured as an output for some sketch that is not using the SD, it could apply 5 Volts to the SD pin (possibly damaging the SD). The level shifter can make sure that no more than 3.3 Volts is ever applied to the SD. Just a thought.