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
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?
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
Wie wärs mit (Dateigrösse in Bits)/Bitrate des Songs ? Dann hast du als ergebnis die Länge in Sekunden.
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.
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
Laufen tut mein Projekt noch nicht. Ich puffere die Daten aber zwischen. Damit soll es dann dauch möglich werden, Playlisten zu verarbeiten.
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
Hallo John... Mich würd die I2C-Button-Erweiterung interessieren. Kannst du mal bitte einen Schaltplan posten? Danke Tommy
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?
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.
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.
@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.
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
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
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.
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?
>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
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!!
>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
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)
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.
Seite 21 in der Grafik : "Bitstream FIFO" und darunter 16384 bits / 8 => 2048 bytes also :-)
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.