www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MMC zeigt im SPI-Modus seltsames Verhalten


Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte eine 32 MB große MMC von Infineon mit der EFSL-Bibliothek
(http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...)
und einem AT91SAM7S64 ansteuern (Mode 0, CPOL=0, CPHA=1). Mit der
Initialisierung aus dem Beispiel bekomme ich aber von der Karte immer
0x03 statt 0x01 zurück. Da das als Statuscode keinen Sinn ergibt muss
es sich dabei um eine verunglückte 0x01 handeln. Wie das empfangene
Byte auf dem Oszi aussieht seht ihr auf dem angehängten Bild. Die Karte
ändert den Wert bei der steigenden Flanke (nicht wie im
Sandisk-Datenblatt beschrieben bei der fallenden), der ARM sampelt
ebenfalls bei der steigenden Flanke, dadurch ergibt sich vermutlich die
zusätzliche 1. Ist das ein Implementierungsfehler des Herstellers, oder
habe ich irgendwo einen Denkfehler?

Interessanterweise funktioniert die Karte einwandfrei sobald ich den
SPI-Takt auf 30 MHz erhöhe...

Andreas

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja dann versuche doch einfach mal auf der fallenden Flanke zu samplen.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht nicht, da es dann für die Übertragung in die andere Richtung
nicht mehr stimmt:

NCPHA: Clock Phase  0 = Data is changed on the leading edge of SPCK and
captured on the following edge of SPCK. 1 = Data is captured on the
leading edge of SPCK and changed on the following edge of SPCK.

Und selbst wenn es ginge hätte ich damit bestenfalls einen nicht
standardkonformen Workaround, bei meiner Frage ob ich das Verhalten
richtig interpretiert habe hilft mir das nicht weiter.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese Seite hat genauere Informationen:
http://elm-chan.org/docs/mmc/mmc_e.html

Was dort über die MMC geschrieben bestätigt meine Beobachtung:
"For SDC, the 'SPI mode 0' is defined for its SPI mode, and for MMC,
it is not the SPI timing, latch and shift operations are defined with
rise edge of SCLK, but it seems work in SPI mode 0 at SPI mode."

Ebenso hier: "I'd like to ask if the levels on the SPI data lines
chould change it's value on rising or falling edge cu'z i've seen in
the MMC datasheets that its on the falling edge but using an
oscilloscope i've found that the MMC change the level on rising
edge???"
http://forum.microchip.com/tm.aspx?m=58980

Also Latch und Shift beides mit steigender Flanke - das passt zu keinem
der 4 SPI-Modi, kein Wunder dass das so unzuverlässig funktioniert.
Fazit: MMC = Murks, ich kaufe mir eine SD-Card.

Autor: mh. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du mit Deinem Oszi schonmal direkt an der MMC gemessen? Ich hatte
ein Problem mit der Flankensteilheit, bedingt durch einen
Spannungsteiler. Siehe
<http://www.mikrocontroller.net/forum/read-1-312491.html>, mein Posting
vom 17.03.2006.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Karte haengt ohne Zwischenschaltung direkt am Controller. Das
Problem scheint tatsaechlich zu sein dass die MMC genaugenommen nicht
SPI-kompatibel ist, da der Controller nun mal genau zu dem Zeitpunkt
Daten einlesen will zu dem die MMC ihren Ausgang aendert. Somit ist es
von "Dreckeffekten" (Frequenz, Leitungslaenge) anhaengig ob es im
Einzelfall funktioniert oder nicht.

Autor: Klaus W. (Firma: privat) (texmex)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Also Latch und Shift beides mit steigender Flanke - das passt zu keinem
> der 4 SPI-Modi, kein Wunder dass das so unzuverlässig funktioniert.
> Fazit: MMC = Murks, ich kaufe mir eine SD-Card.

Gibts dazu inzwischen gesicherte Erkenntnisse?
Mir ist die JEDEC MMC Spec ehrlichgesagt in diesem Punkt auch nicht ganz 
klar. Definitiv ist es jedenfalls bei SD-Karten im default Mode (nicht 
jedoch im Standard Mode) anders. Also Setup on neg. edge und Latch on 
positive (SPI Mode 0).
Eigentlich sollte MMC und SD kompatibel sein. Warum sollte es also bei 
den MMC Karten anders sein?

viele Grüße,
Klaus

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.