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 <-
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
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.
> 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!
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
@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.
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.