Forum: Mikrocontroller und Digitale Elektronik STM32F303 welche PErformance für DSP


von Flinker Floyd (Gast)


Lesenswert?

Hallo,

ich frage mich, welche Performance ich so von dem STM32F303 bzgl.
Signalverarbeitung erwarten kann?

Ich möchte z.B. zwei Analoge Signale erfassen und miteinander 
korrelieren!
beide im Bereich bis 20kHz!

vielleicht auch noch ein Filter drüber laufen lassen!

Generell geeignet oder schon eher einen DSP verwenden???

VG

von Raphael L. (rleh)


Lesenswert?

Hallo,

prinzipiell ist das möglich mit dem STM32F303.

Die internen ADCs samplen schnell (bis zu 12 Bit Auflösung / bis zu 
5MSPS), ob dir die Genauigkeit bei 2 Kanälen und deiner Abtastrate von 
mindestens 40kHz (muss ja nach Abtasttheorem größer 2x f_max sein) noch 
ausreicht, kannst du hier 
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00058181.pdf 
nachlesen und ausrechnen.

Je nachdem, wie aufwändige Filter du verwenden willst, kann der 
Mikrocontroller trotz 72MHz an seine Grenzen stoßen.
Normale Filter sind (dank der FPU) problemlos realisierbar.

Ein DSP ist natürlich genau zu solchen Zwecken gedacht. Das bedeutet 
allerdings vermutlich einige Einarbeitungszeit, zumal falls du schon mit 
dem STM32 Controllern vertraut sein solltest.

Viele Grüße
Raphael

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Flinker Floyd schrieb:
> Ich möchte z.B. zwei Analoge Signale erfassen und miteinander
> korrelieren!
> beide im Bereich bis 20kHz!

Denk drüber nach, nicht die internen ADC eines STM32 zu benutzen, 
wenns wirklich drauf ankommt. Die sind für Feld, Wald und 
Wiesenmessungen ok, aber für z.B. Audio oder Präzisionsmessungen zu sehr 
gestört.
Ein schöner externer ADC lässt sich aber problemlos über z.B. I2S 
anschliessen, wenn dein MC das hat.

von AD (Gast)


Lesenswert?

ADAU1701 (oder ähnliche) mit oder ohne STM32

von Raphael L. (rleh)


Lesenswert?

Matthias S. schrieb:
> Ein schöner externer ADC lässt sich aber problemlos über z.B. I2S
> anschliessen, wenn dein MC das hat.

Ein externer ADC bedeutet zusätzlichen Aufwand und zusätzliche Kosten.

Zumal in diesem Fall die Bandbreite von I2S/I2C (100KBit/s bis 1MBit/s) 
mit Overhead knapp werden könnte um 2 20kHz Signale ausreichend zu 
messen.

Ebenfalls bedeutet ein auf diese Weise angeschlossener ADC zusätzliche 
Latenz, ob das hier relevant ist, muss der TO wissen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Raphael L. schrieb:
> Zumal in diesem Fall die Bandbreite von I2S/I2C (100KBit/s bis 1MBit/s)
> mit Overhead knapp werden könnte um 2 20kHz Signale ausreichend zu
> messen.

Nö. Genau dieses ist der Job von I2S (nicht zu verwechseln mit I²C), 
dieser Bus ist dafür gedacht, digitale Audiosignale zu übertragen. I2S 
ist etwas völlig anderes als I²C.

von Raphael L. (rleh)


Lesenswert?

Oh stimmt, du hast recht.

Ich habe I2S bisher immer mit I²C gleichgesetzt, bzw. I2S war mir nicht 
bekannt. Mit I2S hatte ich vermutlich schon mal einen externen ADC 
genutzt.

Dann nehme ich meine Bedenken natürlich zurück.

von Stefan K. (stefan64)


Lesenswert?

Erstmal: Der STM32F3xx hat nicht den Aufbau eines echten DSP. Während 
ein echter DSP mehrere Adress- und Datenbusse hat, um für einen 
Multiply-and-Accumulate Befehl die Daten zu holen und zu berechnen, muß 
der STM das nacheinander machen. Das kann die Berechnung um den Faktor 3 
langsamer machen.

Aber:
Wenn 16 Bit Messwertgenauigkeit ausreicht, dann hat der STM dafür 
spezielle M&A Befehle, die 2 Berechnungen parallel machen. Wenn der 
interne ADC verwendet wird, sind diese meistens völlig ausreichend. Für 
fast alle denkbaren Algorythmen gibt es fertige DSP-Routinen, meistens 
separat für 16 Bit, 32 Bit und float. Die Geschwindigkeit fand ich 
ziemlich beeindruckend, vor allem beim 2*16Bit-Modus.

Falls die Rechenleistung nicht ausreicht, gibt es auch noch höher 
getaktete Derivate (STM32F4xx oder STM32F7xx). An Deiner Stelle würde 
ich mich deshalb erstmal mit einem Demoboard testen, ob die 
Rechenleistung ausreicht und bei Engpässen auf den STM32F4xx wechseln.

Bei de Verwendung des gcc ganz wichtig: optimierung und Floatingpoint 
einschalten.

Gruß, Stefan

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.