FT232 und RS232 Geschwindigkeit.

Gast #1935083
Lesenswert?

Hallo,

ich habe ein wenig mit dem COM Port meines Rechner herum gespielt. Ich 
schalte per C# nur den RTS Port high low. Ohne irgendwelche Waits oder 
Timer.
Ich denke kürzer geht es nicht und es müßte doch die maximale Frequenz 
dabei heraus kommen.

private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.Open();

            while (true)
            {
              serialPort1.RtsEnable = true;

                serialPort1.RtsEnable = false;
            }

wenn ich nun den eingebauten RS232 Port meines Rechners benutze, 
schaltet RTS etwa mit 10kHz. Benutze ich nun einen FT232 (FTDI) komme 
ich gerade auf 70Hz!! und das mit dem gleich Code auf dem gleichen 
Rechner. Wie kommt das? Kann ich das beschleunigen auf die wenigsten 
10kHz der RS232. Eigentlich brauche ich 20kHz.

Danke
Andreas
Persönliche Seite #1935157
Lesenswert?

Der Grund ist einfach.
Beim physikalischen RS232-Port kannst du mit einem Portzugriff direkt an 
einem Pin wackeln. Hierzu muss lediglich ein Byte an eine bestimmte 
Adresse geschrieben werden.

Um ein Pin über USB zu setzen muss immer ein komplettes Datenpacket 
verschickt werden. Das dauert halt seine Zeit. Aus genau diesem Grund 
sind einfache Parallelport-ISP-Adapter nicht an einem USB-Port möglich 
(oder nur bedingt einsetzbar).
Gast #1935405
Lesenswert?

Andreas schrieb:
> Schade, würd mich mal interessieren warum?

Die Übertragung von Daten findet bei USB blockweise im 1ms-Zeitraster 
statt.
-> die theoretisch maximale Frequenz wenn nur ein USB-Teilnehmer am 
gleichen Controller sitzt wäre 500 Hz.

http://www.ftdichip.com/Support/Documents/AppNotes/AN232-04.pdf

im Bit-Bang Mode des FTDI sollten unter gleichen Voraussetzungen (kein 
weiterer Busteilnehmer optimiertes Zusammenspiel von Betriebssystemtick 
16ms? zu USB-ticks 1ms sowie optimierte Transferbuffergrößen) ca 30kHz 
drin sein. (1 ms * (64-2) Bytes).

http://www.ftdichip.com/Support/Documents/AppNotes/AN232R-01_FT232RBitBangModes.pdf

Gruß Anja
Persönliche Seite #1936113
Lesenswert?

Anja schrieb:

> http://www.ftdichip.com/Support/Documents/AppNotes/AN232-04.pdf
>
> im Bit-Bang Mode des FTDI sollten unter gleichen Voraussetzungen (kein
> weiterer Busteilnehmer optimiertes Zusammenspiel von Betriebssystemtick
> 16ms? zu USB-ticks 1ms sowie optimierte Transferbuffergrößen) ca 30kHz
> drin sein. (1 ms * (64-2) Bytes).
>
> 
http://www.ftdichip.com/Support/Documents/AppNotes/AN232R-01_FT232RBitBangModes.pdf
>
> Gruß Anja

Also ich hab jetzt schon etliche Projekte mit diesen Bausteinen 
realisiert (aktuell bin ich auch wieder an einem dran) und muss das 
zumindest anzweifeln. Ein USB-Paket braucht auf meiner Kiste mind. etwa 
80ms (hab es irgendwann mal gemessen) um zu uebertragen werden und zwar 
unter guten Voraussetzungen.

Ausserdem ist es sinnlos, sich auf so etwas verlassen zu wollen, selbst 
wenn es auf der eigenen Kiste funktioniert. Man weiss nie, unter welchen 
Bedingungen der Endbenutzer das Geraet einsetzen will, vielleicht hinter 
zwei Hubs mit ein dutzend anderer Geraete. Man sollte also immer vom 
Schlechtfall ausgehen wenn man was zuverlaessiges machen will.

Greets,
Michael

P.S. Diese ganzen FTDI-Chips sind ne ziemliche Magie, zuverlaessig is 
auch was anderes ;)
Gast #1936216
Lesenswert?

Michael G. schrieb:
> Ein USB-Paket braucht auf meiner Kiste mind. etwa
> 80ms (hab es irgendwann mal gemessen) um zu uebertragen werden und zwar
> unter guten Voraussetzungen.

Da machst Du irgendwas falsch das wären ja noch nicht mal 9600 Baud.
Du darfst die Bytes nicht einzeln auf die Reise schicken sondern in 
vielfachen von 64*62 = 3968 Bytes bei korrekt eingestellter 
Transferbuffergröße im D2XX Treiber-Mode.


Siehe auch:

http://www.ftdichip.com/Support/Documents/AppNotes/AN232B-03_D2XXDataThroughput.pdf

http://www.ftdichip.com/Support/Documents/AppNotes/AN232B-04_DataLatencyFlow.pdf

Gruß Anja
Persönliche Seite #1936228
Lesenswert?

Anja schrieb:
> Michael G. schrieb:
>> Ein USB-Paket braucht auf meiner Kiste mind. etwa
>> 80ms (hab es irgendwann mal gemessen) um zu uebertragen werden und zwar
>> unter guten Voraussetzungen.
>
> Da machst Du irgendwas falsch das wären ja noch nicht mal 9600 Baud.
> Du darfst die Bytes nicht einzeln auf die Reise schicken sondern in
> vielfachen von 64*62 = 3968 Bytes bei korrekt eingestellter
> Transferbuffergröße im D2XX Treiber-Mode.

Haha... Du bist mir ne echte Heldin :P
Das bringt's Dir beim Bitbanging bzw. bei der Flusskontrolle natuerlich 
voll.

Mit meiner letzten Methode hab ich den FT232 sogar schon bei 1MBaud 
zuverlaessig zum Laufen gebracht. Wer ueberbietet mich?

P.S. Den D2XX-Treiber verwende ich nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren