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