Hallo Gemeinde, ich möchte im rahmen eines Projekts eine MP3-datei aus einer SD-Karte lesen und wiedergeben. Zur verfügung steht mir das EVAL-B. STM3210E. ich habe im Netz gesucht und bin immer wieder auf den VS1001 gestossen. ist er denn notwendig als Decoder? da ich es geschafft habe "Sprache" auf den AD-Wandler zu geben, lesen und wiederzugeben dachte ich mir, es wird auch mit MP3 funktionieren. Das eine habe ich per PCM gemacht. Geht das andere per Software auch oder ist da zusätzliches notwendig ? Danke.
Na ja, man braucht entsprechende Decoderroutinen und die Rechenleistung dazu. NXP hat es vorgemacht - hier: http://www.nxp.com/documents/application_note/AN10583.pdf Vielleicht hat ja ST ähnliches?
> Geht das andere per Software auch oder ist da zusätzliches notwendig ?
Im Prinzip geht es auch mit Software. Ich habe auf einem SH2A 132Mhz
(superscalar!) die libmad laufen. Die kann man sich einfach runterladen
und uebersetzen. Auf meinem Prozessor reicht die Rechnenleistung fuer
320kbit gerade so eben aus. Fuer 128kbit (also LoFi :-) braucht es
weniger Rechenleistung.
Wenn dein Prozessor eine aehnliche Rechenleistung hat dann kann ich die
libmad empfehlen. Einfach runterladen, etwas Assembleroptimierung falls
deine CPU noch nicht unterstuetzt wird und uebersetzen.
Oh...du brauchst aber noch etwas Ram. Ich glaube ich nutze so 600kb
internes Ram als Buffer. Es muesste sicher auch mit weniger gehen. Aber
unter 128kByte wuerde ich nicht gehen. Der Grund dafuer ist das
SD-Karten, wo ja vermutlich deine Lieder herkommen, manchmal kurze
Pausen einlegen bevor sie ihre Daten liefern. In der Zeit muss dein
Buffer ueberbruecken koennen.
Olaf
@Martin : ich habe die ganze Zeit auf dich gewartet damit du es mir erklärst ;)! danke ich weiss bescheid. @Sebastian : ich war gestern in verbindung mit Keil und die haben nichts ähnliches. ich bin ja bereit alles mögliche Softwaremässig zu schreiben wenn ich die Sicherheit habe dass das funktioniert! denn es funktioniert ja mit der "Sprache": Aufnehmen->AD-Wandler->Software(PCM)->Ausgeben. ich dachte am Anfang : SD-karte->Software->Ausgeben... ob das wohl geht..
> http://www.nxp.com/documents/application_note/AN10583.pdf
Interessant. Also 73% CPU-Load wenn man mit schaebigen 128kbit zufrieden
ist. Und wenn NXP nur 56 bis 128kbit getestet hat dann heisst es wohl
das 160kbit schon nicht mehr funktioniert.
Also sollte der Arm wohl auch besser mit 120Mhz und mehr laufen wenn man
wirklich Musik hoeren will.
Olaf
@Olaf: Der Cortex/Eval.B bieten einiges, also um rechenleistung und Ram mach ich mir eher keine Sorgen. es werden auch keine Lieder sein... es sollen Mp3 Datei ausgelesen werden. keine Lieder ;) hast du zufällig links für mich ?
> ich bin ja bereit alles mögliche Softwaremässig zu schreiben wenn ich > die Sicherheit habe dass das funktioniert! Die Applikation von NXP liefert dir doch schon eine gute Einschaetzung der benoetigten Rechenleistung. Ausserdem solltest du von dort bereits die Assembleranpassung fuer die Multiplikationsroutine uebernehmen koennen. Es macht jedenfalls grossen Spass sowas zu implementieren. Du kannst dann jeden Programmierfehler hoeren. :-) Es ist auch sehr lustig wenn man den Prozessor komplett aufhaengt oder im Debugger anhaelt und er dann einfach weiter die letzten Sekunden Musik abspielt weil der DMA, zumindest bei mir, dann weiterlaeuft und den Buffer abspielt. Olaf
> hast du zufällig links für mich ?
Noe. Such einfach mal nach libmad. Ich hab die Sourcen einfach
runtergeladen und in meinen Dateibaum kopiert.
Es ist sicherlich nicht einfach sowas wie die libmad selber zu
programmieren, aber sie zu nutzen ist ganz easy.
Olaf
Moin, Nimm den Helix MP3 Decoder der den gibts in fixed point. Läuft super und wenn du dir dort die Benchmarks an siehst. >Sample Rate Channels Bit Rate ARM7TDMI ARM9TDMI-REV2 ARM920T ARM9E StrongARM1 XScale >48.0 KHz 2 320 Kbps 30 MHz 24 MHz 27 MHz 20 MHz 20 MHz 20 MHz >44.1 KHz 2 128 Kbps 26 MHz 21 MHz 24 MHz 17 MHz 17 MHz 17 MHz https://datatype.helixcommunity.org/Mp3dec Der Ram bedarf ist für einige Cortexe noch ein Ko Kreterium, aber dann nimmt man einen mit mehr als 32Kb Ram. Wenn du beim STCircle schaust gibt es dort einen MP3-Player auf STM32 der Helix benutzt. Kannst dir den Code ja mal anschauen. MfG Tec
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.