Forum: Mikrocontroller und Digitale Elektronik uC für USB Audio Anwendungen


von Frank J. (fjordan)


Lesenswert?

Hallo,

ich suche einen uC für USB Audio Anwendungen.
Letzlich sollte über I2S ADC/DACs angebunden werden
Daher im Prinzip eine programmierbare Soundkarte

Nach einiger Recherche bin ich auf den
STM32F401xB   gestossen

Meine Wunschliste wäre
preis <5$ /1000er
Arm M0/M4
USB IF/Phy 2.0 full speed ggf auch high speed
I2S bis Fs=192kHz (damit fallen die kleinen LPCs raus)
integrierte Audio PLL wäre gut (wie der STM32F401xB)
kein BGA
gute USB Bibliotheken um das Rad nicht neu zu erfinden
langzeitverfügbar, daher wäre ein häufiges Exemplar besser
Gute Demoboards (dürfen auch mehr als 10Euro kosten)
Gute Entwicklungstool/Debugger aber ohne run-time fee

Der STM32F401xB erfüllt von der HW eingentlich alles, ich habe nur keine 
Demoboards gefunden und habe so auch meine Zweifel mit der breiten 
verfügbarkeit.

Da ich keine Atlasten berücksichtigen muss bin ich auch flexibel

Über Vorschläge würde ich mich freuen

Frank

von Jim M. (turboj)


Lesenswert?

Frank J. schrieb:
> Der STM32F401xB erfüllt von der HW eingentlich alles, ich habe nur keine
> Demoboards gefunden

Weder bei den Nucleos noch bei den Discoveries? Glaube ich nicht.

Es gibt einen Nucelo mit STM32F401RE, ich sehe nicht warum der nicht für 
den OP reichen sollte.

von 43222342 (Gast)


Lesenswert?


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


Lesenswert?

Am besten achtest du aber bei den Disco Boards drauf, das da schon 
externer RAM mit drauf ist. Der interne RAM der STM32 z.B. ist jetzt 
nicht so riesig, das du da lange Samples speichern kannst.
Von den oa. ist das STM32F7 zwar gross, hat aber SDRAM mit drauf. Das 
STM32F429 Discovery hat wie das F7 Board 8 MB RAM.

von 900ss (900ss)


Lesenswert?

Teensy 3.2

Die haben auch ein eigenes Audioboard (DAC) welches über I2S bedient 
wird.

https://www.pjrc.com/teensy/td_libs_Audio.html
https://www.pjrc.com/store/teensy3_audio.html

von Frank J. (fjordan)


Lesenswert?

Danke für die Tips
der STM32F401xB scheint brandneu zu sein.
Ich war nicht sicher inwieweit man ein "normales" disco board nehmen 
kann
ohne nachher allzu große Überaschungen zu erleben. Das scheint aber in 
der Familie kein Problem zu sein.

Frank

von Frank K. (fchk)


Lesenswert?

Willst Du auf dem Prozessor eigene Filter rechnen, oder warum reicht 
eine einfache USB-Soundkarte für <10€ nicht?

Wie viel Rechenleistung brauchst Du?

fchk

von Frank J. (fjordan)


Lesenswert?

DSP wäre nicht wichtig, da das auf dem host gerechnet wird.
Einfache soundkarten gehen nicht, da hier Abtastrate und Dynamik wichtig 
sind
Das ganze sollte schon 192khz 24bit hinbekommen, daher mit externem I2S 
DAC/ADC. Lösungen ala PCM2901 wären zu einfach ;-)
Das könnte man sicher mit den hochspezialisierten XMOS Lösungen machen, 
das ist aber für Stückzahlen <1000 nicht wirtschaftlich.
Mir ist keine soundkarte mit 192kHz 24 bit bekannt die USB Audio 1.1 
klassenkompatibel ist und auch noch klein und günstig ist
Ich komme um ein eigenes PCB nicht herum, da auch noch spezielle analog 
Elektronik dazukommt, die auch konfiguriert werden möchte
Da bin ich mit uC und USB HID Kommandos am flexibelsten.

Hinzukommt das ich ggf von dem Isochronen USB Mode weg möchte, da das 
unter windows häufig zu Aussetzern (Drop-out) führt.
Da wird dann pufferspeicher wichtiger. An DSP reicht eine Skalierung. 
Grundstäzlich würde ich aber auch mehr investieren, das muss nicht auf 
kante genäht sein, sollte nur in ein Mikrofongehäuse passen und via USB 
mit <500mA auskommen. Alternative wäre auch ein kleiner sharc DSP

Die STM32F4 Familie sieht erstmal sehr interessant aus.

von Frank K. (fchk)


Lesenswert?

Frank J. schrieb:

> Mir ist keine soundkarte mit 192kHz 24 bit bekannt die USB Audio 1.1
> klassenkompatibel ist und auch noch klein und günstig ist

Schon klar. USB Audio 1.1 kam vor USB 2.0 und ist daher auf Full Speed 
12 MBit/s ausgelegt. Daher die Begrenzung auf 
48k/16Bit/Stereo/bidirektional. Der Standard umfasst eben nicht mehr.

192k*2 Kanäle*24 Bit ergeben überschlagsmäßig etwa mehr als 9 MBit/s 
netto(!), und das passt eben in die 12 MBit/s brutto(!) von USB Full 
Speed nicht mehr rein.

Wer mehr will, greift eben zu USB Audio 2.0. Dafür ist das da. Dass 
Microsoft hier lange Zeit gepennt hat (beim aktuellen Windows 10 ist er 
endlich dabei), dafür kann niemand was.

> Hinzukommt das ich ggf von dem Isochronen USB Mode weg möchte, da das
> unter windows häufig zu Aussetzern (Drop-out) führt.

Auch der steht so im USB Audio 1.1 Standard drin - so verstehe ich den 
zumindest. Wenn Du das änderst, bist Du nicht mehr zum Standard konform.

fchk

PS: Vorschlag von mir:
http://www.microchip.com/wwwproducts/en/PIC32MZ0512EFE064

Ist zwar MIPS statt ARM, hat aber USB 2.0 High Speed (das ist 
Voraussetzung für 192k/24 Bit) und I2S/AC97 Codec Interface. Bei STM32F4 
hast Du nur Full Speed USB Transceiver eingebaut, und für Deine 
Audioformate ist das eben zu wenig.

fchk

: Bearbeitet durch User
von Frank J. (fjordan)


Lesenswert?

Sobald man nicht mehr ISO transfers nimmt, ist es nicht mehr 
klassenkompatibel und man kommt an einem eigenen Windowstreiber nicht 
vorbei, was dank libUSB auch kein Hexenwerk mehr ist.
Eine solche Betriebsart ist man von professionellen Messkarten gewohnt 
(picoscope, Datatranslation etc)

Hat beides vor und nachteile. Zumindest wollt eich mir mit einer 
programierbaren Lösung beide Varianten offenhalten

Bei Windows 10 habe ich die neuen USB Audio 2.0 (nicht USB 2.0) Treiber 
noch nicht ausprobiert, nach 10 Jahren könnte das ja mal was sein. 
scheint aber nur playback zu können

von Frank K. (fchk)


Lesenswert?

Frank J. schrieb:

> Bei Windows 10 habe ich die neuen USB Audio 2.0 (nicht USB 2.0) Treiber
> noch nicht ausprobiert, nach 10 Jahren könnte das ja mal was sein.
> scheint aber nur playback zu können

Angeblich hat M$ das XMOS-Zeugs lizensiert. Ich hab das auch nur so am 
Rande mit verfolgt, aber ich traue denen zu, etwas zu knauserig gewesen 
zu sein, wenn es tatsächlich nur Wiedergabe ist.

fchk

von Frank J. (fjordan)


Lesenswert?

Ich habe erstmal ein Disco board bestellt, parallel werde ich mir aber 
auch die Microchip Variante anschauen (wegen des USB 2.0 high speed 
PHY).

Solange die Boards unterwegs sind habe Zeit mich um passende IDEs und 
frameworks zu kümmern.
IDE wird wohl "System Workbench for STM32"
Beim framework bzw. bibliotheken bin ich noch unsicher. Ich brauch ja im 
wesentlichen I2S und USB client mit Audio 1.1 class.
Arduino wäre natürlich ganz spannend wegen der HW Unabhängigkeit, aber 
das dürfte hier nicht funktionieren

von fchk (Gast)


Lesenswert?

Du hast aber schon verstanden, das sowohl Full Speed USB als auch USB 
Audio 1.1 für 192k/24 Bit/stereo nicht funktioniert?

fchk

von 900ss (900ss)


Lesenswert?

Frank J. schrieb:
> Arduino wäre natürlich ganz spannend

Der Teensy 3.2, den ich oben erwähnte, wird über Arduino-IDE 
programmiert. Die Unterstützung der Hardware des Teensy ist wirklich 
sehr gut. Der "Macher" des Boards ist sehr engagiert.

Hier hat jemand den Teensy mit Audio über USB  verwendet.

http://openaudio.blogspot.de/2016/10/teensy-audio-over-usb.html

Da ist immerhin ein ARM mir ca. 80MHz drauf.

Uns es gibt noch den Teensy 3.6 der hat 180MHz und auch USB.

Nee, ich bekomm nix dafür aber ich finde die Dinger  recht gut.

: Bearbeitet durch User
von Thomas (Gast)


Lesenswert?

Frank J. schrieb:
> Sobald man nicht mehr ISO transfers nimmt, ist es nicht mehr
> klassenkompatibel und man kommt an einem eigenen Windowstreiber nicht
> vorbei, was dank libUSB auch kein Hexenwerk mehr ist.
Alles klar wie willst den Audiopart mit libusb lösen?
Alles kein Problem dann mach Mal.

> Eine solche Betriebsart ist man von professionellen Messkarten gewohnt
> (picoscope, Datatranslation
Das sind alles keine Soundkarten.

Usb1 Audio schaft max 8 Kanäle mit 16 Bit und 48kHz. Entsprechend 
bleiben bei 24Bit 96k nur noch 2 Kanäle übrig. Wenn du mehr willst 
braucht es usb2 Audio. OS Support dann wohl nur für win10. Ansonsten 
bleibt noch der Thesycon usbaudio Treiber.

Thomas

von Frank J. (fjordan)


Lesenswert?

Das ganze entspricht zwar einer Soundkarte. Es wird aber für 
(audio)-Messanwendungen genutzt. Daher muss ich nicht zwingend einen 
Soundkartentreiber haben.
Um in einer eigenen Anwendung auf die Streaming-Daten via USB und einem 
proprietären Protokoll zuzugreifen, ist mit libusb kein Problem und 
einfach.
Einen "echten" soundkartentreiber zu entwickeln ist eine andere liga und 
auch sinnfrei für dieses Projekt.

Wenn man doch bei ISO transfers bleibt, sollte das tunlichst 
klassenkompatibel sein.
Offenbar kann der von Thesycon gekaufte und von M$ in win 10 integrierte 
Audio 2.0 Treiber doch auch recording. Daher wird die audio 2.0 
Geschichte doch langsam spannend. Es wird sicher aber noch dauern bis 
das in der breiten Windows installation verfügbar ist.

Ich sehe aber auch ein, mit einem 11mbit USB Phy baut man sich eher eine 
Sackgasse. Bei den Microchip Typen sehe ich die (vermutlich) geringere 
Verbreitung als Problem.

Aus der STM32 Familie gibt es nichts in der Größenordnung mit USB 2.0 
high speed PHY? Ich recherchiere hier noch weiter. Das bestellte disco 
board schadet aber nicht zum spielen ;-)

von avr (Gast)


Lesenswert?

Frank J. schrieb:
> Aus der STM32 Familie gibt es nichts in der Größenordnung mit USB 2.0
> high speed PHY?

Doch gibt es: STM32F723/733

von Frank J. (fjordan)


Lesenswert?

ich hatte auch den STM32F417VE entdeckt.
Das ist schon ein wenig "fett" . Spontan würde ich was mit 64 pins also 
geringerer Baugröße bevorzugen. Wie gesagt BGA sollte es nicht sein

von Frank J. (fjordan)


Lesenswert?

Bei der Freescale/NXP scheinen nur die "dicken" high speed zu können.
Schade dass ich bei der empbedded world krank war, da hätte man sicher 
was gefunden.
Aktuell halte ich fast den microchip für alternativlos

von 900ss (900ss)


Lesenswert?

Frank J. schrieb:
> mit USB 2.0 high speed PHY

Hat der Teensy 3.2.

Frank J. schrieb:
> Spontan würde ich was mit 64 pins also geringerer Baugröße

Der beimTeensy 3.2 verwendete Prozessor Freescale MK20DX128 hat ein 64 
PIN LQFP Gehäuse.

Hast du dir den wenigstens mal angesehen? Der sollte deine Wünsche 
erfüllen wenn ich mich nicht sehr täusche.

von Gerd E. (robberknight)


Lesenswert?

Ich würde eher zu den XMOS-ICs greifen als zu fetten STM32ern. Die ICs 
dürften sich preislich im EK nicht viel nehmen, bei XMOS gibt es aber 
einen Haufen fertiger Audio-Libs die man recht einfach zusammenstricken 
kann um daraus USB Audio<->I2S Interfaces in allen Varianten zu bauen.

Bei STM32 ist die Hardware zwar gut dokumentiert, Du bekommst aber viel 
weniger fertigen Beispielcode für solche Interfaces. Du musst also 
relativ viel selbst entwickeln.

Bei XMOS hast Du hinterher ein echtes USB Audio 2 Interface. Wenn Du 
Audio-Messungen machen willst, kannst Du also direkt Programme wie ARTA, 
Rightmark, HpW Works, etc. verwenden.

Für Win < 10 musst Du natürlich Treiber kaufen. Aber sieh es mal so: 
Wenn Du sagen wir mal Ende dieses Jahres mit Deinem Produkt fertig bist 
und auf den Markt kommst, ist es nur noch 1 Jahr bis zum EOL von Win 7. 
Die Verbreitung von Win 8.1 ist im Vergleich zu 7 gering. Im Laufe von 
2019 werden also die meisten Leute zu Win 10 migrieren müssen. Daß Dein 
Produkt dann für Win < 10 Aufpreis kostet, interessiert dann also nur 
noch einen kleinen Teil der Kunden.

von 900ss (900ss)


Lesenswert?

Ach ja,  der beim Teensy verwendete Controller ist auch ein 
Cortex-M4......

von Frank J. (fjordan)


Lesenswert?

Habe mal die Datenblätter zu den K20 M4 Chips von Freescale 
durchgewühlt.
Ich finde da nur full speed

von 900ss (900ss)


Lesenswert?

Frank J. schrieb:
> nur full speed

Oh, da hab ich was verwechselt. Hi-speed bietet 480Mbit. Ich dachte es 
wäre Full Speed gewesen. Deshalb hab ich da garnicht weiter nachgesehen. 
Ich las nur full speed und dachte: passt.

Beitrag #5337504 wurde vom Autor gelöscht.
von Frank J. (fjordan)


Lesenswert?

ja ist schade, die Teensys fand ich so ganz spannend.
offenbar ist hier noch eine Produktlücke 64pin M4 mit schneller USB 
Anbindung, nur der microchip hat das bisher
Microchip board ist bestellt.

Ich denke die STM Familie wird da üver kurz oder lang aufschliessen

Das disco ist schon da, da fällt mir sicher auch noch eine Anwendung an,
für 192khz/24bit 2ch aber eben leider nicht.
Mal schaun wie idiotensicher das microchip paket ist.

Grundsätzlich finde ich die XMOS variante gut, wo man erprobte Sachen 
übernehmen kann. Für mein 2 kanal projekt ist der mir aber zu gross.

Nochmal vielen Dank für die vielen Anregegungen. Ich werde aber auch 
über meinen Erfolg/Misserfolg berichten.

von 43222342 (Gast)


Lesenswert?

die ganzen STM haben nur full speed PHY ( 12Mbit )
die größeren noch das ULPI  zum anbinden eines High speed PHY

von avr (Gast)


Lesenswert?

43222342 schrieb:
> die ganzen STM haben nur full speed PHY ( 12Mbit ) die größeren noch das
> ULPI  zum anbinden eines High speed PHY

Wenn man keine Ahnung hat, sollte man nicht schreiben. Ich habe schon 
oben geschrieben welche stm32 High Speed USB haben MIT integrierter phy. 
die m7 Serie von atmel hat übrigens auch hs USB. Unter 100 Pins habe ich 
da aber noch nichts gesehen.

von Johnny B. (johnnyb)


Lesenswert?

Frank J. schrieb:
> IDE wird wohl "System Workbench for STM32"

Ich würde mir als Alternative auch mal Atollic TrueSTUDIO angucken. 
Letztens hat ST die Firma Atollic übernommen und nun gibt es sogar die 
volle PRO Version völlig kostenlos:
https://atollic.com/truestudio/

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.