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