MMC/SD - Ansteuerung

Gast #319850
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren