mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programmierung MSP430F169 + SD-Karte


Autor: Peter L. (jotrek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

Ich arbeite gerade an einem Projekt, bei dem ein Diktiergerät entstehen 
soll. Mein Teil des Projektes befasst sich damit, den vom Mikrofon 
kommenden Datenstrom zu verarbeiten und direkt als Datei auf dem 
Flash-Speicher abzulegen (FAT32 oder FAT16 formatiert).
Ich verwende momentan die Software von TI "Code Composer Essentials v3" 
(begrenzt auf 16kB Programm Code).

Ich verwende das MSP430-169STK Starterboard. Die Übertragung soll über 
die SPI-Schnittstelle ablaufen. Da ich in dem Gebiet nicht sehr versiert 
bin, weiß ich noch nicht so recht, wie ich an die Sache rangehen soll 
und würde mich freuen, wenn mir jemand einen groben Programmablauf sagen 
könnte (Stichpunktartig). In der Art wie..

"1) Initialisieren serieller Schnittstelle
2) Initialisieren SPI
3)...."

Vielen Dank schonmal im Voraus!

mfG Peter

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch mal hier: 
http://focus.ti.com/mcu/docs/mcusupporttechdocsc.t...
Musst du nur noch FAT implementieren, aber ich schätze mal mit der 
16k-Version wird das knapp. Für die FAT kannst du ja dann irgendwas 
nehmen, was für andere  µC gemacht ist, z.B. von Holger 
Klabunde....musst halt nur die untersten Funktionen aus dem TI-Code 
nehmen.

Autor: Peter L. (jotrek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Merci für die schnelle Antwort! Werde mir beides genauer ansehen. Ist ja 
genau das, was ich brauche :)

Viele Grüße

Peter

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mein Teil des Projektes befasst sich damit, den vom Mikrofon
>kommenden Datenstrom zu verarbeiten und direkt als Datei auf dem
>Flash-Speicher abzulegen (FAT32 oder FAT16 formatiert).

Da werden dir

a) Das FAT Dateisystem
b) Die Busy Zeiten der SD Karte

einen gewaltigen Strich durch die Rechnung machen.

Dein uC hat zu wenig RAM.

Autor: Peter L. (jotrek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi nochmal,

das hört sich nun eher nicht so gut an. Ist es mit meinem Controller 
partout nicht möglich? Auch nicht mit einer anderen Art der Übertragung 
(parallel)?

Muss mich mal informieren bezüglich der RAM-Frage.... Das wäre ja nun 
sehr ärgerlich, wenn ich neue Hardware besorgen muss... Zumal meine 
Arbeit auf der Vorarbeit eines Mitstudenten basiert (jeweils 
Studienarbeiten)...

Wieviel RAM sollte der µC denn haben? Vielen Dank für den Hinweis...

Gruß

Peter

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Zumal meine Arbeit auf der Vorarbeit eines Mitstudenten basiert
>(jeweils Studienarbeiten)...

Wie hat der das gemacht? Hardware? Grobe Beschreibung reicht.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der F169 hat nur 2 kByte RAM, wenn Du mit etwas weniger Code auskommen 
kannst, dann nimm den F1611. Der ist pin- und funktionskompatibel, hat 
aber 10 kByte RAM (und dafür nur 48 statt 60 kByte ROM).

Als "Ding dazwischen" gäbe es noch den F1612, der hat 5 kByte RAM und 55 
kByte ROM.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder gleich die aktuellen MSP430F26xx nehmen, sind auch pin-kompatibel, 
bieten aber viel mehr. Beispielsweise 16MHz Takt und SPI-Takt nicht 
mindestens durch 2 geteilt.

Aber eine konstante Aufzeichnung wird schwierig, du müsstest mit einem 
RAM-Puffer die maximal auftretende Busy-Zeit der SD-Karte überbrücken 
können. Die schwankt aber sehr stark von Karte zu Karte....

Autor: Peter L. (jotrek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An Holger:

Ich benutze Das MSP430F169 Starterboard (MSP430-169STK, OLIMEX). Meine 
SD-Karte ist eine herkömmliche 2GB-Karte von Kingston. Angebunden an das 
Board wird diese über die SPI-Schnittstelle (der SD-Kartensolt wurde auf 
eine extra Platine gelötet). Die Verbindung zum PC läuft über JTAG 
(JTAG-> parallel Adapter).
Brauchst noch Informationen?

An Rufus: Danke für die Hinweise. Wie es aussieht, muss ich mir nen 
neuen Controller besorgen...

An Christian: Danke für den Hinweis. Werde das mal mit meinem Betreuer 
bei der Studienarbeit besprechen.

Vielen Dank für die zahlreichen Antworten!

Grüße

Peter

// edit

Wie finde ich am besten die Busy-Zeiten meiner SD-Karte heraus?

Autor: Peter Diener (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die busy Zeiten misst du a besten an deiner Karte, die sind von Karte zu 
Karte stark unterschiedlich. Wenn sie dir zu lang vorkommt, probier 
andere Karten -> SanDisc Ultra4 eventuell.

Ich arbeite gerade an einer FAT Implementierung auf einem MSP430.
Beachte auch, dass die Karte nur etwa 10000 Schreibzyklen aushält, das 
bedeutet, du darfst nicht bei jeder Änderung der Dateilänge die FAT neu 
schreiben, das passiert ja bei Audioaufzeichnung dauernd. Du musst die 
FAT also im RAM halten können und brauchst deswegen unbeding so viel RAM 
wie möglich. Der F1611 sollte aber ausreichen.

Ein F2617 hat 8kB und ist schneller. Beide Controller haben einen 
leistungsfähigen DMA-Controller, der dir viel Arbeit und Rechenzeit 
spart.

Schau dir den F5418 auch mal an, der hat 16 kB RAM, DMA und genug 
SPI-Ports.
Unterchätze ie Komplexität nicht, die notwendig wird, wenn dein 
AD-Wandler und die SD-Karte am gleichen Bus hängen.


Grüße,

Peter

Autor: Peter L. (jotrek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

nochmals vielen Dank für die zahlreichen Antworten und Anregungen. Nach 
Absprache mit meinem Betreuer, haben wir beschlossen, zunächst mit der 
vorhandenen Hardware (siehe oben) weiterzuarbeiten und die Qualität der 
Aufnahme herunterzuschrauben, sodass die 2 KB RAM reichen. Wenn der 
erstellte Programm-Code funktioniert, werden wir über die Anschaffung 
neuer Hardware weitersprechen und dann die Qualität hochschrauben.

Ich habe das Programm von der Seite 
http://focus.ti.com/mcu/docs/mcusupporttechdocsc.t...
als Basis genommen. Nun hänge ich aber schon an der Initialisierung 
(Funktion mmcInit()). Ist auch logisch, da ich nicht den MSP430F161 
sondern den MSP430F169 benutze. Laut Dokumentation müssen folglich diese 
Funktionen angepasst werden:
· void initSPI (void)
· char mmcInit (void)
· mmc.h file

Nun mein Problem:

initSPI finde ich nichtmal. Wo ist diese denn?

Und: Was muss denn alles in diesen o.g. Funktionen bzw. Files angepasst 
werden?

Hoffe, mir kann jemand helfen. Und sorry für diese grundlegende Frage, 
aber ich komme momentan einfach nicht weiter....

Vielen Dank im Voraus!

Grüße

Peter L.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn noch ein bissel Kleingeld übrig ist, dann häng uALFAT dazwischen. 
Der Chip nimmt dir die gesamte FAT32 ab, ist mit allen Karten kompatibel 
und du kannst dich auf dein Projekt konzentrieren.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die FAT nicht wäre, könntest sehr günstig die gesamte 
Datenschubserei vom DMA Controller erledigen lassen....leider macht die 
FAT das etwas aufwendig, aber zumindest für die 512 Byte Blöcke sollte 
das schon recht viel bringen dann.

Autor: Peter Diener (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wofür willst du eine initSPI? Das SPI wird mit halSPISetup(); 
initialisiert. Das passiert in hal_SPI.c
Wo ist das Problem?

Grüße,

Peter

Autor: Peter L. (jotrek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich habe ja nen anderen controller, als TI bei dem Programm verwendet 
hat. Die Initialisierung der Komponenten mit mmcInit() schlägt bei mir 
fehl. Als habe ich in die Doku geschaut. Und da steht, dass die o.g. 
Funktionen bzw. header geändert und angepasst werden müssen. Mir ist 
aber nicht so ganz klar, was genau geändert werden muss. Das war mein 
Problem.

Merci für die Antwort.

Grüße

Peter L.

Autor: Peter Diener (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich will mir jetzt nicht alles durchlesen, was man da ändern muss, aber 
im Wesentlichen wird es darauf rauslaufen, dass das richtige 
Kommunikationsmodul definiert werden muss. So viel Unterschied ist 
zwischen den Prozessoren nicht. Ließ einfach mal beide Datenblätter 
durch und schau, wo die Unterschiede sind.

Viele Früße,

Peter

Autor: Peter Diener (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
^^Grüße...

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kriegst du alles durch anschauen der Beispielcodes und User Guides 
heraus. Der 1611 und der 169 sollten sich da kaum unterscheiden, die 
USART wird meines Wissens völlig gleich behandelt. Pinkompatibel sind 
sie eh. Also muss auch das Init klappen. Wenn nicht, hast du ein ganz 
anderes Problem irgendwo.

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.