First of allaall, use 3,3v, you nerd alogic level convert.3 V. You need a logic-level converter.
Then you have to understand spiSPI is not the main protocol used by SD cards, and that arduinoArduino should use SDSC to be sure, as some library waslibraries are SDSC only.
Then you may have a HWhardware problem: " SDHC cards have a 3.3 V bus so most Adruino shields, like the Wave Shield, use a resistor voltage divider to shift bus levels from 5V to 3.3V. These voltage dividers can not meet the 10 ns rise time for most SDHC cards. " from https://forums.adafruit.com/viewtopic.php?f=31&t=8738(from FAT32/SDHC library for Wave and other shields):
SDHC cards have a 3.3 V bus so most Adruino shields, like the Wave Shield, use a resistor voltage divider to shift bus levels from 5 V to 3.3 V. These voltage dividers can not meet the 10 ns rise time for most SDHC cards."
Also using an external power source MAYmay solve your trouble.