mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FT2232 SPI Umsetzung Problem


Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin gerade dabei eine USB zu SPI Umsetzung zu bauen und benutze den 
FT2232 von FTDI, und nutze den Chip im MPSSE Modus. Ich will etwas auf 
dem SPI Bus senden und gleichzeitig zurücklesen. Ich sende z.B. 10 Byte 
und lese 10 Byte zurück. Das funktioniert auch alles wunderbar. Aber 
wenn zwischen den einzelnen Sendeereignissen weniger als 10ms liegen, 
empfange ich manchmal nur z.B. 8 Byte. Wenn ich aber vor dem erneuten 
senden die Schnittstelle über FT_Close schließe und erneut wieder öffne 
empfange ich fehlerfrei. Woher kommt es also, daß ich manchmal zuwenig 
Zeichen empfange? Muß ich vorher irgendeinen Puffer leeren?

MfG Frank

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Aber wenn zwischen den einzelnen Sendeereignissen weniger als 10ms liegen,
> empfange ich manchmal nur z.B. 8 Byte.
Was ist bei dir ein Sendeereignis? Ein einzelnes Byte, oder das Senden 
der erwähnten 10 Bytes?

> Wenn ich aber vor dem erneuten senden die Schnittstelle über FT_Close
> schließe und erneut wieder öffne empfange ich fehlerfrei. Woher kommt es
> also, daß ich manchmal zuwenig Zeichen empfange? Muß ich vorher
> irgendeinen Puffer leeren?
Nach meiner Meinung kannst du nicht davon ausgehen, dass der 
Sendevorgang (und bei SPI somit auch der Lesevorgang) abgeschlossen ist, 
wenn du in deiner Software den Befehl fürs Senden abgeschlossen hast.

Wenn ich mich recht erinnere, kann man prüfen, wieviele Bytes aktuell im 
Buffer angekommen sind, d.h. du könntest abfragen, ob genausoviele Bytes 
angekommen sind wie du rausgepustet hast, und erst dann den Buffer 
auslesen.

Ralf

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn ich mich recht erinnere, kann man prüfen, wieviele Bytes aktuell im
> Buffer angekommen sind, d.h. du könntest abfragen, ob genausoviele Bytes
> angekommen sind wie du rausgepustet hast, und erst dann den Buffer
> auslesen.
Hab ich jetzt gemacht und jetzt funktioniert es auch. Der Computer war 
also schneller mit dem abarbeiten der Befehle, als das der SPI Bus 
bedient wurde.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hab ich jetzt gemacht und jetzt funktioniert es auch. Der Computer war
> also schneller mit dem abarbeiten der Befehle, als das der SPI Bus
> bedient wurde.
Gut, freut mich dass es geklappt hat. Ist irgendwie auch logisch, da du 
dein SPI bestimmt mit weit weniger Speed betreibst, als bei USB möglich 
ist :)
Daher dann auch der Versatz.

Ralf

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.