mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430: Kommunikation mit MMC funktioniert nicht richtig :-(


Autor: Rolf Freitag (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe nun alle Funktionen und Defines nach der 
MultiMediaCard-Spezifikation von SanDisk erstellt, die MMC-FAQ 
durchgelesen und auch mit einem Oszi überprüft, dass die Signale zur MMC 
genau den Timing-Diagrammen von SanDisk entsprechen, aber es 
funktioniert immer noch nicht richtig :-(
Der Stand (Anhang, da steht auch die Verdrahtung in mmc.h) ist 
folgender: Das Lesen der Register funktioniert meistens, das Lesen der 
Daten meist nur beim ersten Mal,
das Schreiben (Daten/Register) sehr selten, Initialisieren und setzen 
der Blocklaenge fast immer.

Ich habe so ziemlich alles ausprobiert, also z. B. CS ständig auf low, 
Frequenz geändert, Betrieb mit/ohne Quarz usw. aber das bringt 
bestenfalls keine Verschlechterung, obwohl der MSP430F149 mit der MMC 
mittels SPI kommuniziert und es deshalb zuverlässig sein sollte.
Mit dem Oszi sehe ich aber, dass die Karte meist keine Daten liefert.

Woran kann es liegen dass es nicht funktioniert?

Autor: Klaus Sperlich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rolf,
schwer zu sagen, woran es liegt. Bei vielen Entwicklungen hat sich oft 
das unscheinbarste als Problemfall herausgestellt: die 
Spannungsversorgung.
Ein Elko (1o µF + 100nF über die Spannungsversorgung) wirkt oft Wunder.
probiers einfach mal...

Autor: Lanius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab zur Zeit auch Probleme mit einem F149, läuft nur wenn er will...
Resetbeschaltung, Quartz alles probiert, ich finde den Fehler nicht, 
entweder er läuft und alles funktioniert, oder er läuft nicht und 
nichtmal Reset hilft....
Nach ein paar Versuchen geht es dann einfach wieder grübel

Autor: Rolf Freitag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Spannungsversorgung kann es nicht sein, denn direkt neben dem 
MC sind 100 nF keram. + 1000 uF Elko und mit dem Oszilloskop habe ich 
auch die Versorgungsspannung der MMC überprüft.

Autor: Klaus Sperlich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, wollte nicht schlauer sein als der Entwickler selber.
Habe aber oft schon solche Fälle erlebt.
Weiterhin viel Erfolg!

Autor: Jochen Albrecht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rolf,

ich habe ein ähnliches Problem mit der MMC Karte:

Das beschreiben funktioniert bei mir einwandfrei, das Lesen der Register 
auch, aber das Lesen der Daten funktioniert überhaupt nicht.

Bei der Überprüfung mit dem Oszi sehe ich eindeutig meine gesendeten 
Befehle, z.B. SPDR = 0x4A für das Auslesen des CID
Registers, aber wenn ich einen Lese Befehl eingebe, z.B. SPDR = 0x52 für 
Multiple Block Read, dann kommen keine Daten, sondern allenfalls eine 
0x04. Dies steht laut Datenblatt für einen Illegal Command.

Irgendwie erkennt er den Lese-Befehl nicht.

Hast Du das Problem schon gelöst ??

Gruß Jochen

Autor: Rolf Freitag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe bei TI nachgefragt und nun kümmert sich dort jemand darum. 
Es wird dann eine Release Note o. Ä. geben.

Übrigens zeigen die Karten nach einigem Debugen I/O-Errors, obwohl nach 
der Spezifikation ungültige Befehle schlimmstenfalls eine einmalige 
Fehlermeldung produzieren dürften. Wie ich feststellen musste, ist das 
nicht das einzige, was nicht der Beschreibung von Sandisk entspricht 
(auch bei Karten von Sandisk).

Autor: Jochen Albrecht (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Mit der Beschreibung hast Du recht. Es sind sehr viele Fehler darin 
enthalten. Hast Du eine Ahnung ob es irgendwo Applicationen mit C-Code 
gibt ? Es muß doch schon irgendjemand gelungen sein, Daten aus MMC 
Karten zu lesen ! ;-))

Ich hab Dir mal den Code zum Beschreiben der Karte angehängt.
Dies sind aber nur die 2 Funktionen zum initialisieren und dann der 
CMD25.

Vielleicht hilft es Dir weiter.

Gruß Jochen

Autor: Rolf Freitag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha, danke.
Also ich habe C-Code u. Hardware-Pläne gefunden im "Final Report CS-401 
Solid State MP3 Player"; das müsste man mit Google oder Metager schnell 
finden. Mit pdf2text kann man den Code extrahieren.
Es ist zwar nicht jede einzelne verwendete Funktion dokumentiert, aber 
der Name sagt wohl aus, wofür die jeweils sind.

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

Bewertung
0 lesenswert
nicht lesenswert
Das Lesen funktioniert bei mir einwandfrei (32MB-Karte von Infineon).

void mmc_read_block(addr32_t block)
{
  SPI_WRITE(0x40 + MMC_READ_SINGLE_BLOCK);
  SPI_WRITE(block.c[3]);
  SPI_WRITE(block.c[2]);
  SPI_WRITE(block.c[1]);
  SPI_WRITE(block.c[0]);
  SPI_WRITE(0x00);

  mmc_wait_response(0x00);
  mmc_wait_response(0xFE);

  // hier kommen die Daten

}

Autor: Rolf Freitag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, bei mir funktioniert es (der gleich Code) fast, d. h. response 0x00 
und 0xfe kommen wie auch die Daten, aber mir ist aufgefallen, dass die 
letzten Bytes, also Nr. 7 bzw. 15 bzw. 512 gelegentlich nicht stimmen, 
weil die sich ändern (trotz korrektem response der Karte)! Manchmal ist 
das in nur 1% der Fälle so, obwohl das Initialisieren problemlos 
funktioniert.
Mit Fehlerkorrektur könnte man das beseitigen, aber ohne auch nur ein 
Bit schreiben zu können nützt mir das nichts.
Also ich bin da erstmal fertig und hoffe, dass bei TI herausgefunden 
wird woran es liegt.

Vielleicht ist es ein Bug im UART1 oder im IAR-Compiler; keine Ahnung.

Autor: Rolf Freitag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Korrektur: Ich meine mit dem letzten der letzten Bytes natürlich Byte 
511 statt 512.

@Jochen:
Für welchen Prozessor und welchen Compiler ist der Code?
SPCR usw. kenne ich nämlich nicht.

Autor: Jochen Albrecht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist für einen Atmega128 und IAR Compiler.

Gruß  Jochen

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.