mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MP3 Player Datenstom


Autor: MartinS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin dabei einen MP3-Player, mit dem VS1011, zu bauen. Kann ich in
den VS1011 die komplette MP3-Datei schieben oder muss ich den Header
weg lassen?

ciao
Martin

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der nimmt das ganze file

Autor: MartinS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo bekommst Du die Daten her?

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wahrscheinlich von ner sd oder cf. denke ich mal

Autor: MartinS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, von einer SD bzw. MMC-Karte.

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läuft das ganze schon?
Ich bin nämlich an einem ähnlichen Projekt(nur mit VS1001).
Mir macht die MMC Sorgen. Ich habe vor den DataOut der MMC(im SPI mode)
direkt auf den Decoder zu hängen und mit dem uC die nötigen
Steuersignale am Decoder zu setzen. Also: Die Daten sollen nicht zuerst
in den uC(AVR) und dann wieder raus zum Decoder, sondern die sollen
direkt von der MMC in den Decoder. Meint ihr das klappt?

Autor: Tommy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo..

Ich bau auch grad einen mp3-Player.
hab auch ne Frage:
Wie kann ich die Länge eines Titels ermitteln.
Und das möglichst einfach?

Tommy

Autor: Fly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit (Dateigrösse in Bits)/Bitrate des Songs ?
Dann hast du als ergebnis die Länge in Sekunden.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was macht er dann bei VBR? Oder wird das von deim Decoderchip
garnicht unterstüzt?
Ich glaub ich hab mal irgendwo gesehn dass das bei mp3 bei der
Titelinfo usw. dabei steht.

Autor: Tommy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
is es wirklich so einfach?
ID3Tag-Daten und sonstiges Zeugs is ja auch noch irgendwo
gespeichert!?
Die Bitrate finde ich bestimmt auch irgendwo in der Datei?
Wenn ja wo?

Tommy

Autor: MartinS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laufen tut mein Projekt noch nicht. Ich puffere die Daten aber zwischen.
Damit soll es dann dauch möglich werden, Playlisten zu verarbeiten.

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn es jemanden interresiert ist hier mein projekt ...
http://alpmp3.sourceforge.net/main.php?id=desktop
ich baue die source gerade um damit der vs1011B funktioniert

Autor: Tommy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo John...

Mich würd die I2C-Button-Erweiterung interessieren.
Kannst du mal bitte einen Schaltplan posten?

Danke Tommy

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was mir ein bisschen Angst macht ist die Tatsache, dass mei Decoder
32Byte Blöcke braucht. Ich weiß aber nicht, wie ich die aus der MMC
bekommen soll(in kurzer Zeit). SingleBlockRead scheidet da wohl aus, da
schon der Befehl 48us dauert(bei 1MHz SPI Frequenz), oder??
Wäre es möglich der Karte den Befehl zu schicken, dass sie mir einen
kontinuierlichen Datenstrom schickt, und ihr dann den Clock abzustellen
wenn meine 32Byte im Decoder angekommen sind? Blickt die das oder ist
dann Ende, wenn man ihr den Clock abgestellt hat und später wieder
anmacht um die darauffolgenden Daten zu erhalten?

Wie schafft ihr denn die Daten von der MMC/SD in den Decoder?

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guck mal in meinem quell text nach der funktion fplay

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hol dir halt von der SD/MMC-Card nen kontinuierlichen Datenstrom,
speicher den dann im MC zwischen und schick ihn in 32Byte-Blöcken an
den Decoder. Oder du setzt den Datenstrom von SD/MMC nach MC aus werend
du von MC nach Decoder sendest.

Autor: MartinS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man soll den CLK der Flashkarte zwischendurch auch anhalten können habe
ich gelesen.

Vom Konzept und von den Anforderungen her ist mein Player was ganz
anderes. Mein Player soll in meinem Wagen installiert werden, statt
eines CD Wechslers. Die Bedienung erfolgt über das Radio und die
Titelanzeige im Kombiinstrument. Ausser der SD-Karte soll noch eine
CD-ROM Laufwerk angeschlossen werden, auf dem die MP3s liegen können.

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sebastian:
Das geht meiner Einschätzung nach nicht und wenn dann nur schlecht.
1.Viel zu langsam
2.Ich hab nur einen SPI Bus...Beim Einlesen der Daten nach deinem
Vorschlag kommt zwischendurch der Decoder und will Daten. Auf einem Bus
also nicht machbar.

@John:
OK, da werd ich mal gucken.

@MartinS

Das wäre ausgezeichnet, wenn man den Clock abstellen könnte.

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
als ich habe das folgender massen gemacht:
* vs und mmc am selben bus
* bei der mmc ist ein 74hc08 am mosi zwischen geschaltet
* sector lesen befehl senden
* erstes byte von mmc lesen
* erstes byte an mmc senden und zweites von der mmc lesen
* zweites byte an vs senden un drittes lesen
* wegen dem 74hc08 kommen be der mmc nur 0xff an

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht das zeitlich so??
Also nochmal langsam:
Du sendest den Befehl einen Sektor zu lesen, oder?
Dann jeweils ein Byte einlesen und an den VS senden...
Wie teilst Du dann der MMC mit, dass sie warten soll, bis Du das Byte
an den VS gesendet hast?
Ich habe ein 7408 am Clock und an einem I/O Pin. Der Ausgang liegt bei
der MMC auf dem Eingangsclock. Somit kann ich alle 3 SPI Busse(SCI,SDI
und MMC) separat ansprechen. Ich kapiere nur nicht, wie die Karte das
machen soll...


>*erstes byte von mmc lesen
>* erstes byte an mmc senden und zweites von der mmc lesen

Hier hast Du dich wohl verschrieben oder stimmt das so, dass Du das
Byte wieder an die MMC sendest?

Erklär mir bitte mal genau, wie Du die Karte zum Warten bringst.

Danke schonmal.

Daniel

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,
die mmc wartet nicht.

der spi des avr sendet ja immer 1 byte während es eins liest

deshalb habe ich die an die mosi der mmc ein 74hc08 vorgeschaltet.
der zweite eingang des und gates ist an einen extra pin angeschlossen

das ganze geht dann so :

ich sende sektor lesen an die mmc
ich lese das erste byte der mmc und schalte den extra pin auf low
ab jetzt erhält die mmc nur noch 0x00
jetzt lese ich das zweite byte von der mmc und gleichzeitig sende ich
das erste byte an den vs
das ganze 32 mal
dann auf dreq warten und das ganze wieder von vorne, bis der sektor
fertig ausgelesen ist.

um es anders auszudrücken, durch den 74hc08 ist der vs an mosi und die
mmc an miso angeschlossen.

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achsooo...jetzt is es klar.
Und die 48us(bei 1MHz SPI-Clock), die beim Senden des SingleBlockRead
Befehls draufgehen? Reicht die Zeit dafür aus?
Wenn dreq high geht dann brauch ich ja erst mal 48us bis ich mal Daten
kriege. Ist nicht bis dahin der gesamte Datenbuffer im VS leer??

Wie geht das dann, wenn Du einen Befehl an die MMC schickst? Der
Datenbus vom VS ist ja schließlich immer aktiv. Dann empfängt der die
48 Bit ja auch oder?

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und die 48us(bei 1MHz SPI-Clock), die beim Senden des SingleBlockRead
>Befehls draufgehen? Reicht die Zeit dafür aus?
>Wenn dreq high geht dann brauch ich ja erst mal 48us bis ich mal
Daten
>kriege. Ist nicht bis dahin der gesamte Datenbuffer im VS leer??
der buffer ist glaube ich 2048 gross bei den 4mhz die verwende ist das
kein problem



>Wie geht das dann, wenn Du einen Befehl an die MMC schickst? Der
>Datenbus vom VS ist ja schließlich immer aktiv. Dann empfängt der die
>48 Bit ja auch oder?

dafür gibt es bsync

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dem VS ist das also völlig wurscht, was an seinem Datenbus passiert,
solange BSYNC immer Low ist?
OK, dann wäre der Fall erledigt.
Deine Lösung ist echt super!!

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>der buffer ist glaube ich 2048 gross bei den 4mhz die verwende ist das
>kein problem

Also mein VS1001 kann nur 1MHz SPI Clock und hat nur 32Bytes "Safety
Buffer" und 32 Bytes wo man dann direkt reinschreibt, also insgesamt
64Bytes.
Außerdem geht DREQ ja erst auf High, wenn weniger als 32 Bytes im
internen Buffer sind...also nicht viel Zeit.
Haben wir irgendwie verschiedene Decoder?
Meiner heißt VS1001k..


Daniel

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir das Datenblatt zum 1001er noch nicht angeschaut, aber ich
glaube du hast da was falsch verstanden mit den 32 Byte Buffer.

Von den 4k die vorhanden sind wird die DREQ Leitung auf low geschaltet
wenn nur noch 32 Byte im Buffer sind (VS1011->hey höa ma ich brauch
Daten), dann schiebst du Daten rein bis nur noch 32 Byte frei sind und
DREQ geht wieder auf high (VS1011->willste nicht mal irgendwann
aufhören zu senden). So ist das zumindest beim 1011er. (Ich hoffe ich
habe die Logic verwechselt)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wollte schreiben: "Ich hoffe ich habe die Logic NICHT
verwechselt!"

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, das mag sein...Im Datenblatt konnte ich nichts dazu finden, wie groß
der Buffer ist.

>Also mein VS1001 kann nur 1MHz SPI Clock...
Das stimmt auch nicht   (schäm)
Ich hab im Datenblatt nochmal richtig gelesen:
ClockIN/4 ist die msx. SPI Frequenz.
D.h. bei 24,nochwas MHz könnte ich bis auf 6 MHz SPI gehen.
Hervorragend!!!

OK, ich denke meine Sorgen haben sich nun aufgelöst.

Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seite 21 in der Grafik :

"Bitstream FIFO" und darunter 16384 bits / 8 => 2048 bytes also :-)

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, ok.
Hab ich nie wirklich bemerkt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.