Hallo,
ich hab den Vs1011 nach dem Schaltplan im Datenblatt aufgebaut.
Nun wollte ich ihn mit dem Programm von der Yampp Seite testen.
Doch leider passiert garnichts.
Also stell ich mir die Frage, ob die Initialisierung bzw. der
Sinustest. bei dem Vs1011 sich vom Vs1001 unterscheidet.
Kann mir jemand sagen, wie ich anderst testen kann ob mein vs1011
funktioniert. (z.b Knacken wenn Strom fließt, wobei das ja beim vs1011
nicht sein sollte, laut datenblatt)
Gruß
Michael
Hi!
Ich komme über die Suche zu Deinem Thread und kann daher nicht sehen in
welchem Forum Du das gepostet hast. Daher sehe ich auch nicht, welchen
Controller Du verwendest. In meinem Testaufbau nutze ich einen ATmega32
mit internen 8MHz zusammen mit SD-Card und VS1011E auf 3.3V.
Dann kommt es darauf an, ob Du den VS im Compatibility Mode ( also mit
BSYNC) oder im New-Mode ( mit xDCS) betreibst.
Ich nutze den New-Mode, der hervorragend funktioniert und ein paar
Pinne, bzw Fädeldrähte spart.
Der Yampp nutzt, soweit ich weiß, den alten Modus, von dem VLSI
inzwischen abrät. D.h. Du solltest genau nachsehen, ob Du in dem VLSI
Datenblatt das Beispiel mit Comp-Mode oder das mit New-Mode nachgelötet
hast.
Die Änderungen an der Software sind aber nicht sehr aufwendig:
Daten gehen, wie gehabt, über SPI raus an den VS, xDCS wird aber nicht
bei jedem geraden Byte auf 0 gezogen, sondern während der kompletten
Übertragung und erst danach wieder auf 1 gesetzt. xCS bleibt auf 1
während man Daten sendet.
Für den NewMode muss man den VS1011 erst korrekt initialisieren, dazu
findet man weitere Vorgehensweisen auch im VS10xx_AN.pdf (Application
Notes) auf der VLSI Seite. Fast schon eine Schritt für Schritt Anleitung
für den Aufbau und den Software-Start. Ich habe mich nach deren Weg
gerichtet und meinen eigenen Player nahezu an einem Wochenende aufgebaut
und initialisiert. An dem Part SD->VS arbeite ich jetzt noch.
Bitte arbeite auch die Zwischenschritte ab:
VLSI rät in der AppNote dazu die Spannung am RCAP zu messen, um
festzustellen, ob der Analogteil korrekt aufgebaut und initialisiert
ist. Als ich nach Stunden der Suche immer noch keinen Sinus-Test machen
konnte, hae ich die Spannung gemessen und daran erkannt, dass im analog
Teil meiner Fädelung ein Bug stecken musste. Ein Kanal war
kuzgeschlossen durch einen defekt in der Klinkenbuchse. Nach beheben
funktionierte alles wunderbar.
Gruß, Ulrich
Hallo,
;) Aber Danke, dass du darauf geantwortet hast...
Inzwischen bin ich schon soweit, dass der Sinustest funktioniert, die
MMC-Karte kann ich auch schon auslesen.. nur wenn ich ne Mp3 abspiel
kann man den Song schon vage erkennen er ruckelt "nur" sehr stark und
scheint verzerrt zu sein...
vielleicht hast du dazu eine Lösung parrat... ;)
Hier in diesem Thread wurde mir schon sehr gut weitergeholfen mit dem
Sinustest u.v.m. :
Beitrag "vs1011 bzw. vs1001 Testprogramm"
THX Michael
Vielleicht hilft euch diese Seite weiter...
Hatte auch mal vor, mir nen mp3 player zu bauen - habs aber bleiben
lassen und mit einfacheren dingen begonnen... ;-)
lg Patrick
>> nur wenn ich ne Mp3 abspiel kann man den Song schon vage erkennen er ruckelt
"nur" sehr stark und scheint verzerrt zu sein...
Dann überprüf mal das Handling des BSYNC und DREQ Signals. Besonderst
BSYNC ist wichtig.
Wenn du auf DREQ nicht schnell genug Daten schickst dann gibt es
Aussetzer im Lied.
Hallo,
so hier mal meine sende-Funktion:
void spi_32 (char * data)
{
int i = 1;
int g = 0;
Mp3DeselectControl();
Mp3SelectData();
while(g<=512)
{
if(i == 32 )
{
printf(" wait\n");
while (!DREQ_PIN & (1<<DREQ));
i=1;
}
else
{
delay(10);
spi (*data++); // send 32 bytes
delay(10);
i++;
g++;
}
}
Mp3DeselectData();
}
void spi (unsigned char data)
{
SPDR = data;
while (!(SPSR & (1<<SPIF)));
}
An die Funktion spi_32 werden 512er Blöcke übergeben....
ich weiß einfach nicht was da los ist...
Bitte helft mir ;)
Gruß
Michael
ps: Patrick, ich sehe deinen Link nicht...
1.) while(g<=512) -> while(g<512)
sonst gehts weiter, auch wenn der Pointer schon bei 512 angekommen ist
und zählt weiter bis 544.
2.) lass das printf weg. Kann sein, dass das ungewollt sehr viel Zeit
nimmt und du deswegen auf das sinkende DREQ nicht schnell genug
reagierst.
3.) Man sieht nirgends die SPI-Initialisierung.. aber Systemtakt/4 +
Clockdoubler ist minimum angeraten. Kommt drauf an, was du für eine
Komprimierung spielst. Teste erstmal mit ner 56kBit-Datei, da ist das
Timing erstmal vernachlässigbar. Da geht auch ein 2MHz-SPI-Takt, falls
die Kabel zu lang sind..
4.) Warum heißt die Fuktion spi_32, wenn sie doch 512 Byte sendet?? Ist
da vielleicht beim Funktionsaufruf ein Denkfehler, wegen dem falschen
Namem? (kann ja sein)
5.) Mach spaßenhalber mal ein "return SPDR;" in deine SPI-Routine. Das
muss nix bewirken, kann aber. Warum, weiß ich nicht.
6.) Taktet der Decoder schnell genug?
7.) MFG :-)
hallo,
wenn du einen ASSembler code zum testen haben willst geb ich dir gerne
meinen, und wenn du mir sagst an welche ports du alles angeschlossen
hast, ändere ich den code dir gerne um, auf deine vorstellungen !!!!
noch besser du gibst mir deine Email addresse und ich helf DIR !!!!
also MIKROcontroller: ??????????????
LCD :????????????
VS1011e :ja, ich hoffe wegen NEW MODE, ansonsten auch egal
welche ports : wo ist was angeschlossen (wichtig!!) (ports)
und bitte einen schaltplan, falls ( will dir nix unterstellen)
einen fehler in der hardware hast !!!!!
((((( mein SYSTEM: atmega32 , vs1002 , USART , SD-1GB , KS0108 ,,, bis
320 KBit !!))))
BITTE fubu ;-)
Hallo,
Vielen Dank für die SUPER Tips...
der 1. Tip hat sofort Wunder gewirkt..... das Lied kann man nun sehr
gut erkennen...
-> Leider ist die Soundquali immer noch nicht berrauschend... ganz ganz
kleine Lücken; die Frequenzen sind verzerrt..
Nun habe ich versucht den SPI Speed hochzudrehen. Das funktioniert auch
wunderbar bei dem Vs1011... der kommt überall mit
Aber die MMC-Karte kann höchstens 16Mhz/64 verkraften, dannach kann ich
sie nicht mehr ansteuern...
Kann das daran liegen, dass ich zwischen Atmega und MMC-Karte so ne
Sicherheitsschaltung eingebaut habe.. (bestehend aus Transistoren und
Widerständen)
Oder an was kann das liegen?
Also nochmals vielen Dank, das hat mich einen großen Schritt
weitergebracht...
Gruß
Michael
Besorg Dir doch eine MP3-Datei mit sehr niedriger Bitrate. Wenn die dann
auch mit "Lücken" spielt, liegt es nicht an der SPI-Geschwindigkeit.
Versuche es mit einer SD-statt MMC-Karte, die kann schneller :-)
>Besorg Dir doch eine MP3-Datei mit sehr niedriger Bitrate. Wenn die dann>auch mit "Lücken" spielt, liegt es nicht an der SPI-Geschwindigkeit.
Die SPI-Geschwindigkeit dürft relativ wurscht sein, also 128k oder 256k
sind doch Peanuts, kann man das SPI überhaupt langsamer konfigurieren?
Relevant ist die Zeit, die zwischen den SPI-Transfers liegt. Ist die zu
groß, läuft der Buffer des Decoders leer und es gibt Aussetzer.
hallo,
schmeiss den level shifter russ und besorg dir nen IC, z.b. 74LVC245
oder nimm 1,8 und 3,3 kohm zum runterregeln der signale.
das funzt auf jeden und sollte bei ner MMC/SD mindestens 8MHZ SPI
laufen,
und höher.
hallo,
@jens ------>
der SPI takt ist net wurscht weil bei nem 256kbit MP3 muss der takt
auch dann mindestens 256k bei dem ATMEGA eingestellt sein, momentan sind
es bei ihm ja nur 250k --> (16mhz/64).
dazu kommt das der VS intern die daten auch noch verarbeiten muss, siehe
DREQ also muss er noch schneller sein >256k um überhaupt genug reserven
zu haben um auf DREQ zu warten.
ausserdem har er sicher net das ganze lied auf den MC gezogen und
überträgt dann, sondern sicher überträgt er 512byte(je nach CMD_17) von
der MMC zum MC und dann erst die 32byte häppchen zum VS, also schon
minimum mehr als doppelten speed brauch er also <512k
empfehlenswert wäre es SPI net unter 1Mhz !!!
gruss
So hallo,
ich hab die Schaltung dazwischen weggelassen... Die MMC karte wird dann
aber garnicht erkannt.
Jetzt hab ich die Schaltung wieder "eingebaut"..
Damit ihr euch eine Meinung BILDen ;) könnt, hab ich 2 Tracks recorded
und angehängt.
In diesem Anhang ist die 128 kbs Version..
Gruß
Michael
Und für die Wenigen unter euch die das Lied nicht kennen ;)
Hier das Original: das gabs mal zum Downloaden auf der Bandseite
<- Legal
Leider nur die 32 kbs version, da das original zu groß ist
also die ersten zwei uploads sind Aufnahmen vom VS1011
der hier (der dritte) ist das original, nur auf 32 kbs
heruntergeschraubt.
Gruß
Michael
hallo,
der SPI takt hat was in dem sinne mit der SPannung zu tun,
das du einen avr mit 5volt auf 16mhz takten kannst, also SPI=8mhz
und wenn du nur 3,3volt hast max. takt laut datenblatt 8mhz, also 4mhz
SPI.
alles klar mädels.
Hallo,
ich bin noch nicht weitergekommen....
ich hab mir jetzt immer die Daten auf dem PC speichern lassen, welche
der uc von der mmc karte an den vs1011 schickt...
und die Daten stimmen genau mit der MP3- Datei ein....
da es sich aber so anhört, als ob was fehlen würde, wollt e ich mal
fragen, ob es eine möglichkeit gibt sich ausgeben zu lassen was beim
vs1011 angekommen ist...
um dann vllt. zu sehen obs da n problem gibt...
kann mir noch irgendjemand n tipp geben, was ich ausprobieren könnte....
Das beste wär natürlich ein "einfacher" c-code, bei dem MMc vs1011 und
Atmega 32 verwendet wird....
so long...
Michael
Eigentlich hast du alle nötigen Tips schon bekommen.
Musst du nur noch ausfiltern:
Aussetzer: SPI Speed zu langsam. Buffer vom VS läuft leer.
Wenn der leer ist kommt halt kurze Zeit nichts mehr.
Hardware verträgt nicht mehr SPI Speed: Neue bauen.
Bessere Levelshifter benutzen.
Bei 4MHz CPU- und 2MHz SPI-Takt kann ich bis zu
224kBps abspielen. Wenn du immer noch mit 250kHz
SPI Speed rummachst ist es kein Wunder das du nicht
weiter kommst.
Hallo,
Hab nach dem FET von AUK FDV310N gesucht hab ihn aber nirgends
gefunden...
Kann mir einer ein vergleichbares Model nennen, welches bei Reichelt zu
haben ist..?
Kann man da in beide Richtungen arbeiten?
Also von 3,3 nach 5 Volt, und von 5 nach 3,3 Volt (mit der gleichen
Schaltung? Oder muss man da den FET anders einbauen, oder geht das
garnicht?)
Vielen Dank schonmal im Vorraus
Hallo,
ich geb jetzt auch mal meinen Senf dazu ^^
Wie groß sind die Delays ums eigentliche Senden der Daten? Was sollen
die überhaupt bezwecken?
gruß Gast ^^
So Hallo,
lange nichts mehr von mir gehört... :)
Also ich hab mich jetzt nach langer Zeit mal wieder an das Projekt
gesetzt und siehe da, schon gleich das erste Problem gelöst:
Ich kann den SPI Takt jetzt voll ausschöpfen.
Nun passiert aber folgendes:
Wenn ich die MP3 bei vollem SPI Speed übertrage hört sich das an wie
vorwärtsgespult...
Wenn ich die SPI Übertragungsrate so wähle, dass sie nahe an die Bitrate
der Mp3 Datei kommt hört sich das schon ganz in Orndung an...
Was mach ich da falsch?
Ich dachte der VS1011 erkennt automatisch was für ne Bitrate vorhanden
ist und steuert dementsprechend auch die ganze Datenzufur (Dreq...)
Hab auch schon verschiedene Register ausgelesen (HDAT0/1, Audat...)
und da kommen die richtigen Bitraten raus.
Hier mal mein Sendecode:
1
uint8_tbuffer[32];
2
while(fat_read_file(fd,buffer,sizeof(buffer))>0){
3
while(!DREQ_PIN&(1<<DREQ)){}
4
unselect_card();
5
Mp3SelectData();
6
for(uint16_ti=0;i<32;++i){
7
vs_send_byte(buffer[i]);
8
}
9
Mp3DeselectData();
10
select_card();
11
}
das ganze ist natürlich schön in Roland Riegels Library eingebettet.
Wie schon erwähnt, folgendes wird verwendet:
Atmega32 mit 16MHz
Vs1011 mit 12.288MHz
clockf wird mit clock doubler initialisiert.
es wird der new_mode verwendet.
Kennt jemand das Problem?
Wer verrät mir die Lösung? :)
Grüße
Michael
Nice!!!!!
Das hat die Sache schonmal sehr verbessert!!!!
Merci!!!!
Natürlich gehts gleich weiter....
Wenn ich jetzt den SPI Speed auf 16MHz / 8 = 2MHz einstelle funtionierts
eigentlich ganz gut. Es hört sich nur sehr "digital" an. So als ob die
MP3 sehr schlecht konvertiert worden wäre.
Und die Frequenzen sind auch verzerrt.
Was könnte da falsch laufen?
Stell ich den SPI Speed auf 16MHz / 4 = 4MHz einstelle wird auch die MP3
doppelt so schnell abgespielt. Woran könnte das liegen?
Weil nach Datenblatt soll man den SPI Takt ja auf CLKI/6 also ca. 4MHz
einstellen...
Es grüßt wieder
Michael
Sodale
das ganze scheint irgendwie mit dem Kopfhörer zusammenzuhängen...
Je nachdem wie ich dran rumwackle läufts wunderbar oder halt weniger
gut.
:) Ja es ist ein Steckboard :) (wird sich aber hoffentlich bald
ändern!!)
Kann mir jemand sagen, wie ich die Kopfhörer am Besten anschließe?
Hab im Inet mehrere Möglichkeiten gefunden:
http://www.mikrocontroller.net/attachment/49027/VS-Schaltung.PNGhttp://members.liwest.at/dobretsb/stephan/mp3/schematic.png
Mein Vs1011 ist im SOIC-28 Gehäuse -> also kein GBUF vorhanden.
So und nochmals vielen vielen dank an Holger!!!!!!
Grüße
Michael
Wenn du den Clockdoubler verwendest musst du, nachdem du ins
Clock-Register geschrieben hast noch ein anderes (ich glaub es war
Audata, steht aber im Datenblatt/Appnote) beschreiben, damit der
Clockdoubler übernommen wird. Was du reinschreibst ist glaub ich egal,
aber du muss einen Schreibzugriff generieren.
Clock/6 ist die Obergrenze. Drunter ist alles erlaubt. Man muss halt die
Daten rüberkriegen, aber ein kleinerer Takt ist im allgemeinen
störsicherer.
Ich bin mir jetzt auch nicht sicher, ob Clock/6 auf den interne (also
24,...MHz) oder den externen (also 12,...MHz) bezieht. Schau das besser
nochmal nach.
Sebastian
Kennst du schon das:
http://www.vlsi.fi/uploads/media/vs10XXan_output_01.pdf
Hab momentan Bild 7 noch ohne Mute nachgebaut. GBUF gibts ja nicht, wenn
ich mich recht entsinne hab mich dann auch nicht weiter drum gekümmert.
Die Gleichanteile werden ja über die Serien-Cs gefiltert. Der sinn von
GBUF war ja glaub ich nur, die Ausgänge DC-frei zu bekommen.
Was ich dir auch sehr empfehlen kann (falls du es noch nicht kennst:
http://www.vlsi.fi/uploads/media/vs10XXan.pdf
Sebastian