Forum: Mikrocontroller und Digitale Elektronik SD-Card


von Ralf Kummetat (Gast)


Lesenswert?

Hi,
für Anbindung einer SD-Card (SPI u. ATmega16) suche ein Datenblatt über 
die Software-Ansteuerung, also der Befehle usw. Leider bin ich nirgends 
fündig geworden. Für Tips wäre ich sehr dankbar.
Gruß R
Ralf

von Wunsch Volker (Gast)


Lesenswert?

Hallo Ralf,

Ich bin selber gerade dabei eine MMC (der vorgänger der SD-Card) an 
einen At90S8535 anzubinden. ich hab dazu auch erst ein wenig suchen 
müssen, aber bei Hitach und Sandisk bin ich fündig geworden. Bei Hitachi 
hab ich sehr viele infos wie z.B. die Spezifikationen für den 
MMC-Standard gefunden. Sandisk dagegen hat sehr aktuelle Dokumentationen 
zu ihren aktuellen Produkten sowie sehr viele technische Informationen 
und Referenzen. Hier findet man auch ein Komplettes Beispiel für einen 
Voice-Recorder incl, Code-Beispiel. Ich könnte mir vorstellen, dass hier 
auch infos über die SD-Card zu  finden sind.

Zur zeit habe ich das Problem der CRC-Berechnung (Contious Redundansity 
Check, das ich noch nicht gelöst habe, daher dies für mich noch völliges 
Neuland ist. Ich vermate, dass bei der SD-Card ebenfalls ein 
CRC-Code-Erstellt werden muss, wenn ein Befehl an die SD-Karte abgesetzt 
wird. Wenn du da vielleicht Ahnung hast, wäre ich sehr dankbar für eine 
kleine Info bzw. Hilfestellung, wie ich diese Berechnung in C zu 
programmieren habe.

Wenn dir die Unterlagen über die MMC etwas weiterhelfen, dann kann ich 
dir diese per E-Mail zukommen lassen.

Ich hoffe, dass ich dir wenigstens etwas weiterhelfen konnte.

Gruß Volker

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wenn die MMC im SPI-Mode angesteuert wird, dann ist kein CRC nötig (nur 
beim ersten Befehl zur Umstellung in SPI Mode).

von Wunsch Volker (Gast)


Lesenswert?

Danke Andreas,

hab's jetzt auch in der Spec gefunden.

Wenn ich das richtig übersetzt habe, ist nach dem initialisieren der MMC 
in den SPI-Modus der CRC ausgeschaltet und kann optional über Command_59 
aktiviert werden.

Dann werd ich den CRC für Command_0 jetzt mal von Hand ausrechnen, wie's 
hier in der Spec. gezeigt ist und werd's gleich mal ausprobieren...

Gruß Volker

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Kannst du dir sparen, cmd0 sieht so aus:
{0x40,0x00,0x00,0x00,0x00,0x95}

von Wunsch Volker (Gast)


Lesenswert?

Habs gerade getestet und bin nach dem konfigurieren der Karte jetzt 
tatsächlich in den ersten Datenblöcken auf die HEX-Daten gestoßen, die 
ich vor ein paar Tagen über den PC auf die Karte geschrieben habe.

Ich glaub jetzt bin ich schon einmal ein paar Schritte weiter.

Danke für deine Hilfe !!!!

Gruß Volker

von Max (Gast)


Lesenswert?

Wie funkioniert denn die Anbindung an den SPI-Bus?
Die MMC's können ja maximal mit 3,6 V betrieben werden.
Da kann man ja den 5V Spi Bus nicht einfach dranhängen, oder gelten die 
3,6 V nur für die Versorgung und nicht für die SPI Pins?

Danke
Max

von Wunsch Volker (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Max,

Die Pegel der Steuersignale dürfen laut den Specifikationen nicht größer 
als die Betriebsspannung der MMC sein. Du mußt also die Pegel anpassen. 
Wenn das gerät Batteriebetrieben seien soll und du enorm viel Wert legst 
auf's Energiesparen, dann lohnt es sich sowiso meist mit dem ganzen 
Kontroller auf 3,3 V Herunterzugehen. In meinem Fall musste ich da dann 
zwar noch mein LCD auf 3.3V umbauen aber das ist überhaupt gar kein 
Problem gewesen. Wenn du allerdings bei 5V für den Mikrokontroller 
bleiben möchtest, dann kannst du die Pegel, wie es z.B. von Sandisk 
vorgeschlagen wird, einfach mit zwei Transistoren Anpassen. Ich häng die 
Seite einfach als PDF an.

Hoffe dir geholfen zu haben. Wenn noch fragen bestehen einfach im Forum, 
Mailen oder so...

Gruß Volker

von Reiner (Gast)


Lesenswert?

@Max
Du kannst über einen 74HC125 gehen. Der ist 5V tolerant und kann mit 3V3 
versogt werden. Hab ich selbst schon mit einem M16C80 gemacht. Zar kann 
der M16C "nur" 10MHz auf der SPI, aber ist ja auch ganz nett.

Reiner

von Reiner (Gast)


Lesenswert?

Mir fiel gerade ein es war ein 74LVC125, kein HC125
Reiner

von Wolfram (Gast)


Lesenswert?

Hallo Volkmar

mit was fuer MMC karten arbeitest du?
Ich habe 2 (16MB und 32MB von Infineon) von der 16Mb Karte kann ich ohne 
weiteres Lesen aber die 32MB Karte macht nciht mal den Init CMD1 (Sie 
meldet dan sowas wie CRC Error und ungueltiges Kommando).
Bei Sandisk gibt es eine Beschreibung zur Implementation im 68HC11 die 
ist z.T. besser als die Spec. hat das Problem aber auch nicht behoben.
Die CRC Berechnung wirst du beim Schreiben brauchen da so der Datenblock 
gesichert ist.In der Spec gibt es ein Bild zur Berechnung den Datenblock 
einfach bitweise durchschieben und
nach jedem Schritt OR an den angegebenen Stellen.
Noch ein Tip loesche auf einer MMC niemals den 0. Sektor dann kommen die 
ueblichen Schreiber damit nicht mehr zurecht da sie
die Groesse aus diesem Sektor bestimmen.

CU Wolfram

von nobody0 (Gast)


Lesenswert?

Mal eine Frage: Was kann denn die SD-Card, was die MMC nicht kann und 
sind die beiden Pin-kompatibel?

von Volker (Gast)


Lesenswert?

Hallo Wolfram,

Ich benutze zur zeit nur eine 32MB karte von Sandisk (Hitachi-Typ 
HB28xxxxMM1). Sie arbeitet noch nach dem MMC-Standard V2.11. Ansonsten 
habe ich leider noch keine weiteren Erfahrungen mit anderen Karten. 
Werde es aber in den nächsten Tagen auch einmal mit einer Anderen Karte 
testen, wenn ich noch eine organisiert bekomme und werde dir dann noch 
einmal berichten.

von Volker (Gast)


Lesenswert?

Hallo Rolf,

Pinkompatibel sind die Karten schon einmal. Es gibt aber gerade bei den 
SD-Karten sogenannte Highspeed-Versionen, die soviel ich weis entweder 
1, 3 oder 7 weitere Datenleitungen besitzen. Sie lassen sich aber 
trotzdem mit der Standardbelegung im 1 Bit SPI-Modus betreiben.

Bei den SD-Karten handelt es sich so viel ich weis mehr oder weniger um 
eine mit einem Security-Kontroller und einem Schlüssel-Speicher 
erweiterte MMC. Dies soll z.B. dazu genutzt werden, dass die Daten auf 
der Karte nur noch von Lesegeräten mit gültigem Schlüssel gelesen werden 
können.
Ich hab mich allerdings noch gar nicht weiter mit SD-Karten beschäftigt, 
sodass ich dir leider nichts genaueres sagen kann.

CU Volker

von wolfram (Gast)


Lesenswert?

Hallo Volkmar
Woher kennst du so genau den Kartentyp(Hitachi...) und das Protokoll 
kann man das irgendwie herausbekommen?

CU Wolfram

von nobody0 (Gast)


Lesenswert?

Aha. Mir ist aufgefallen, dass die Kartenleser für MMC auch für SD und 
umgekehrt sind und dass die SD der Nachfolger der MMC sein soll, aber 
bisher habe ich genaueres nur zur MMC gefunden.
Interessant wäre das zum kopierschützen von Daten, aber weil der 
Microcontroller an die Daten kommen muss, kann man das letztlich immer 
umgehen (ausser die Karte ist niemals lesbar, aber dann ist sie 
unbrauchbar).

von Volker (Gast)


Lesenswert?

Hallo Wolfram

Übrigens heise ich Volker und nicht Volkmar. Aber nichts für ungut.

Der Kartentyp steht hinten auf der Karte und die Informationen dazu hab 
ich mir dann vom Hitachi-Server gezogen.

Gruß Volker

von Volker (Gast)


Lesenswert?

Hallo Rolf,

Hab da schon einmal eine Seite gehabt, wo das mit der SD-Card und ihren 
Anwendungen sowie dem Kopierschutz ganz gut erklärt war. Hoffe, du 
kannst gut Englisch.

http://europe.sdcard.com/Consumer/page.asp

Gruß Volker

von Volker (Gast)


Lesenswert?

Achso, hab ich gerade Vergessen.

Die Sparte "What is SD" solltest du dir angucken.

von nobody0 (Gast)


Lesenswert?

Aha, aber damit ist die Karte dann an ein Gerät gebunden bzw. an den 
Schlüssel davon und den muss der Hersteller dann im Einzelfall kennen.
Und weil mit dem richtigen Schlüssel der Inhalt ausgelesen werden kann, 
kann der letztlich immer kopiert werden.

Das ist letztlich so wie der lock der MMC, der die Karte komplett 
sperrt, wenn nicht ein korrekter 128 Bit-Schlüssel angegeben wird; also 
ich sehe da keinen Vorteil der SD.

von Volker (Gast)


Lesenswert?

Tja, ich auch nicht

von Andreas Schildendorfer (Gast)


Lesenswert?

Hallo!

Hat jemand von euch einen C-Code für den SPI-MASTER zur Ansteurung?
Ich probier auch gerade meine MMC zu interfacen.
Danke im vorhinen!

mfg
Andreas

von nobody0 (Gast)


Lesenswert?

Hm, also die SD müsste halbwegs sicher sein, wenn der nötige Schlüssel 
nur verschlüsselt übertragen wird (z. B. mit der Karten-Seriennummer 
verschlüsselt) und nur die Hersteller wissen, welche Schlüssel verwendet 
werden, also andere nicht an die Schlüssel rankommen können, und zudem 
von dem Endgerät nicht alle Daten auf einmal ausgelesen werden können.

Aber vermutlich könnte das ebenso geknackt werden wie die Kryptografie 
der X-Box.

@Andreas Schildendorfer:
Downloade mal die Beispiele vom Hersteller und durchsuche die mal nach 
SPI. Die entsprechenden Usergroups müssten auch helfen können.

von Volker (Gast)


Lesenswert?

Naja, ich beschäftige mich nicht weiter mit SD-Karten, daher ich nicht 
auf irgendwelche Datensicherheiten angewiesen bin. Hab nur einen großen, 
einfach anzuschliesenden und billigen Speicher für ein kleines Projekt 
gesucht. Da hatte ich die idee, MMC's zu benutzen, daher einem z.B. die 
16 MB Karten ja überall hinterhergeworfen werden. Beispielsweise mit 
Kameras und so, wo sie aufgrund zu geringer Kapazität meistens durch die 
User durch 64MB, 128MB oder größer audgetauscht werden.

von nobody0 (Gast)


Lesenswert?

Ja, ich bleibe erstmal bei der MMC, auch weil die SD-Card 2 Pins mehr 
hat und die Geschwindigkeit der MMC völlig ausreicht.
Zudem konnte ich zu der SD-Card fast nichts finden. Sowas wie ein 
Produkt Manual gibt's anscheinend nicht online und ob man die SD-Card so 
wie die MMC im SPI-Modus ansteuern kann, war auch nicht herauszufinden.

von Andreas S. (andreas) (Admin) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier mal ein kleines Beispiel in C (mspgcc), das die CSD-Daten ausliest. 
Funktioniert soweit, ist aber nicht wirklich fertig da mir leider meine 
MMC abgeraucht ist.

von Andreas Schildendorfer (Gast)


Lesenswert?

Ich habs jetzt geschafft die MMC mit CMD0 und 1 zu starten und das CSD 
und CSI Register auszulesen. Ich krieg da viele Daten die eigentlich mit 
den Spez. der Hersteller übereinstommen sollen!? Aber das einzige das 
ich identifizieren kann ist der Chip-typ: "SDMB-3222" - das steht als 
ASCII im Register aber der Rest lässt sich leider nicht zuordnen.
Es ist auch komisch ?? das ich beim CMD0 und 1 Antworten erhalte 
(InIdleState usw...) aber beim Register-Lese-Befehl krieg ich keine 
Antwort aber dafür die Daten.
Bin ein bisschen verwirrt. Vielleicht habt ihr schon bessere Erfahrungen 
gemacht??

bis dann Andreas

von Marco (Gast)


Lesenswert?

Hallo,

für meine Diplomarbeit möchte ich die MMC oder SD als Massenspeicher für 
einen Datenlogger benutzen. Kann mir mal jemand sagen, wo es die 
Spezifikation für MMC oder SD gibt. Ich hab bis jetzt nur "summarized" 
Versionen gefunden, in denen nichts über die Kommandos aufgeführt ist.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?


von Marco (Gast)


Lesenswert?

Tausend Dank, euer Forum ist besser als jeder Professor

von Volker (Gast)


Lesenswert?

Das kann ich bestätigen, Marco

von Edi (Gast)


Lesenswert?

Hi Leute,
endlich mal etwas über SD-Card´s :) . Ich habe folgendes "Problem". Vor 
kurzem habe ich, als Newbee, mit dem MCF5206e angefangen zu arbeiten 
(Studienarbeit). Ich soll an diesen eine SD-Card anbinden, wobei mir der 
Parallelport wegen Debuggen nicht mehr zur verfügung steht. Welche 
Möglichkeiten habe ich sonst noch diese Card anzuschließen?
Einen CPLD zu benutzen wäre eine Möglichkeit, doch von (VHDL) habe ich 
noch weniger Ahnung. ;)
Ist VHDL schwer zu erlernen und wie viel Zeit in etwa braucht man dafür?
Danke.

von nobody0 (Gast)


Lesenswert?

Von Herstellern wie SanDisk bekommt man ja nicht einmal als 
registrierter Benutzer ein SD-Manual, aber über meinen Chef bekam ich 
heute dies:

SD Memory Card Specifications


                    Part 1
PHYSICAL LAYER SPECIFICATION
                Version 1.0


                 March 2000




       PROCONN
                 SD Group
  Matsushita Electric Industrial Co., Ltd. (MEI)
              SanDisk Corporation
              Toshiba Corporation


                                                    CONFIDENTIAL

L
             SD-Memory Card Specifications / Part 1. Physical Layer 
Specificati





  Revision History

  Date                          Version Changes compared to previous 
issue

  March 22th, 2000              1.0           Base version





DO NOT COPY  Copyright  2000 SD Group (MEI, Toshiba, SanDisk)




Ich darf das aber nicht weitergeben.

von Sascha Weitkunat (Gast)


Lesenswert?


von nobody0 (Gast)


Lesenswert?

Der Link ist tot (zumind. in den letzten 10 Min.) und ich hatte schon 
einige solche "gestorbene" links:


An error occured while loading http://www.sdcard.org:


Timeout on server
Timed out while waiting to connect to www.sdcard.org

von Sascha Weitkunat (Gast)


Angehängte Dateien:

Lesenswert?

Komisch, ich konnte es vorhin noch abrufen - Zur Zeit aber auch nicht.

Ich hatte es noch im Cache, nu häng ichs einfach mal an.

von Blubberblub (Gast)


Lesenswert?

Die neusten Handys besitzen auch SD-cards.....  :-)
Na seit ihr deswegen so neugirig??

von nobody0 (Gast)


Lesenswert?

Mein Chef will das wegen Datenschutz haben, weil die noch etwas mehr als 
die MMC bieten. Die SDC ist ja aus der MMC entwickelt, 
aufwärtskompatibel und praktisch genau so teuer/billig wie die MMC. 
Außerdem ist die Marktentwicklung, dass die MMC durch die SDC ersetzt 
wird, so dass es die MMC wohl nicht lange geben wird.

von Bernd (Gast)


Lesenswert?

Ich hab mal ne Grundlegende Frage zu SD-Karten und zwar ob Sd-Karten mit 
verschiedenen Betriebsspannungen gibt. Ich hab mal was gehört das es 
auch welche mit 5Volt Betriebsspannung geben soll, wer kann mir darüber 
Aufschluß geben

von Rolf Freitag (Gast)


Lesenswert?

Es gibt gewöhnliche SDCs die man z. B. bei Norma oder Conrad kaufen kann 
und Sonderformen wie z. B. eine die genau so dünn ist wie die MMC und 
eine low voltage version, die mit 1,8 V auskommt.
Ob es die Sonderformen überhaupt zu Kaufen gibt weiß ich nicht, aber ich 
habe die noch nie gesehen.
Die gewöhnlichen SDCs arbeiten nur im Bereich 2,7-3,6V.

von Volker W. (Gast)


Lesenswert?

5V Standards sind nicht in den Aktuellen Specs oder auch in den alten 
Specs enthalten ==> nicht spezifiziert ==> 5V-Cards gibts auch nicht

Alle specs die ich bis jetzt in die Finger bekommen habe sagen, wie auch 
rolf schon sagte, 2,7-3,6V allerdings können auch schon manche karten 
den 1,8V Standard auch wenn er nicht für die "normalen" Karten 
spezifiziert ist. Diese 1,8V Versionen sollten ursprünglich eine eigene 
gehäusevariante bekommen, was allerdings verworfen wurde.

von Bernd (Gast)


Lesenswert?

Vielen Dank

von Steffen (Gast)


Lesenswert?

Hall0,
bin gerade auf Eure Beiträge gestossen. Ich will eine SD Kard für nen
Datenlogger benutzen. Ich habe nach langem hin und her eine Karte zum
Reden veranlast. Die erste Karte ging nicht (von Toshiba) jetzt habe
ich eine von SanDisk, die redet mit mir. Ich betreibe sie im SPI Mode,
es gelingt mir CMD0, ACMD41(initialisierung) ,CSD auslesen, aber wenn
ich einen Datenblock auf Sektor 0 schreibe bekomme ich nach dem
Schreibbefehl als Response R1 eine 0 und sende dann 0b11111110 als
Startbyte dann 512 Datenbyte danach 0x00 0x00 als CRC (sollte im SPI ja
nicht von nöten sein??) und erwarte ein DataResponse aber die Karte
antwortet mir nicht. Was kann das sein??

von Rolf F. (Gast)


Lesenswert?

Da mußt Du im Standard nachsehen u. generell Wartezyklen einfügen.

von Johannes Klein (Gast)


Lesenswert?

Hi,

ich versuche, meine SD Karte an einem MSP430 über den SPI Bus zu
betreiben. Mit einer MMC Karte war ich erfolgreich, ich will aber auch
meine (Panasonic) SD Karte ansprechen. Mein Problem liegt in der
Initialisierung. Welches Kommando muß ich senden, um die SD Karte im
SPI Modus zu initialisieren? Zur Zeit sende ich CMD0 mit passendem CRC,
dann ACMD41, also CMD55 und dann CMD41. Dabei erhalte ich aber immer
nur 1 als Antwort.
Hat jemand schon mal eine SD Karte angesprochen und kann mir helfen?

Vielen Dank,
Johannes Klein

von Rolf F. (Gast)


Lesenswert?

Die SDC ist eine MMC mit zusätzlichen Modi; die kann mehr.
Der simple SPI-Modus ohne CRC funktioniert gleich.
Zufälligerweise habe ich für MSP430 Funktionen zum Lesen/Schreiben von
Daten u. Registern mal geschrieben (für
http://www.ergobike.de/de/zube05.html ) und könnte die für ein paar EUR
auch anbieten ...

von leif (Gast)


Lesenswert?

wo gibt's denn dafür [sd,mmc] passende 'laufwerke', also die
kontaktiereinheit? hat reichelt sowas? nixfinden

und bevor ich mich tiefer ins thema stürze: lässt sich per SPI auf
mehrere geräte an den selben strippen zugreifen?

von nobody0 (Gast)


Lesenswert?

Man kann ganz einfach eine Buchse für ein 8 1/4"-Floppy-Laufwerk
nehmen.
Die Karten haben auch ein ChipSelect.

von Johnsn (Gast)


Lesenswert?

Kann es sein, dass die SD-Karte bei einem CRC-Error gar nicht antwortet?

von Philippe (Gast)


Lesenswert?

Moin,

bin auch gerade am Basteln mit einer SD Card.
Allerdings verstehe ich die Cmd0 von Dir nicht. Wieso ist dort 0x40 an 
erster Stelle? Cmd0 ist doch 0x00, oder? Cmd1 demnach 0x01 usw.
Die mittleren 4 0x00 Einträge sind sicherlich für die 
Attribute/Parameter gedacht, oder? und 0x95 ist der CRC für die gesamte 
übermittelte Zeichenfolge, richtig?
Wäre nett, wenn jemand mal dazu Stellung nehmen könnte, wieso dort die 
0x40 zu Beginn steht und ob ich mit meinen Vermutungen richtig liege. 
Danke erstmal und beste Grüße aus dem Norden der Republik.

Ciao

Philippe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.