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