MP3 Player Datenstom

Gast #309650
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?
Gast #309659
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?
Gast #309661
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.
Gast #309662
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.
Gast #309663
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.
Gast #309664
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
Gast #309665
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
Gast #309666
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.
Gast #309667
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?
Gast #309668
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
Gast #309670
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
Gast #309671
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)
Gast #309673
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren