Forum: Mikrocontroller und Digitale Elektronik FT245R Datenrate zum PC zu langsam


von Reinhard D. (yum)


Angehängte Dateien:

Lesenswert?

Hallo,

mein System:
Pc mit c# programm <-> ft245r <-> cpld

ich verwende den ftd2xx treiber und betreibe den ft245r im normalen
fifo-mode, also nicht bit-bang.

das cpld macht nichts anderes, als immer, wenn txe# vom ft245r low ist,
das wr signal kurz H zu pulsen, um den internen buffer des ft245r zu
beschreiben. alle timings sind eingehalten.
soweit so gut, nur wenn ich mit meinem c# programm den buffer des
treibers zyklisch abfrage, sind dort immer nur ca. 2kbyte daten pro
sekunde drinnen. also ist mein bottleneck der transfer vom ft245r zum
pc.
schaue ich mir wr und txe# mit dem logic-analyser an, so werden nach dem
start rasch ca. 250 byte in den ft245r reingeschrieben, aber dann nur so
ca. 2 byte pro 1 ms (usb - time-slot???) - und txe# ist meistens H, was 
ja bedeutet, dass die übertragung vom internen buffer des ft245r zum pc 
hin ein bottleneck ist.

Komischerweise habe ich in die andere richtung (pc --> ft245r --> cpld) 
keine probleme und erreiche, bei entsprechender einstellung des 
driver-buffers bis zu 1Mbyte/s.


Wer hat eine Idee?

von Gerry L. (Gast)


Lesenswert?

Ohne den relevanten Code Ausschnitt wird dir keiner helfen können.
Normalerweise sendet der FT245 sofort an den PC weiter wenn WR high ist.

PS: USB hat von Hause aus Latenz Zeiten von ich glaub 30 ms.

von Ralf (Gast)


Lesenswert?

> Normalerweise sendet der FT245 sofort an den PC weiter wenn WR high ist.
Richtig, aber:

> wenn ich mit meinem c# programm den buffer des treibers zyklisch abfrage
Ich denke, du musst Ereignisbasierend arbeiten.

Ralf

von Reinhard D. (yum)


Lesenswert?

Ralf schrieb:

>
>> wenn ich mit meinem c# programm den buffer des treibers zyklisch abfrage
> Ich denke, du musst Ereignisbasierend arbeiten.
>
> Ralf

Hallo Ralf,
bitte was meinst du mit Ereignisbasierend?
ich polle den buffer des treibers alle 1sec. und dann sind dort nur 2000 
byte drinnen, die ich dann rauslese; polle ich alle 100ms, so bekomme 
ich 200 byte... (bei 64kb max. buffergrösse also kein problem)

lg
yum

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.