Forum: Mikrocontroller und Digitale Elektronik Erfahrungsaustausch: Vinculum VNC1L über SPI ansteuern


von Peter (Gast)


Lesenswert?

Hallo,
Bisher hatte ich meinen Vinculum über RS232 angesteuert, was gut klappt. 
Jetzt möchte ich es mal mit SPI versuchen. Im Prinzip geht es schon, 
aber einige Problemchen stören mich sehr:

1. Ich komme nicht über 90kHz Clock-Frequenz. Gehe ich höher, hängt sich 
der Chip weg (Kann an meinem Versuchsaufbau liegen, habe 20cm Leitungen)
2. Aus unerfindlichen Gründen versteht er hin und wieder Kommandos 
nicht. Es geht etwa 100 mal gut, dann gibt er mir ein "Bad Command" und 
danach geht es wieder für 'ne gewisse Zeit (Vielleicht auch mein 
Versuchsaufbau?).
Aber jetzt:
3. Die Dokumentation scheint nicht zu stimmen. Das Statusbit und die 
Daten sind beim "Slave Data Read" bei mir um eine Stelle nach links 
geschoben.
4. Das Statusbit beim "Slave Data Write Cycle", das anzeigt, ob das Byte 
erfolgreich gesendet wurde, bekomme ich garnicht (ist bei mir immer 1, 
was heissen soll, dass nichts geklappt hat, aber trotzdem geht es).

Ich habe auch schon hier und im Internet gesehen, daß viele Probleme mit 
dem Vinculum SPI haben, dafür geht's bei mir noch recht ordentlich.

Der Master ist ein LPC2366, Der VNC1L hängt am SSP0
Ich sende 13 Clocks per Frame. Auch schon mit 14 versucht, aber ohne 
Erfolg.

Wer hat ähnliche Probleme bzw. kann weiterhelfen?
Danke...
 -> Peter <-

von Peter R. (gelb)


Lesenswert?

Hallo Namensvetter,

ich steuere meinen VDRIVE2 nicht mit festem Takt an, sondern so schnell 
es in AVR-Assembler mit Software-SPI und 7,37MHz eben geht, nämlich etwa 
1MHz.

Zu Anfang hatte ich das Timing-Diagramm etwas misinterpretiert und öfter 
Aussetzer kassiert. Inzwischen läuft es stabil.

Also: CS und SDI high setzen, Takt kurz mal high, das war zum aufwachen 
der erste von 13 Takten.
Dann folgen R/W, Adresse und 8 Datenbits, macht weitere 10 Takte. Nach 
diesen Takten steht bereits der Status in SDO, weil er mit der fallenden 
Flanke Daten in den SDO stellt.  Dann ein weiterer Takt mit CS = high 
und der letzte mit CS = low. Das wars.

Allerdings dauern manche Dateisystemfunktionen unverständlich lange (bis 
über 60 Sekunden), da muss das Timeout ensprechend geduldig ausgelegt 
werden.

Grüße, Peter

von Peter (Gast)


Lesenswert?

Hallo Peter,

> Software-SPI und 7,37MHz
Ich hatte gehofft aus Software-SPI verzichten zu können... :-(
Aber ~7Mhz sind schon mal was. Immerhin ein Hinweis, dass mit meinen 
lächerlichen 90kHz irgendwas nicht stimmen kann.

> Allerdings dauern manche Dateisystemfunktionen unverständlich lange (bis
> über 60 Sekunden), da muss das Timeout ensprechend geduldig ausgelegt
> werden.
Das hört sich übel an. Kommen die 60s vielleicht daher, weil du eine 
gewisse Zeit den VNC1L nicht oder nur sehl langsam pollst?
Er puffert wohl seine Ausgaben und friert scheinbar ein, wenn man ihn 
auf SPI konfiguriert hat und nicht pollt.

von Matthias (Gast)


Lesenswert?

http://www.mikrocontroller.net/articles/USB-Stick_am_Mikrocontroller
Verwendet auch SPI, vielleicht von Interesse.

von Peter (Gast)


Lesenswert?

> http://www.mikrocontroller.net/articles/USB-Stick_...
Danke, aber der verwendet auch Pin-getoggle.
Ich habe übrigens das Hauptproblem gefunden: Nach dem Raustakten des 
letzten Bits, muss CS noch eine ganze Weile "high" sein (anders als im 
dem Timing-Diagramm des Datanblatts). Ich muss nur noch rausfinden *wie 
lange*
Jetzt kann ich ihn jedenfalls mit 12Mhz clocken!

von Peter R. (gelb)


Lesenswert?

Peter schrieb:

> Das hört sich übel an. Kommen die 60s vielleicht daher, weil du eine
> gewisse Zeit den VNC1L nicht oder nur sehl langsam pollst?

Ich polle auf Teufel komm raus, bis entweder Timeout oder Daten kommen.
Im Detail hatte ich folgendes Problem: ich habe nach dem Öffnen einer 
neuen Datei nicht lange genug auf einen Prompt gewartet, sondern gleich 
Daten versendet. Dann blockert das ganze komplett.
Es stellte sich heraus, dass es regelmäßig fast 20 Sekunden dauerte, bis 
die erste neue Datei offen und bereit zum Schreiben war. Bei den 
weiteren Dateien nur 1 Sekunde. Später habe ich das Timeout bis auf 60 
Sekunden verlängert.

Grüße, Peter

von Peter (Gast)


Lesenswert?

@Peter Roth:

Gut zu wissen. Ich benutze meinen Vinculum momentan nur, um ein 
USB<-->RS232 Interface in einem fertigen Gerät anzusprechen.
--> Beitrag "USB: Vinculum Host mit CP2102 verbinden"
Später will ich auch mal Speichersticks benutzen, aber dafür verwende 
ich dann mein eigenes Filesystem und der Vinculum wird nur Sektoren 
lesen/schreiben müssen.

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
Noch kein Account? Hier anmelden.