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
Schau doch mal hier: http://focus.ti.com/mcu/docs/mcusupporttechdocsc.tsp?sectionId=96&tabId=1502&abstractName=slaa281b 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.
Hi, Merci für die schnelle Antwort! Werde mir beides genauer ansehen. Ist ja genau das, was ich brauche :) Viele Grüße Peter
>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.
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
>Zumal meine Arbeit auf der Vorarbeit eines Mitstudenten basiert >(jeweils Studienarbeiten)... Wie hat der das gemacht? Hardware? Grobe Beschreibung reicht.
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.
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....
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?
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
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.tsp?sectionId=96&tabId=1502&abstractName=slaa281b 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.
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.
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.
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
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.
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
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.