FT2232 SPI Umsetzung Problem

Gast #1036942
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
Gast #1036961
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
Gast #1037011
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.
Gast #1037107
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.