Forum: Mikrocontroller und Digitale Elektronik Aussteueranzeige mit STM32F105RBT6 über I2S?


von Borsty B. (mantabernd)


Lesenswert?

Hi zusammen,

ich bin am überlegen mir eine Audio Aussteueranzeige (VU Meter) für mein 
digitales AmpSystem zu basteln. Dabei sollte der Eingang digital über 
I2S realisiert werden weil darüber auch mein Amp gespeist wird.

Nun ist mir der STM32F105RBT6 ins Auge gefallen, dieser hat ja I2S 
onboard. Generell könnte ich damit mein ganzes Projekt steuern, optimal 
also.

Wie Aufwendig ist es das am STM32F105RBT6 anliegende I2S Signal 
auszuwerten und grafisch darzustellen? Ich steck was µC angeht schon 
etwas tiefer drin, hab mit Atmels schon einiges realisiert aber mir ist 
noch nicht so ganz klar wie ich das I2S Signal im Controller 
weiterverarbeiten kann.

Brauch ich dafür einen SW Codec?

Vielen Dank schon mal,
MfG
Borsty

von Dirk K. (dekoepi)


Lesenswert?

I2S ist nur das Protokoll, die Verpackung zur Übertragung. Darin sollte 
eigentlich rohes PCM liegen ( 
http://de.wikipedia.org/wiki/Puls-Code-Modulation ). Daraus folgt, dass 
es ganz konkret die Lautstärke zu Zeitpunkt t ist, die der derzeitige 
Wert angibt. Das Ganze ist wohl vorzeichenbehaftet. Ich habe derartige 
Daten so noch nicht verarbeitet, aber das musst du wahrscheinlich 
realistisch über ein paar ms mitteln und den gewonnenen Wert dann etwa 
über eine LED-Leiste anzeigen.

So würde ich zumindest erst mal anfangen, um die empfangenen Daten zu 
verstehen, und gegebenenfalls anpassen.

von Borsty B. (mantabernd)


Lesenswert?

Ok, klingt logisch.

Wie kann ich mir die Datenabfrage auf dem I2S Port vorstellen? Läuft das 
wie TWI bei Atmel, also mit entsprechender Funktion einen read() 
absetzen und den gelesenen Wert in den Zwischenspeicher schieben?

von Dirk K. (dekoepi)


Lesenswert?

I2S ist SPI auf dem STM32Fxxx. Also ähnlich wie I2C, nur viel einfacher. 
Du hast quasi ein Schieberegister - zum Auslesen eines Wertes schiebst 
du ein Dummy-Byte rein; andersrum erhältst du beim Schreiben ein 
Dummy-Byte zurück.

Hier hast du mal beispielhaft das Setup von SPI, musst dich da aber noch 
mal reinlesen: Beitrag "SPI-RAM-Bank an STM32F0-Discovery - write, kein read"

von Borsty B. (mantabernd)


Lesenswert?

Ok, danke. Hab mir jetzt ein STM32F4Discovery bestellt. Mal sehen was 
draus wird, sind so meine ersten Gehversuche mit ARM :)

von Dirk K. (dekoepi)


Lesenswert?

Die STM32F4-Disco hat ja sogar schon Mikro und Ausgang drauf, 
schnuckeliges Teil, liegt hier auch ein paar Tage schon rum. Für solch 
einfache Aufgaben finde ich das Overkill und zu teuer, setze dafür auf 
diese billigen Boards: http://www.ebay.de/itm/111297094334

Wobei das sogar ein kleiner Arduino hinbekommen sollte:
http://www.ebay.de/itm/291112526853

Nach dem Titel dachte ich, da ist ein bestimmtes Board vorgegeben.

von Borsty B. (mantabernd)


Lesenswert?

Naja, habs für 16 Euro inkl. Versand bekommen. Finde ich ok.

> Nach dem Titel dachte ich, da ist ein bestimmtes Board vorgegeben.

Wollte anfangs auch den verwenden und eine eigene Platine entwerfen. Zum 
erstmaligen Einarbeiten war mir das jetzt aber zu aufwendig. Mit einem 
fertigen Discoveryboard kann man halt schön debuggen und hat bei den 
ersten Gehversuchen den riesen Vorteil dass man sich nicht um die 
Hardware und somit weitere Fehlerquellen kümmern braucht. Soweit ich 
weiß kann ich den ST Link vom Discovery später auch für andere Boards 
verwenden.

von Dirk K. (dekoepi)


Lesenswert?

Hehe, jo, die Variante für 16,80Eur mit Versand habe ich auch ;)

Ist halt etwas hoch gegriffen. Klar kann man mit einem Core i7 Tetris 
spielen, aber irgendwie ist das Overkill, wenn der HD-Video in Echtzeit 
transkodiert und Effekte rechnet ...

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.