SD-Karte ohne SPI-Mode?

Hi, ich versuche gerade einen AVR mit MMC/SD-Karten zu verbinden. Geht soweit mit einer Reihe von MMC und SDs gut, nur habe ich ein paar SD-Karten gefunden (32MB von Canon), die bei der Initialisierung streiken.

Konkret sieht das so aus, dass zwar das GO_IDLE_STATE-Kommando brav mit 1 beantwortet wird, die Aktivierung des SPI-Modes mit SEND_OP_COND aber mit 5 zurückkommt. Die 4 darin heisst wohl, dass ein "Illegal Command" erkannt wurde bzw. der Switch in den SPI-Mode schief ging. Ich habe da jetzt schon alles mögliche versucht (Delays, mehr Retries, nur 125kHz SPI-Clock), aber es geht nicht. Jetzt habe ich so langsam den Verdacht, dass bei den Karten der SPI-Mode gar nicht vorhanden ist. Kann das sein?

--
         Georg Acher, acher@in.tum.de
         http://www.lrr.in.tum.de/~acher
         "Oh no, not again !" The bowl of petunias
Reply to
Georg Acher
Loading thread data ...

Georg Acher schrieb:

Ich hatte noch keine SDC bei der der SPI-Modus nicht funktioniert hätte, o.g. hab ich aber noch nicht ausprobiert.

Ich initialisiere folgendermassen, hat bis jetzt immer funktioniert:

CS disablen

2ms warten 80 Clocks senden auf Antwort 01h pollen CS enablen 2ms warten cmd0 raus auf Antwort 01h pollen bei Erfolg dummy 0ffh rausschicken

cmd1 raus auf Antwort 00h pollen bei Erfolg dummy 0ffh rausschicken

dann gehts mit cmd9 und anderem Kram halt weiter. Eventuell sind die Wartezeiten bei SD nicht notwendig und nur für MMCs noch drin, es scheint aber auch nicht zu schaden.

Jörg.

Reply to
Jörg Schneide

|> cmd1 raus |> auf Antwort 00h pollen |> bei Erfolg dummy 0ffh rausschicken

Tja, da kommt bei den Canons immer 05. Dabei ist aber auch egal, was für ein Kommando man abschickt.

Aber ich habs jetzt, das "bei Erfolg dummy" hat mich draufgebracht: Vor dem erneuten Schicken von CMD1 beim Pollen braucht es wieder die ff, auch ohne Erfolg... Nur komisch, dass das die anderen Karten nicht gejuckt hat...

--
         Georg Acher, acher@in.tum.de
         http://www.lrr.in.tum.de/~acher
         "Oh no, not again !" The bowl of petunias
Reply to
Georg Acher

Georg Acher schrieb:

Ich erinnere mich an ähnliches, ist aber zu lange her als das ich noch wüsste wo es genau gehakt hat: Ein Kartentyp den ich bis dahin noch nicht dran hatte machte mal Probleme (ich glaube "Ultron" keine Ahnung welcher Hersteller wirklich dahintersteckte), ich hab dann auch etwas gefummelt bis es lief.

Es scheint da wohl schon mal Missverständnisse zu geben wie bestimmte Dinge des Standards implementiert werden.

Ein Auszug aus einem Datenblatt: The SD Card wakes up in the SD Bus mode. It will enter SPI mode if the CS signal is asserted (negative) during the reception of the reset command (CMD0). If the card recognizes that the SD Bus mode is required it will not respond to the command and remain in the SD Bus mode. If SPI mode is required, the card will switch to SPI mode and respond with the SPI mode R1 response. The only way to return to the SD Bus mode is by power cycling the card. In SPI mode, the SD Card protocol state machine is not observed. All the SD Card commands supported in SPI mode are always available. The default command structure/protocol for SPI mode is that CRC checking is disabled. Since the card powers up in SD Bus mode, CMD0 must be followed by a valid CRC Byte (even though the command is sent using the SPI structure). Once in SPI mode, CRCs are disabled by default. CMD0 is a static command and always generates the same 7-bit CRC of 4Ah. Adding the ?1,? end bit (bit 0) to the CRC creates a CRC Byte of 95h. The following hexadecimal sequence can be used to send CMD0 in all situations for SPI mode, since the CRC Byte (although required) is ignored once in SPI mode. The entire CMD0 sequence appears as 40 00 00 00 00 95 (hexadecimal).

Insbesondere der 3. Satz macht mich stutzig weil ich bisher nicht gefunden habe welche Ursachen denn dazu führen können das die Karte meint SD-Mode wäre "required". Der Rest nur als Info.

Für den Init habe ich schon alle möglichen Beispiele gesehen, von der absoluten primitiv-Version bis zu recht komplizierten Flussdiagrammen, ich verwende eine angepasste primitive ;-)

Vorsichtig muss man bei den Antwortzeiten sein, da gibt es heftige Unterschiede von Karte zu Karte, aber ich hab auch schon Karten gehab wo das Adressabhängig war. Vermutlich internes Bankschalten oder so. Probleme damit vermute ich auch gegen Ende der Lebensdauer, wenn mal ein Sektor in einen Reserve-Sektor umgemappt werden muss. Da ich in einer Anwendung ein bestimmtes Timing nicht überschreiten darf, werden dort nur noch sündhaft teure Industrial-SD Karten verwendet, die sind flott und haben bisher keine Probleme gemacht, im Gegensatz zu dem Kram aus dem Laden.

Jörg.

Reply to
Jörg Schneide

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.