Wenn dir die Geschwindigkeit immernoch nciht reicht, dann solltest du versuchen einen Treiber zu finden oder zu schreiben, der den anderen Modus der SD-Karte, wie oben schon gesagt, verwendet. Damit ist nicht SDHC gemeint, sondern der normale 4Bit Bus, für den jede SD-Karte ausgelegt ist. SPI ist eigentlich nur für die Konfiguration gedacht und nicht für den Datentransfer. Da im Bereich der Microcontroller aber selten so hohe Datenraten in Hobbyanwendungen gebraucht werden, und die Ansteuerung schwieriger ist und mehr Pins verbraucht, hat kaum jemand damit gearbeitet. Schau mal in die Spezifikation, dieses nette 500 Seiten PDF, dass es per google gibt, dort steht das genaue Protokoll drin. Es kann sein, dass du dann jedoch auf jeden Fall blockorientiert arbeiten musst, dh 512Byte auf einmal schreiben musst. Wenn du eh soviel, oder besser 2x 512Byte über hast, macht das nichts, da du einen Block als Arbeitskopie nutzen kannst , während der andere gerade in oder von der Karte geladen wird.
Damit ist ne höhere Datenrate realisierbar, einfach weil ein Byte in 2 Takten verschoben ist, die wohl auch in Software noch etwas schneller, als das SPI gesendete Byte sein können. Dafür hast du beim SPI keinen Stress mit der Übertragung, macht ja alles das Modul, dabei kannst du auch ohne Verzögerung Interrupts ausführen.