www.mikrocontroller.net

Forum: Compiler & IDEs SDCARD Nochmal


Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Habe nun die SDCARD am Hardware SPI.

Wenn ich eine Formatierte Fat16 SDCARD einlege und das Beispiel von
Ullrich radig ausprobiere geht es auch schön er liest mir das
Rootverzeichniss und auchj die mmc.txt aus..


Nun will ich aber auch mal was schreiben und das icht unter Fat sondern
Blockweise.


char buffer[513];
for (i=0;i<512;i++)
{
buffer[i]='B';
}
buffer[512]='\0';

//0= Startadresse

Wenn ich mit mmc_write_sector(0,&buffer[0]); was schreibe kommt =0
zurück das hesit es wurde etwas geschrieben.
Er müsste jetzt 512 Byte mit B schreiben.

Nun will ich diesen Block lesen aber hier gibt sein Problem

mmc_read_sector(0,&buffer[0]);

//Routine zum lesen eines Blocks(512Byte) von der MMC/SD-Karte
U08 mmc_read_sector (U32 addr,U08 *Buffer)
//###################################################################### 
######
{
  //Commando 16 zum lesen eines Blocks von der MMC/SD - Karte

  U08 cmd[] = {0x51,0x00,0x00,0x00,0x00,0xFF};

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

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

  cmd[1] = ((addr & 0xFF000000) >>24 );
  cmd[2] = ((addr & 0x00FF0000) >>16 );
  cmd[3] = ((addr & 0x0000FF00) >>8 );
    mmc_read_block(cmd,Buffer,512);


  return(0);
}
Beim Lesen springt er
hier raus.

//###################################################################### 
######
//Routine zum lesen des CID Registers von der MMC/SD-Karte (16Bytes)
void mmc_read_block(U08 *cmd,U08 *Buffer,U16 Bytes)
//###################################################################### 
######
{



  //Sendet Commando cmd an MMC/SD-Karte

//Hier springt er raus!!!!!!!!!!!!!!!!!

  if (mmc_write_command (cmd) != 0)
      {
-->>       return;
      }

  //Wartet auf Start Byte von der MMC/SD-Karte (FEh/Start Byte)

  while (mmc_read_byte() != 0xfe){
  };

  //Lesen des Bolcks (normal 512Bytes) von MMC/SD-Karte
  for (U16 a=0;a<Bytes;a++)
    {
    *Buffer++ = mmc_read_byte();
      }

  //CRC-Byte auslesen
  mmc_read_byte();//CRC - Byte wird nicht ausgewertet
  mmc_read_byte();//CRC - Byte wird nicht ausgewertet

  //set MMC_Chip_Select to high (MMC/SD-Karte Inaktiv)
  MMC_Disable();
  return;
}


Warum dieses.

Muß man mit FAT etwa auch schreiben??????

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aslo FAT tut er lesen wenn ich mait Fat 16 formatiere und ein Ordner
anlege ließt er ihn auch.

Ist es möglich im RAW Format zu schreiben und diese dann wieder zu
lesen????

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Möglich ist es definitiv.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.