Forum: Mikrocontroller und Digitale Elektronik FT2232 SPI Umsetzung Problem


von Frank (Gast)


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

von Ralf (Gast)


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

von Frank (Gast)


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.

von Ralf (Gast)


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

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.