www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TI Example von SD Card Anbindung an MSP430 fehlerhaft?


Autor: reflection (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Salu zusammen

Habe ne Frage zu slaa281a. Kann es sein das die da SIMO und SOMI 
vertauscht haben, oder stehe ich jetzt da voll auf der Leitung?

Ach die Card Detection auf Pin6 ist mir schleierhaft. In allen andern 
Manuals steht das Pin6 GND ist. Was stimmt den nu?

Versuche den Code slaa281a auf meinen MSP zu laden. Hat das schon jemand 
geschafft? Muss ich da nur die Anschlüsse richtig definieren und es 
läuft? Habe hier eine neue 512MB SanDisk Karte liegen, muss ich die 
Formatieren (Fat16) oder ist die bereits richtig so wie sie ausgeliefert 
wird?

Danke schonmal im Voraus für die Mühe

Gruss reflection

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin reflection,

ohne jetzt das ganze PDF studiert zu haben, scheint es mir auch so, als 
hätten die Autoren Miso und Mosi vertauscht. DO (=Data out) von der MMC 
sollte logischerweise an MISO/SOMI (Master in, slave Out), da die MMC 
Slave ist und der Mikrocontroller Master.

Zur Card Detection kann ich Dir leider nichts sagen. Ich kenne sowas 
bisher nur als zusätzliche Pins vom Sockel, die Dir sagen, ob rein 
mechanisch eine Karte im Sockel sitzt oder nicht. Einen Pin von der MMC 
habe ich dafür noch nie benutzt.

Mit der Software hast Du nur Funktionen, um einen Sektor von der Karte 
zu lesen oder zu schreiben. Soweit ich das sehe, sind dort keine 
Funktionen dabei, die etwas mit einem Dateisystem (wie FAT16, etc). zu 
tun haben. Von daher kannst Du deine neue Karte direkt verwenden - egal 
was drauf ist. Du musst halt selbst per Software schauen, wie Du die 
Daten speicherst und ggf. selbst Routinen zum Schreiben/Lesen des 
Dateisystems implementieren.

Bye
  Daniel

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal für die Antwort. Das Programm von TI stimmt mit der 
Belegung die sie im Manual angeben überein. Komisch ist, das ich diverse 
Beiträge gefunden habe wo es anscheinend läuft. Frage ist halt nur ob 
sie auch die Zuordnung geändert haben oder nicht.

Das mit dem FAT ist mir klar. Habe eben noch einen anderen Code für 
MSP430 gefunden bei dem ein FAT mit dabei ist. Muss sagen das ganze ist 
ziemlich komlex für mich. Muss mich da glaube ich länger mit 
auseinandersetzen. Vielleicht schreib ich auch gleich meine eigenen 
Routinen. Wird zwar ewig dauern, aber dafür lerne ich auch wirklich was

Gruss reflection

PS: Hat jemand ein funktionierendes Beispiel welches ich als Grundlage 
verwenden dürfte? Bei dem TI Zeugs weiss ich wieder nich ob es am Prog 
oder an der HW liegt :o(

Autor: Sebastian K. (albatros82)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Frage habe ich mir auch schonmal gestellt..

Beitrag "APP Note TI. MSP430 MMC Card"

Inzwischen weiß ich das es tatsächlich so ist. MOSI und SOMI sind 
vertauscht. Nach meinen Unterlagen ist Pin 6 GND. Ich kann mir 
vorstellen das man pin 6 einfach abfragt ob er auf 0 liegt. Dann ist 
eine karte da. Vieleicht sollte man die leitung noch mit einem Pullup 
versehen das sie auch sicher auf 1 ist wenn keine Karte drinsteckt.
Das ist der Code von Ti zu dem Thema..
char mmc_ping(void)
{
  if (!(P5IN & 0x01))
    return (MMC_SUCCESS);
  else
    return (MMC_INIT_ERROR);
}

Den Code habe ich erfolgreich auf einen MSP4301611 gespielt und 
getestet. Schreiben und Lesen läuft Einwandfrei. (20ms für 512Byte)

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, ok, vielen Dank. Dann werde ich die Card Detection mal drin lassen 
(habe den Pin 6 ja direkt auf Masse gelegt). Mein SD-Sockel hat eben 
einen extra Pin für die Abfrage ob eine Karte drin ist oder nicht.
Ich schreibe ja mit diesem Prog ein Array von 512 Stellen an eine 
bestimmte pos. Muss ich nun selber dafür sorgen das er den nächsten 
Block bei der nächsten Adresse schreibt oder macht das das Dingens 
selber? Sorry für die blöde Frage, aber ich kappier das Prog einfach 
nicht...

Gruss

Autor: Sebastian K. (albatros82)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist garnicht so schwer. Da gibt es einen wunderbaren define.
Also von vorne. Bei mir sieht das so aus:
        //SD Karte
        //SD KArte initialisieren
        initMMC();        
        //Kartengröße auslesen
        mmcCardSize = MMC_ReadCardSize();
        //Maximale anzahl an buffern berechen
        mmcMaxSector = mmcCardSize / 512;

So jetzt kenne ich die MAximale Anzahl an 512 byte Blöcken die auf die 
Karte passt. Jetzt darf geschrieben werden.
//MMC Write buffer
unsigned char mmcbuffer1[512];
//schreiben
mmcWriteSector(mmcSector,mmcbuffer1);
//lesen
mmcReadSector(mmcSector,mmcbuffer1); 

Den Sektor sollte man natürlich nach jedem schreiben erhöhen, sonst 
überschreibt man ja immer seine Daten.

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.