MMC - wie CS steuern?

Gast #833526
Lesenswert?
• ▲
▼
Hallo

So langsam sollte das Thema MMC/SD Card an SPI durch sein.
Ich hänge allerdings gerade.

Ich habe den "ELM" Code, http://elm-chan.org, verwendet.
Die entsprechende IO Library habe ich angepasst.
Ich verwende einen ARM7 (aduc7020).

So lange der Schreibpuffer nur 512 Byte groß ist, funktioniert
alles prima. So bald der Puffer 2048 Byte groß ist, wird nicht
nur eineinzelner Block sondern mehrere Blöcke auf einmal geschrieben.

Leider schlägt das senden von mehreren 512Byte Blöcken fehl.
Ich vermute, dass ich entweder Blödsinn mit der CS-Leitung mache
oder nicht lange genug auf "Busy" nach einem Datenblock warte.

Ich habe zur CS Leitung keine genauen Infos gefunden. Auf den
meisten Diagrammen sind nur CLK, DI und DO abgebildet.

Ein Tranfser sieht in meinem Code folgendermaßen aus:

Zu erst wird CD deaktiviert, danach aktiviert (low=active)
Danach wird der CMD-Code aus 6 Bytes gesendet, die Antwort
empfangen usw.

Nach dem CMD-Code bleibt CS aktiv.

Bei einigen CMD-Codes wird danach gelesen oder geschrieben.

So bald der/die Datenblock(e) gesendet/empfangen wurde(n), wird CS 
deaktiviert.

Ich vermute hier liegt auch der Fehler. Bei einem "Block Write" werden
2 CMD-Codes vor dem Datentransfer gesendet (ACMD23 und CMD25).

Ich habe die PDF von Hitachi zu MMC-Cards gelesen. Hinten sind einige 
Beispiele. Da ist aber kein Beispiel dabei, wenn 2 CMD-Codes zu 
schreiben
benötigt werden.
Ausserdem scheint nach dem Hitachi Dokument CS zwischen CMD-Code und
Datenblock zu wechseln. Nach einem anderen TimingDokument bleibt CS,
bis die Datenblöcke übertragen wurden.

Wie wird CS richtig gesetzt?

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