Audio DSP mit STM32F7 discovery

Pflunz

wenig aktiver User
Registriert
28. Okt. 2006
Beiträge
29
Hallo,
macht es klangtechnisch Sinn sich einen DSP mit einem STM32F7 Discovery Board zu basteln? Programmiertechnisch traue ich mir das durchaus zu, doch weiß ich nicht wie gut der darauf verbaute HallWolfson/Cirrus WM8994E Audio-Codec (4x 24-Bit DAC, 2x 24-Bit ADC) ist.
Ist das nur ein "billig Codec" oder kann man damit etwas ordentliches machen? Denn mit dem Touchscreen lässt es sich auch hervorragend in das Amaturenbrett integrieren und für 50€ ist es ja quasi geschenkt.
Hat noch jemand Interesse an einem "kleinen" Opensource Projekt?

edit: Sorry, sollte bei Car Audio hin. Wenn das bitte jemand verschieben kann? :)
 
ich weiss ja nicht, was dein dsp können soll, aber irgendwie ist das Board von der Hardware recht schwach, ob man das ausreicht mag ich mal zu bezweifeln...

Phil
 
Ich weiß nicht was du für Ansprüche hast, aber 200MHz, 32bit single cycle MAC, das ist eigentlich am oberen Ende irgendwo. Selbst single cycle single precision floating point Multiplikationen gehen.
Ich möchte natürlich Hochpass, Tiefpass, Equalizer und Laufzeitkorrektur.
Leider finde ich die Specs von den "üblichen" DSPs hier nicht, die sollten aber kaum besser sein, oder?
 
STM32F7 als USB, S/PDIF sound card

Hallo,
ich habe das STM32F7 Discovery am laufen, als USB oder S/PDIF sound card:
http://www.tjaekel.com/DiscoveryF7Audio/index.html

DSP: ja, der STMF7 hat ein paar interessante DSP Instructions. Aber das ist nicht das Thema:
Performance, wie angedeutet, ein wichtiger Punkt:
sollte fuer einfaches Audio durchaus reichen (In und Out is eh ueber DMA), aber wenn man dann noch LCD dazu nehmen moechte, wird es
richtig eng: LCD braucht einen Frame-Buffer, externen DDR, etliche DMAs, INTs ... Das wird sicher sehr ausbremsen und hart (wenn der Frame-Buffer
DMA gerade dabei ist, wenn Audio-In-DMA auch dran waere ...).

Der WM8994 ist nicht so schlecht, hat gute Parameter und Features. Der ist sogar ein 4-Kanal-DAC. Der ist nicht das Problem.

Meine Erfahrungen:
1. S/PDIF ist nur 16bit (wenn Stereo), auch wenn man 24bit abspielt
2. Die FW, CubeF7, demos, sind nicht schlecht, helfen gut und man kommt schnell zum Ziel
3. Aber: es ist schwer, einen "Filter Graphen" zu finden: die Puffer and Stellen, wo man z.B. ein Audio Processing "reinhaengen" kann.
Eigentlich geht es gar nicht: Audio In mit DMA zum Puffer, Audio Out mit DMA vom Puffer zum DAC. Das laeuft, wenn initialisiert voll-automatisch,
also, der DMA triggert sich selbst fuer naechsten Puffer. Da ist so gut wie nichts mehr von der FW aktiv, im Spiel.
Das ist genau mein Problem: wenn ich nur einfach den Input Buffer auswerten will fuer ein VU Meter - dann frisst das schon so viel Zeit, dass
Audio stottert. Und es ist nicht synchron, weil der DMA mein Code einfach "weg drueckt", den Puffer weiter sendet, ohne dass "ich" schon fertig
bin.
Meiner Meinung nach: selbst wenn Player geht - eine Filter-Kette aufbauen, DSP-Bloecke in Audio Stream einfuegen ... ist so gut wie nicht vorgesehen
oder moeglich.
4. LCD zusammen mit Audio geht, ist aber "tricky": wenn USB Audio hatte ich Problem, dass Touch FW immer crasht. Es scheint Abhaengigkeiten in der
Reihenfolge zu geben. Bei USB z.B. wird Audio erst initialisiert, nach dem ein paar INTs gekommen sind, die USB Enumaration an PC gesendet und
abgeschlossen ist. Heisst: FW (fuer USB und Audio) ist erst richtig initialisiert wenn der PC es auch als Sound Card anzeigt. Wenn man in FW etwas
zu "frueh" macht, dass kann es verloren gehen (FW intialisiert sich in grossen Teilen spaeter neu) oder System ist noch gar nicht richtig "fertig"
5. USB Audio, die FW, demos, hat zwei "kleine" Bugs: da ist irgendwo ein Puffer-Problem: Audio war immer am Anfang total verzerrt. Und nach einer
Weile kommen immer mal wieder kurze Phasen mit Verzerrung (Ueberlauf?)

Lohneswert damit Audio zu machen, auf alle Faelle. Aber nicht zu viel erwarten bzgl. Audio Processing, heavy DSP functions ...

ich warte eigentlich auf Audio Weaver fuer diese Board (und Raspberry Pi):
http://www.dspconcepts.com/products/audio-weaver
 
uralt aber vlt noch interessant

Audio DMA --- gehen tut das schon .. ganz schmerzfrei
du darfst nur nicht im interrupt was umherrechnen

wichtig ist dabei das du mit jedem transfer des halben buffers ( DMA interrupt bei halben und completten Transfer )
umkopierst in einen RAM
diese daten kannst du dann bearbeiten und parallel zum kopieren in den ausgabepuffer schieben.
du hast so alle zeit der welt um die samples zu bearbeiten... je nach länge des puffers

und je länger der puffer , desto länger die laufzeit
hier kann man dann recht gut die abstufung der LZK machen.


Ich habe aktuell einen M7 mit echocancellation , 5band EQ und diversen anderen spielchen am laufen bei ca 10% CPU last


das LCD geht trotzdem .. die interruptprio muss nur niedriger sein als die der Audio DMA
alternativ ein RTOS und das LCD im polling beschreiben ^^
 
Moin,

ich habe selber das STM32F7 Discovery Board in Betrieb. Größtes Problem bei der ganzen Sache ist, dass ST kein UAC2(USB Audio Class 2) unterstützt. Das heißt, man muss die USB Full Speed Schnittstelle nehmen, welche auf ~5Mbit/s begrenzt ist. Die High Speed Schnittstelle wird für Audio Anwendungen nicht unterstützt. Ich wollte damit eine DSP basierte Multichannel 24Bit/192kHz USB<->i2s Bridge realisieren, welche dann an einen eigens entwickelten Codec angeschlossen werden sollte. Die Transferrate und der TDM Modus, welcher nur 2 Timeslots zur Verfügung stellt haben mir dabei aber ein Strich durch die Rechnung geschlagen.
 
Zurück
Oben Unten