Gast
#5318553
Hallo, ich versuche gerade, eine SD-Karte über SPI einzubinden. Das funktioniert ganz gut, aber ich wundere mich über zwei Warteschleifen. Die offizielle Spezifikation der SD Association gibt es ja zum Herunterladen[1] in etwas abgespeckter Form. Daneben habe ich diverse Projekte durchgesehen, etwa den Beispielcode von ElmChan[2] oder die Beschreibung von LuckyResistor[3]. In all diesen Quellen finde ich immer wieder zwei Warteschleifen: 1. Nach dem aktivieren des Chipselect der SD-Karte wird solange 0xFF gesendet, bis die Karte ihrerseits mit 0xFF antwortet. 2. Nach dem Senden eines Kommandos wird (maximal 10mal) 0xFF gesendet und dabei darauf gewartet, dass die Karte mit einem Byte antwortet, bei dem das oberste Bit nicht gesetzt ist. Ich habe eine Quelle von ElmChan angehangen, dort ist das die Funktion wait_ready ab Zeile 226 und in send_cmd ab Zeile 371. Wo finde ich denn dazu etwas in der SD-Spezifikation?! Es gibt dort zwar einen Abschnitt zum Antwort-Typ "R1b", in dem etwas von einem Busy-Signal geschrieben wird:
1 | |
2 | |
3 | |
Aber das steht ja im Gegensatz zur Warteschleife Nr. 2, denn dort wird ja gerade gewartet, bis nicht mehr alle Bits gesetzt sind. Zur Warteschleife Nr. 1 nach dem Chipselect finde ich garnichts in der Spezifikation. Das ist irgendwie unbefriedigend. Was übersehe ich denn da? Danke und Grüße, N [1] https://www.sdcard.org/downloads/pls/ [2] http://elm-chan.org/fsw/ff/ffsample.zip [3] https://luckyresistor.me/cat-protector/software/sdcard-2/