Erase Kommando MMC Karte

Gast #144221
Lesenswert?
• ▲
▼
Hallo,

ich wollte Fragen ob sich schon jemand mit dem Erase Kommando der MMC
Karte im SPI Modus beschäftigt hat und mir Infos über die Funktion
geben kann.

Ich habe Probleme bei der Definition, welchen Speicherbereich ich
löschen möchte.

Erase Groups usw.....

Danke

Wolfgang
Gast #144222
Lesenswert?
• ▲
▼
Hallo Wolfgang!

Ich habe mich mal mit dem Löschbefehl beschäftigt.
Es ist aber schon wieder lange her. Aber ich habe damals
eine Funktion programmiert, die es erlaubt, bestimmte
Speicherbereichte, die man angibt, löscht.
Man gibt hier die Start und Endadresse, des zu löschenden Bereichs an.
Hier der Code:


void sd_ende (void)
{
 sd_card_cs=1;
 spi(0xff);
}

//Sendet ein Commando an die MMC/SD-Karte
char sd_write_command (char *CMD)
{
        unsigned int a;
  char tmp = 0xff;
  unsigned int Timeout = 0;
  //sendet 8 Clock Impulse
  //sd_ende();
        //delay_ms(1);
  //sendet 6 Byte Commando
  sd_card_cs=0;

  for (a = 0;a<0x06;a++) //sendet 6 Byte Commando zur MMC/SD-Karte
    {
    spi(*CMD++);
    }

  while (tmp == 0xff)  //Wartet auf ein gültige Antwort von der
MMC/SD-Karte
    {
    tmp = spi(0xFF);
    Timeout++;
    if (Timeout > 10)
      {
      #ifdef sd_debug
      printf ("Keine Antwort nach dem Senden eines Kommandos\r\n");
      #endif
      break; //Abbruch da die MMC/SD-Karte nicht Antwortet
      }
    }
  return(tmp);
}

//Routine zum Löschen der SD-Karte(SPI-MODE)
char sd_loeschen (unsigned long addrs,unsigned long addrz)
{
  char tmp;
  unsigned int a;

  char CMD32[] = {0x60,0x00,0x00,0x00,0x00,0xFF};
  char CMD33[] = {0x61,0x00,0x00,0x00,0x00,0xFF};
  char CMD38[] = {0x66,0x00,0x00,0x00,0x00,0xFF};

  /*Die Adressierung der MMC/SD-Karte wird in Bytes angegeben,
    addr wird von Blocks auf Bytes umgerechnet danach werden
    diese in das Commando eingefügt*/

       addrs = addrs << 9; //addr = addr * 512
       addrz = addrz << 9; //addr = addr * 512


  CMD32[1] = ((addrs & 0xFF000000) >>24 );
  CMD32[2] = ((addrs & 0x00FF0000) >>16 );
  CMD32[3] = ((addrs & 0x0000FF00) >>8 );
  CMD33[1] = ((addrz & 0xFF000000) >>24 );
  CMD33[2] = ((addrz & 0x00FF0000) >>16 );
  CMD33[3] = ((addrz & 0x0000FF00) >>8 );

  //Sendet Commando an MMC/SD-Karte
         if ((tmp=sd_write_command (CMD32)) != 0)
       {
         sd_ende();
          //printf("cmd32: %d\r\n",tmp);
      return(tmp);
        }
        sd_ende();
  if ((tmp=sd_write_command (CMD33)) != 0)
        {
          sd_ende();
            //printf("cmd33: %d\r\n",tmp);
      return(tmp);
            }
        sd_ende();
         if ((tmp=sd_write_command (CMD38)) != 0)
         {
      sd_ende();
        //printf("cmd38: %d\r\n",tmp);
      return(tmp);
          }

  while(spi(0xff)==0);
  sd_ende();
  return(0);
}

Tschüss

Max
Gast #144223
Lesenswert?
• ▲
▼
Hallo Max,

danke für Deine Antwort. Leider hilft sie mir nicht weiter. Du
verwendest in Deinen Sourcen die Kommandos CMD32 und CMD33. Diese
scheinen aber von den MMC Karten nicht bzw. nicht mehr unterstützt zu
werden.

Bei CMD32 zum Beispiel antwortet die Karte mit R1 = 0x04, Illegal
Command.

Die einzigen Kommandos die akzeptiert werden sind CMD35, CMD36 und
CMD38. Allerdings kann ich als Adressen in den Kommandos angeben was
ich will, es wird immer derselbe Bereich gelöscht, bzw. nicht
gelöscht.

Mittlerweile habe ich auch schon Karten unterschiedlichster Hersteller
versucht.... Überall dasselbe Ergebnis.

Gruß

Wolfgang

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.