In an earlier circuit I showed a simple way of adding an SD card to an Arduino. That works well. Sadly because the Arduino is 5 Volts and the SD card needs 3,3 volt levels, a level adapter was used, consisting of resistors.
As said, it works well, but it is not really an elegant solution. It is better to use another chip (The 74HC125) to do the level shifting, as shown in the figure below:
To keep the circuit a bit simple, I have just drawn the buffer gates of this chip, but there are a couple of more pins that need to be connected: Pin 1,4, 7 and 10 Need to be connected to ground. Pin 14 (Vcc) needs to be connected to 3.3 V.
The reason why so many of the pins need to go to ground is because Pin 7 is the regular ground of the chip, but pin 1,4 and 10 are the negative control gates of the buffers that are used. The 74HC125 is a Quad bus buffer so you will have one buffer to spare. It might be wise to connect the input of that buffer (pin 12) and it’s negative gate (pin 13) to 3.3 V as well to avoid unpredictable behaviour.