VS1011e abspielen von MP3 klappt nicht :(

Gast #2151972
Lesenswert?

Hallo.

Ich will mit dem VS1011 einen MP3 Player bauen (Was für'n Wunder). 
Sinustest KLAPPT!! Lesen und schreiben aus Registern somit auch

jetzt hab ich mich an das Abspielen von MP3's gewagt und überraschung: 
Es klappt nicht.


Im Anhang findet ihr meinen Code.

er ist so aufgebaut:
Ich initialesiere PORTS, SPI und den VS1011e. Dann kommt ein Kommentar, 
in dem der Sinustest wäre (Wird nicht mitkompiliert, da Kommentar)
Dann kommt das Unterprogramm "decode". Dieses soll die kurze MP3 aus dem 
Flash lesen und ausgeben.

Das ganze in Dauerschleife.
Ich mache nach jeder Übertragung ein Hardwarereset.


Aber ich kann nichts hören. Nur das "Knacken" nach dem Reset

Ist vielleicht noch ein Programmfehler?


würde mich freuen, wenn sich das einer mal anschauen könnte.

Gruß M.H.
Angehängte Dateien:
Gast #2154736
Lesenswert?

Habe gerade gemerkt, dass der Sinustest doch NICHT funktioniert!
Habe mal nachgerechnet:

0x7D => 0b011            11101
           ^               ^
           |               |
Samplerate: 22050      Wert: 29


alles verrechnen: Sampelrate×(Wert/128 )= 22050×(29/128) = 4995,7Hz
Also:  Periodendauer T= 1/4995,7 = cà. 0,2ms

Wenn ich aber mit dem Oszi nachmesse komme ich auf eine Periodendauer 
von
T= 0,14ms

Woran liegt das?
Wäre echt dankbar für ein paar Antworten.
Gast #2154830
Lesenswert?

So.
Ich hatte doch noch einen Schaltplan oder  besser gesagt die .brd Datei

Ich hab die Platine mal als png exportiert und in den Anhang getan.
Man muss dazu sagen: Die SMD-Widerstände und co haben im endgültigen 
Layout ein anderes Raster, nicht wie hier gezeigt.
Angehängte Dateien:
Gast #2154883
Lesenswert?

Hi,
ich könnte dir passende Sourcen zum testen zusammen kopieren zum testen.
Wie bei dir nen At32, allerdings nen VS1002.
Müsstest also in den New_Mode vom 1011 schalten, damit mein Code 
kompatibel wäre.

Und hier nochmal nen paar Denkanstösse:

-Liegen an den VCC pins 3,3 Volt und Reset state is Ok. Schwingt der 
Quarz? Alle GPIO'S vom VS1011 angeschlossen, also kein hängt frei rum. 
TEST und RX Pin müssen High state haben.

- New_Mode ausgewählt?

- pull up am Chip select

- XCS and XDCS sollten niemals NULL zur gleichen Zeit haben

- checkst du den DREQ Pin vor jeden Übertragen von Bytes?

- ALLOW_TESTS bit gesetzt in MODE register.

- GBUF hat 1.25 volts.

- Verify that you can hear a beep.

So da haste erstmal genug zum checken,
Gruß.
Gast #2154974
Lesenswert?

OK. Hab das gecheckt. New Mode is drin, pull up am cs auch, DREQ wird 
auch gecheckt,  Quarz schwingt glaub ich, sonst würde ja der falsche 
sinustest auch nicht laufen. Allow_tests ist gesetzt, GBUF ist bei 
dieser version des VS1011 nicht vorhanden.

Also alles wie es sein soll.UND: Ich höre einen Beep. FDieser hat jedoch 
nicht die Frequenz die er haben sollte.


Gruß bambel2
Gast #2166384
Lesenswert?

habe es jetzt so gemach, dass ich am Anfang des songs die 
Daten-Chipselect-Leitung auf low ziehe und am ende wieder auf high. 
Jetzt höre ich ein Brummen. Das Reset-knacksen ist auch nicht mehr zu 
hören und der vs1011 zieht nur 6mA.

Beim Sinustest zieht er fast 16mA.

Gruß bambel2
Gast #2212631
Lesenswert?

OK. Dieser Thread ist hiermit geschlossen, da ich das Problem gefunden 
habe.

Der Compiler baut in mein "array" immer ne 0 hinter jedes Byte. hab dann 
adiw zh:zl, mit adiw zh:zl, 2 getauscht.

Jetzt gehts.... fast

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