vs1011 bzw. vs1001 Testprogramm

Gast #272501
Lesenswert?

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
(Firma: DC3AX) #481491
Lesenswert?

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
Gast #484016
Lesenswert?

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
Gast #485857
Lesenswert?

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...

Gast #485875
Lesenswert?

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 :-)
Gast #485934
Lesenswert?

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 ;-)

Gast #487154
Lesenswert?

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
Gast #490524
Lesenswert?

>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.
Gast #490541
Lesenswert?

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.
Gast #490546
Lesenswert?

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
Gast #490941
Lesenswert?

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
Angehängte Dateien:
Gast #490948
Lesenswert?

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
Angehängte Dateien:
Gast #491017
Lesenswert?

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.
Gast #569007
Lesenswert?

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
Gast #569060
Lesenswert?

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.
Gast #617440
Lesenswert?

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
Gast #1266301
Lesenswert?

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_t buffer[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_t i = 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
Gast #1266341
Lesenswert?

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
Gast #1266368
Lesenswert?

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.PNG

http://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
Gast #1266376
Lesenswert?

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
Gast #1266388
Lesenswert?

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

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