www.mikrocontroller.net

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


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 <-

Autor: Peter Roth (gelb)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/articles/USB-Stick_...
Verwendet auch SPI, vielleicht von Interesse.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Peter Roth (gelb)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.