Forum: Mikrocontroller und Digitale Elektronik MP3-Player - VS1003 - Welcher Prozessor?


von Der Albi (Gast)


Lesenswert?

Hallo.
Ich möchte in den Ferien versuchen einen kleinen MP3-Player zu bauen.
Ich habe bereits den MP3-DecoderChip VS1003. Nun muss ich ja die
Datenkommunikation zwischen SD-Karte und dem Decoder herstellen.
Außerdem muss ich nebenbei noch ein Grafikdisplay betreiben.

Die SD-Karte hat ja im Normalfall das FAT-Dateisystem. Und genau hier
denke ich liegt das Problem. Ein normaler AVR wird - denke ich - nicht
genug RAM haben, um das Dateisystem sinnvoll zu unterstützden, oder?
Und selbst wenn: wie würde es mit der Geschwindigkeit aussehen?
Achso.. im Bateriebetrieb hab ich auch nur 3.3V zur Verfügung - und die
möchten so lange wie möglich halten -> sind da AVRs überhaupt geeignet?

Was würdet ihr empfehlen??

MFG

von mr.chip (Gast)


Lesenswert?

> Die SD-Karte hat ja im Normalfall das FAT-Dateisystem. Und genau hier
> denke ich liegt das Problem. Ein normaler AVR wird - denke ich -
nicht
> genug RAM haben, um das Dateisystem sinnvoll zu unterstützden, oder?

Doch. Ulrich Radig hat die Grundfunktionen des FAT auf AVR
implementiert, www.ulrichradig.de

> Und selbst wenn: wie würde es mit der Geschwindigkeit aussehen?

Dürfte wohl schon einigermassen gehen. Auf der anderen Seite will ein
MP3-Player die Daten doch relativ fix geliefert bekommen...

> Achso.. im Bateriebetrieb hab ich auch nur 3.3V zur Verfügung - und
> die möchten so lange wie möglich halten -> sind da AVRs überhaupt
> geeignet?

Eigentlich ja, denn es gibt ja die L-Varianten. Sind übrigens ganz
normale AVRs, die nur anders getestet werden. Also mit ein klein wenig
Glück läuft ein 'normaler' AVR auch auf 3.3 V. Natürlich aufpassen
beim Brown-Out-Detector (Fuses!).

von Michael W. (mictronics) Benutzerseite


Lesenswert?

Ich hab einen Player mit VS1011B und mega128L laufen. Die MP3 Daten
kommen von SD Karte mit FAT32. Der mega128 läuft mit internem RC
Oszillator mit 8MHz. Das ganze wird gespeist von einem LiIo/LiPo Akku
mit 3.3V Spannungstabilisierung.
Ist also kein Problem.

/Michael

von mh789 (Gast)


Lesenswert?

Fürs FAT-Lesen brauchst Du nicht mehr als 32 Bytes RAM (= 1 Eintrag),
plus ein paar Variablen wie BlocksPerCluster und so. Funktioniert bei
mir auf einem ATMega16 wunderbar. (Gut, ich habe noch 24 Bytes für das
Anzeigen des Dateinamens, aber das könnte man auch wegoptimieren, weil
ein Display ja auch ein prima RAM ist.)

Klar, so etwas wie eine sortierte Liste aller auf der Karte
gespeicherten Daten ist damit nicht machbar. Aber wenn man mit
unsortieren Listen zufrieden ist oder eh nur Playlists abspielt kann
man alles auf einem sehr kleinen Prozessor unterbringen. Man muss
vielleicht ein bisschen mehr Gehirnschmalz reinstecken. Aber gerade das
macht für mich den Reiz aus.

von Der Albi (Gast)


Lesenswert?

Vieviel Strom zieht denn so ein AVR? (z.B. der ATMega128) ~50mA? oder
weniger bei 3.3V?

Interessant wäre jetzt ja noch, ob es sinnvoll ist, den AVR hoch zu
takten und datfür solange wie möghlich im Sleep-Modus zu bereiben, oder
ob man ih lieber niedriger taktet... was meint ihr?

von Daniel M. (usul27)


Lesenswert?

Das hängt von Betriebspannung und Takt ab. Aber auf 50mA bekommst du den
NIE. Selbst 20mA wären schon arg viel.
Wenn es allerdings wirklich auf Stromsparen im Dauerbetrieb ankommt,
sind die AVRs wohl nicht unbedingt erste Wahl.

von Der Albi (Gast)


Lesenswert?

Naja im Sleep-Mode wären die schon geeignet :)
Aber ein MSP430 oder wie die heißen haben mir zu wenig RAM und auch zu
wenig Programmspeicher, denke ich...
Gibts da noch was anderes, was ihr empfehlen könntet?

von Jörg S. (Gast)


Lesenswert?

MSP430:
MSP430F1611 10kB RAM mit 55kB Flash (Maximum RAM)
MSP430FG4619 4kB RAM mit 120kB Flash (Maximum Flash)

Siehe http://focus.ti.com/lit/ml/slab034k/slab034k.pdf

von sepp (Gast)


Lesenswert?

Es gibt noch die M16C/M32C Mikrocontroller von Renesas.  Die haben bis
zu 48KB RAM und 1MB Flash.
www.m16c.de

von Jörg S. (Gast)


Lesenswert?

Man könnte auch einen intel mit DualCore nehmen ;)

von Hauke Radtki (Gast)


Lesenswert?

Ich denke auch, dass ein AVR reicht ... schau mal ins Datenblatt da ist
angegeben wie der Strom von dem takt und der spannung abhängt. Und um
nur Daten zu schaufeln kannst du ja fast alle peripherie vom AVR
abschalten.

von Der Albi (Gast)


Lesenswert?

Hat denn schon jemadn erfahrung mit dem VS1003?
Mit einer MP3-Datei mit 320Kbps habe ich ja praktisch 40Kb/sec
Datenverkehr. Wenn man bedenkt, dass ich diese Lesen und schrieben muss
und zwischendurch auch noch bissl was anderes z.B. das Display betreiben
muss, wirds bei 8Mhz doch schon ganz schön eng.. Naja. Am besten ich
probiers einfach mal aus. Auftakten geht ja immer. Aber trotzdem bleibt
die Frage:

"Interessant wäre jetzt ja noch, ob es sinnvoll ist, den AVR hoch zu
takten und datfür solange wie möghlich im Sleep-Modus zu bereiben,
oder
ob man ih lieber niedriger taktet... was meint ihr?"

von Benedikt (Gast)


Lesenswert?

Ich verwende eine modifizierte Version des ulrich radig MMC Codes und
betreibe damit einen VS1011 an einem mega8 @8MHz. Um eine 160kbit mp3
Datei abzuspielen, reichen etwa 2MHz Taktfrequenz aus (es ist aber
ziemlich and er Grenze). Mit 8MHz sollten also 320kbits kein Problem
sein, vorausgesetzt die Software ist einigermaßen durchdacht
programmiert.
Die Orginalversion der ulrich radig Software ist nicht für mp3s
geeignet, da jeder Block neu mitsamt der Clusterchain gelesen wird. Ab
etwa 6MByte Dateigröße reichten selbst 16MHz für eine 160kbit Datei
nicht mehr aus.

von Der Albi (Gast)


Lesenswert?

Der VS1011 ist dem VS1003 ja relativ ähnlich.. nur kann ich zusätzlich
wmv und midi abspielen, außerdem noch aufnehmen... hast du mit deinem
Chip gute Erfahrungen bezüglich des D/A-Wandlers gemacht, oder sind die
Chips klanglich nicht der renner? Ich hatte z.B. mal einen MP3-Player
gekauft, dort war es widerlich die Musik leise abzuspielen.. ständig
irgendwelchen störungen und hohe Frequenzen (vllt irgenein TaktSignal)
usw..
Mir ist übrigens aufgefallen, dass der VS1003 kein normales wav
abspielen kann... er kann nur so ein komprimiertes WAV-Format... d.h.
um WAV-Unterstützung einzubauen muss der Chip zusätzlich noch in der
Lage sein das Wav-File zu komprimieren... mal sehen, wie sich das lösen
lässt.. oder hat jmd von euch ne Idee?

Und immernoch nervt die Frage:
"Interessant wäre jetzt ja noch, ob es sinnvoll ist, den AVR hoch zu
takten und dafür solange wie möglich im Sleep-Modus zu betreiben,
oder ob man ihn lieber niedriger taktet... was meint ihr?"

von Michael W. (mictronics) Benutzerseite


Lesenswert?

Mein mega128 und VS1011 habe ich mit 320kBit MP3 getestet, läuft ohne
Problem. Selbst mit Nokia color LCD was auch noch mit an der SPI
hängt.
Problem ist eher der VS1011, dessen Takt sollte entsprechen hoch sein,
siehe VLSI VS10xx Application Note.

Zum Stromverbrauch:
Die Energiebilanz meines Players:

* Spielbetrieb, LCD Backlight OFF, 2GB Karte    50mA
* Spielbetrieb, LCD Backlight 50%, 2GB Karte    65mA
* Spielbetrieb, LCD Backlight 100%, 2GB Karte    75mA
* Stop Mode, LCD Backlight OFF, 2GB Karte    28mA
* Stop Mode, LCD Backlight 50%, 2GB Karte    42mA
* Stop Mode, LCD Backlight 100%, 2GB Karte    50mA
* Sleep Mode, 2GB Karte          700uA
* Sleep Mode, ohne Karte          400uA

Der größte Verbraucher ist die SD/MMC Karte.
Deshalb lohnt es nicht den AVR ständig in Sleep Mode zusetzen.

/Michael

von mh789 (Gast)


Lesenswert?

> Mit einer MP3-Datei mit 320Kbps habe ich ja praktisch 40Kb/sec
> Datenverkehr. Wenn man bedenkt, dass ich diese Lesen und schrieben
> muss

Kleiner Tipp: Das musst Du gar nicht. Ich hab meinen Bus so aufgebaut,
dass die Nutzdaten von der Karte direkt zum MP3-Chip laufen. Nur der
Takt kommt vom AVR.

Ich kann mich nur wiederholen: "Man muss vielleicht ein bisschen mehr
Gehirnschmalz reinstecken. Aber gerade das macht für mich den Reiz
aus."

von sepp (Gast)


Lesenswert?

? Dein MP3 Decoder Chip kann Fat?

von Martin (Gast)


Lesenswert?

FAT ist absolut überflüssig. Die heutigen Speicherkarten haben soviel
Platz, da kann ich pauschal jedem Musikstück 5MB zuordnen.

von mh789 (Gast)


Lesenswert?

> ? Dein MP3 Decoder Chip kann Fat?

Nein! Deshalb hab ich ja "Nutzdaten" geschrieben. FAT und CRC gehen
schon an den Controller.

In einem "normalen" Programm weiß man ja auch, was Dateiinhalt ist
und was Verwaltungsdaten. Und anstatt der Codezeilen "speichere Dir
die x nächsten Bytes und schicke sie dann an dem MP3-Chip" steht bei
mir halt "MP3-Chip fertig machen und x Takte ausgeben". Aber da sind
doch sicherlich schon hunderte vor mir drauf gekommen.

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.