www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MMC/SD - Ansteuerung


Autor: Danyo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Bin gerade dabei, über die SPI eines ATmega32 eine SD-Karte
anzusteuern.  Dabei verwende ich teilweise den Programmcode von Ulrich
Radig. Die Routine für das Auslesen eines Sektors versteh ich jedoch
nicht ganz:

unsigned char mmc_read_sector (unsigned long addr,unsigned char*
Buffer)
{
  ...

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

  CMD[1] = ((addr & 0xFF000000) >>24 );
  CMD[2] = ((addr & 0x00FF0000) >>16 );
  CMD[3] = ((addr & 0x0000FF00) >>8 );

        ...
}

Warum wird denn die Adresse um 9 nach links geshiftet (bzw. mit 512
multipliziert) und was ist mit dem niederwertigstem, also dem 4.Byte
(CMD[4]) der Adresse? Wieso wird das nicht beachtet?
Wäre sehr dankbar für jede hilfreiche Antwort!

Gruß Danyo

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich vermute mal, daß es sich um die Sektorgröße von 512 Byte handelt.
Weil CMD die einzelnen Bytes der Adresse enthält und CMD[4] das
niederwertigste Byte enthält und nicht mehr verschoben werden braucht.

Gruß

Manfred

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

das ist ganz einfach, im SPI-Mode kannst du jeweils Sektorweise die
Karte lesen oder beschreiben, d.h. deine Adresse vom Sektor ist immer
das Vielfache von 512(Sektor 0 beginnt bei 0, Sektor 1 an 512 usw.)
Und damit erklärt sich auch deine zweiten Frage.

Andy

Autor: Danyo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso & vielen Dank erstmal! Ich hab nämlich ohne die Zeile (addr = addr
<< 9;) immer nur den MBR jedoch nicht den 1.Partition Entry lesen
können, weil ich dachte, dass der Abstand an 0x1C6 in Bytes anstatt
Sektoren angegeben wird. Naja, wer lesen kann ist klar im Vorteil! ;-)

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, ich muss auch sagen, dass die Doku an dieser Stelle aber auch an
vielen anderen, nicht ganz klar ist. Sind zwar knapp 100 Seiten, aber
viel nutzloses Gelaber.

Andy

Autor: Daniel R. (daniel_r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andy:
Ja, das ist richtig. Ohne Hilfe ist es sehr sehr schwer, eine SD/MMC
anzusteuern. Vor allem auch, weil viele Abläufe zu wenig beschrieben
werden. Aber zum Glück gibts ja Ulrich Radig, von dem man sich as ein
oder andere abschauen kann...

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.