Forum: Mikrocontroller und Digitale Elektronik MMC/SD - Ansteuerung


von Danyo (Gast)


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

von Manfred (Gast)


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

von Andy (Gast)


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

von Danyo (Gast)


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! ;-)

von Andy (Gast)


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

von Daniel R. (daniel_r)


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...

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.