Forum: Mikrocontroller und Digitale Elektronik msp430 - FFT


von ubi eckbert (Gast)


Lesenswert?

hallo zusammen,
ich bin auf der Suche nach einer Antwort zu folgenden Fragen:

1. Im Datenblatt von meinem MSP430 Favourit steht zum AD-Wandler 200000 
Konv/Sekunde. Was das bedeutet weiß ich , aber wenn ich nun ein Signal 
habe, welches Frequenzen von 1kHZ is 10kHz  enthalten kann... Wie gehe 
ich am Besten vor?  Sagen wir mal, die Ergenisse schreib ich in den 
Flash, EEPRom hat mein FAv nicht. Ich denke 256Bytes ist für ne FFT 
nicht gerade Luxus?

2. Ich habe auf TI - Seiten und auch sonst nach Beispielen gesucht. FFT 
rein auf C - Code Basis ist nicht möglich, oder?   Assembler in IAR 
möglich?

Freue mich über jeden Beitrag,
ubi

von Klaus (Gast)


Lesenswert?

Was willst Du denn genau machen? Ein Signal mit 200kHz sampeln und 
anschliessend eine FFT über 10kHz? Welchen MSP hast Du dir denn 
ausgesucht?

von Christian R. (supachris)


Lesenswert?

Naja, die 200kS/s sind ein sehr optimistischer Wert von TI. Schau mal im 
User Guide beim ADC, wie man den anspricht. Für die 200kS/s muss man 
schon minimale Sample&Hold Zeiten einstellen, einen schnellen CPU-Takt 
haben und am besten per DMA-Burst in den RAM speichern. Und dann sowieso 
nur Summen-Abtastrate....

Und in den Flash? Wieso? Der ist doch sau-langsam, da schaffst du keine 
200kS/s. Ein 10 kHz Signal reicht laut Nyquist/Shannon mit 20kHz 
abzutasten, besser ist aber faktor 5...10 um sinnvolle Ergenisse zu 
erzielen. Dazu müsstest du zuerst einen Block aufnehmen, per DMA in den 
RAM speichern und nachher die FFT drüber laufen lassen....

von ubi eckbert (Gast)


Lesenswert?

erstmal danke für die schnelle antwort.

@Klaus:  msp430f1132..  1khZ - 10kHz sind mein erstes Ziel...   hab mit 
"optimistischen" Werten gerechnet.. doch hab eigentlich gehofft, dass 
ich damit auch wohl in die Nähe von 100kHz komme, aber wird eng oder? 
Was meinst du mit Summen-Abtastrate.

@supachris:  stimmt, direkt ins Flash geht nicht.. aber ist der RAM 
nicht zu klein? Ich hätte erwartet, dass ich zwischenpuffern muss.

Ich hab leider noch nicht ganz raus, ob ich für den Bereich 1kHz bis 
sagen wir mal 80 kHz  die FFT öfter durchlaufen lassen muss, damit es 
schneller oder besser geht. denn je kleiner die Frequenz ist umso 
weniger Abtastpunkte brauche ich doch. Man bekommt doch gerade für die 
hohen Frequenzen keine Information dazu. Vom Gefühl her müsste man doch 
schachteln. Man beginnt  mit kleinen Frequenzen und schiebt immer höhere 
dazwischen um dann später wieder die kleinen Frequenzen auszuwerten. 
Quasi lässt man die Abtastfrequenz hochlaufen und dann wieder runter. 
Das klingt im ersten Moment aufwendiger, aber man benötigt dann doch 
weniger Rechenoperationen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mit nur 256 Bytes RAM ist der F1132 vielleicht für die Aufgabe etwas arg 
unterdimensioniert. Das Flash-ROM ist jedoch gänzlic ungeeignet, da es 
nur eine gewisse Anzahl an Schreibzyklen überlebt und danach ausfällt - 
auch ist das Beschreiben des Flash-ROMs für die Aufgabe viel zu langsam.

Verwende einen anderen MSP430 mit erheblich mehr RAM, der F1611 
beispielsweise hat 10 kByte, mit denen schon mehr anzufangen sein 
sollte.

von Christian R. (supachris)


Lesenswert?

...du solltest dich nochmal genauer mit dem Funktionsprinzip der FFT 
beschäftigen....das sollte deine Fragen nach dem Zusammenhang zwischen 
Aufnahmelänge, Abtastfrequenz und erreichbarer Frequenzauflösung klären. 
Und mit so einem Mini-Controller wie dem F1132 wird das schwer. Mit 256 
Byte RAM hast du ja bestenfalls noch Platz für 100 Abtastpunkte, oder 
200, wenn du die Auflösung auf 8 Bit minimierst....

von Klaus (Gast)


Lesenswert?

Also ich hab vor ca. 2 Jahren mal eine rekursive DFT nach dem Muster von 
http://www.ultimaterobolab.com/pdfs/5_RFT.pdf auf nem F1611 mit 8 MHz 
implementiert. Um die 60 Harmonische konnte ich damit in Echtzeit bei 
einer Abtastrate von 250 Hz berechnen.

Den 1611 hab ich damals wegen des grossen RAM und des integrierten 
Hardwaremultiplizierers genommen.

Der MSP hat dabei 250mal pro Sekunde (also in Echtzeit):
- einen Wert per SPI vom ADC (AD7715) geholt
- 60 Harmonische berechnet
- mit den 60 Harmonischen noch ein paar Summen gebildet (Bandleistungen 
berechnet)
- Die Leistungen pro Band auf einer LED-Zeile ausgegeben
- Die Harmonischen per RS232 versendet.

Der Controller lief dabei ziemlich am Anschlag...

Schau Dir den Artikel mal an.

von ubi eckbert (Gast)


Lesenswert?

danke für eure  anregungen...

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
Noch kein Account? Hier anmelden.