Forum: Mikrocontroller und Digitale Elektronik I2S VU Meter mit STM32, Anfängerprojekt?


von Jan (Gast)


Lesenswert?

Guten Abend,

ein Stereo (Audio) ADC digitalisiert das Ausgangssignal eines Audio 
Verstärkers, das entstehende I2S Signal wird in einen STM32 gegeben und 
dort ausgewertet. Ein großes VFD (GU256-64-900A) zeigt den Pegel in dBu 
sowie den maximalen Pegel mit hold Funktion nach dem Bargraph Prinzip. 
Ein Klassisches VU und PPM. Datenblatt vom Display:

http://www.qscomp.cz/Pdf/GU256X64-900A.pdf

Klingt erstmal einfach, ich frage mich aber ob das für einen Anfänger zu 
schaffen ist? Mir fällt es gerade sehr schwer einen Passenden uC 
auszuwählen, wichtig ist nur das er mit dem Clock den der Audio ADC 
sehen will (wohl die klassischen 22.5792 MHz) arbeitet. Ansonsten gibt 
es nicht viel zu tun, ein paar Taster abfragen, 4 Relais schalten und 
Dinge auf dem Display anzeigen. Alles was ein Atmega8 auch könnte.

Wie schätze ich ab welchen uC ich am besten verwenden kann? Ganz toll 
wäre einer der an 5V läuft denn das Display und der ADC arbeiten mit 
dieser Spannung, man spart die Pegelwandler.

Danke!

Gruß,
Jan

von Rene K. (xdraconix)


Lesenswert?

Was haben die 22.5792 MHz des ADC mit den µC der Anzeige zu tun wenn das 
Signal über I2S herreinkommt? Die Clockrate für SCK liegt doch bei 44.1 
kHz bei 1.4112 MHz richtig?

Ich kenne keinen STM32 der 5V direkt treiben kann.

von Jan (Gast)


Lesenswert?

>Was haben die 22.5792 MHz des ADC mit den µC der Anzeige zu tun wenn das
>Signal über I2S herreinkommt? Die Clockrate für SCK liegt doch bei 44.1
>kHz bei 1.4112 MHz richtig?

S/PDIF verwendet 32Bit Wortbreiten bei 2 Kanälen und 44,1kHz sind es 
2.8224Mhz. Die meisten modernen ADCs wollten aber ein paar Dutzend Mhz, 
wählt man eine niedrigere Abtastrate nutzen die dann Oversampling.
Geschickt wäre halt wenn man den Clock vom uC übernehmen könnte bzw. aus 
seinem clock teilen. Die beiden werden sich einen Quarz teilen, das 
macht es einfacher.

Ein anderer uC wäre auch denkbar wobei ich den ADC sowieso über ADUMs 
trennen will, die machen auch die Pegelanpassung.

Gruß,
Jan

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Datenblatt würd ich das jetzt nicht nennen, da fehlt ja völlig das 
Protokoll.
> A full data sheet is available.
Das musste dir erstmal besorgen.

Ansonsten brauchst du jetzt nicht unbedingt einen externen ADC.
Ein interner 12Bit ADC reicht erstmal für eine Anzeige.
Das würde die Sache schonmal erleichtern.

von c-hater (Gast)


Lesenswert?

Mw E. schrieb:

> Ansonsten brauchst du jetzt nicht unbedingt einen externen ADC.
> Ein interner 12Bit ADC reicht erstmal für eine Anzeige.

Klar, für eine 12Bit-Anzeige (entspricht einem Dynamikumfang von 72dB) 
reichen 12 Bit...

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Jan schrieb:
> Klingt erstmal einfach, ich frage mich aber ob das für einen Anfänger zu
> schaffen ist?

Da ist die Antwort doch sonnenklar: Es kommt auf den Anfaenger an.
Klar wirds Anfaenger geben, die das schaffen. Es wird auch 
Master-of-electrical-Gedoens-Absolventen mit 1er Abschluss geben, die 
das nicht schaffen.
Ob du's schaffst, wirst nur du selber beantworten koennen.

Gruss
WK

von Jan (Gast)


Lesenswert?

Die Anzeige soll 90-100dB Dynamik darstellen können. Deshalb wird ein 
mindestens 16 Bit Wandler benötigt. Für die Peak Detection muss das 
auslesen auch sehr schnell sein, damit wird eine Clipping Anzeige 
gemacht.

von Dummbeutel (Gast)


Lesenswert?

Mit mehreren Codecs, deren Wandelbereiche sich ergaenzen,
kannst du auch spielend einen Dynamikbereich von 120 dB
erreichen. Da duerften dann selbst die Profis staunen!

von c-hater (Gast)


Lesenswert?

Dummbeutel schrieb:

> Da duerften dann selbst die Profis staunen!

Davon ist wohl auszugehen. Wenn irgendeine Lösung die Grenzen der in 
diesem Universum geltenden Physik sprengt, da bleibt den Profis ja nur 
das Staunen...

Das ist schon seit der Einbit-Kompression Dauerthema. Und man kommt aus 
dem Staunen gar nicht mehr raus, seitdem es die Maker und Arduidioten 
gibt...

Was die alles rausfinden, um die Grenzen dieser langweiligen Physik zu 
sprengen, deren Anhänger ja sowieso nur Alte Säcke und eher ein 
mittelalterlicher Orden der Ewiggestrigen sind. Hochachtung...

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

c-hater schrieb:
> Klar, für eine 12Bit-Anzeige (entspricht einem Dynamikumfang von 72dB)
> reichen 12 Bit...

Dat soll ja auch erstmal ein Anfängerprojekt werden und kein 
Studioequipment.
Da reichts erstemal ein STM32 Discovery zu schnappen und das Display 
ranzuhäkeln, der Rest ist Software.

Wenn das dann läuft kann man sich die Baustelle von I2S und einem 
eigenen PCB aufmachen.

von Dummbeutel (Gast)


Lesenswert?

> seitdem es die Maker und Arduidioten gibt...

Ohne die passende Library laeuft bei denen gar nuex.

von Jan (Gast)


Lesenswert?

Wenn es euch leichter fällt denkt einfach das ich ein Eval Board von 
meinem ADC benutze, die Daten also mit den 90dB Dynamik beim uC 
ankommen.
90dB sind für Audio ADCs nichts, das haben schon die CD-Player aus den 
80ern geschafft.

von Thomas Z. (usbman)


Lesenswert?

Jan schrieb:
> 90dB sind für Audio ADCs nichts, das haben schon die CD-Player aus den
> 80ern geschafft.

Soso dann mach mal....
Als Anfänger sind schon mehr als 80 db anspruchsvoll. Zumal dann ja auch 
noch das Problem mit dem Messen dazukommt. Du hast vermutlich keine AP 
zur Verifikation zur Verfügung. 16bit entspricht übrigens ziemlich genau 
96db.

Thomas

von Jan (Gast)


Lesenswert?

Ich bin uC Anfänger, Analogschaltungen sind mein Hobby. Da bin ich 
zuversichtlich zumindest diesen Teil zu schaffen. Es geht nur um das 
Programmieren und die Wahl des uCs.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Jan schrieb:
> Es geht nur um das
> Programmieren und die Wahl des uCs.

Du kannst davon ausgehen, dass wenn der uC einen I2S Port hat, er auch 
dicke von der Performance her fuer ein VU Meter reicht.

Gruss
WK

von c-hater (Gast)


Lesenswert?

Dergute W. schrieb:

> Du kannst davon ausgehen, dass wenn der uC einen I2S Port hat, er auch
> dicke von der Performance her fuer ein VU Meter reicht.

Wenn er zumindest einigermaßen kompetent programmiert wird, sollte man 
wohl ergänzen...

Arduino, ick hör' dir trappsen...

von Stefan F. (Gast)


Lesenswert?

Jan schrieb:
> 90dB sind für Audio ADCs nichts, das haben schon die CD-Player aus den
> 80ern geschafft.

Was hat ein ADC im CD Player verloren?

von Fred (Gast)


Lesenswert?

>von Dummbeutel (Gast)
>22.01.2020 19:41

>> seitdem es die Maker und Arduidioten gibt...

>Ohne die passende Library laeuft bei denen gar nuex.

Ja, aber wenn man dann das passende Beispiel für z.B. einen ESP32 nimmt

https://github.com/espressif/arduino-esp32/blob/master/libraries/ESP32/examples/I2S/HiFreq_ADC/HiFreq_ADC.ino

Ist man damit sehr viel schneller und kostengünstiger unterwegs als ein 
verknöcherter alter Dummbeutel.

von Jan (Gast)


Lesenswert?

>Du kannst davon ausgehen, dass wenn der uC >einen I2S Port hat, er auch dicke von 
der >Performance her fuer ein VU Meter reicht.

Ok, Danke!

>Was hat ein ADC im CD Player verloren?

Missverständlich ausgedrückt. Damals waren bei der AD/DA Wandlung eben 
auch schon 90dB (oder 96dB) Dynamik drin. Vermutlich schon in den 70ern 
als man die ersten Aufnahmen gemacht hat.

von fgd (Gast)


Lesenswert?

mit einem STM32 F4 oder F7  Discovery kannst du problemlos eine FFT 
laufen lassen( mit peak hold )
du hast direkt ein display und einen vernünftigen Audio ADC onboard


Glaube sogar eine App-Note macht das fast von alleine ...

von W.S. (Gast)


Lesenswert?

Jan schrieb:
> Klingt erstmal einfach, ich frage mich aber ob das für einen Anfänger zu
> schaffen ist? Mir fällt es gerade sehr schwer einen Passenden uC
> auszuwählen, wichtig ist nur das er mit dem Clock den der Audio ADC
> sehen will...

Geh systematisch vor. Also zuerst mal eine Art Übersichts-Schaltplan, 
was du realisieren willst. Schau dich dann nach dir passenden 
Stereo-ADC's bzw. Codecs um. Die wollen je nach Samplerate bestimmte 
(krumme) Taktversorgung haben. Also sieh dich auch nach den dafür 
nötigen Quarzoszillatoren um.

Als nächstes guck, welche Controller eineen "SAI" Peripheriecore haben. 
Bei gewöhnlichen I2S kann es dir nämlich passieren, daß das nur 
aufgebohrte SPI sind und daß die dann nur 16 bittig arbeiten, keinen 
Fifo haben usw. Also lies das jeweilige Manual und dort den Abschnitt 
zum SAI und zu I2S gründlich.

Danach kannst du entscheiden, ob dir Chip und Manual gefallen oder eher 
nicht.

W.S.

von Joachim B. (jar)


Lesenswert?

Jan schrieb:
> 90dB sind für Audio ADCs nichts, das haben schon die CD-Player aus den
> 80ern geschafft.

und nur sehr wenige habens je gehört! (PS CD 16 bit 96dB)

Überlegen wir mal,
Stiller Raum, Hörschwelle um 40dB leises Weckerticken

dazu also um deine 90dB zu hören sollte man die 40dB überschreiten, 
ergibt bis 130dB
kann man schaffen aber nicht jeder Lautsprecher und ein Genuß ist es 
nicht.

Oberhalb von 60dB wird Messtechnik anspruchsvoll, kann nicht jeder!

von NichtWichtig (Gast)


Lesenswert?

@Jan
Schau mal ein Evalboard mit STM32F407VETx an, der hat I2S und mit <10€ 
ist das brauchbar.
CubeMX erleichtert die Konfiguration.

I2S als Slave nimmt dann die Datem vom ADC in dessen Atkt entgegen.
DMA schiebt sie ins RAM und schon kann die Display-Methode aufbereiten.


Beitrag "STM32F407 Black und Arduino"

von Dummbeutel (Gast)


Lesenswert?

Fred der Dummschwaetzer schrieb:
> Ist man damit sehr viel schneller und kostengünstiger unterwegs als ein
> verknöcherter alter Dummbeutel.

Wenn ich Bibliotheken und Libraries benutze, dann solche die sich
in mein Projekt einpassen lassen. Und nicht umgekehrt.
Damit bin ich in der Summe noch sehr viel schneller fertig,
als wenn ich mir diesen unsaeglichen C-- Murks antun muesste.
(Wo dann die Performance hinten und vorne nicht stimmt.)
Auf kostenguenstig bin ich nicht besonders angewiesen.
Ich kann die Preise auf den Kunden umlegen.

Programmiertip: Wartendes Pollen auf das Ende einer DMA-Uebertragung
ist nicht besonders performant.

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.