FT232 und RS232 Geschwindigkeit.

Gast #1935083
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
Gast
>Benutze ich nun einen FT232 (FTDI) komme
>ich gerade auf 70Hz!! Wie kommt das? Kann ich das beschleunigen auf die 
>wenigsten 10kHz der RS232.

Nein, das kriegst du bei USB nicht hin.
Persönliche Seite
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
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
Gast
ist ja interessant. Bei mir hängt mittlerweile einiges am USB Port.

Danke für eure Antworten und die Links. Da werd ich noch ein bischen 
lesen.

Gruß
Andreas
Persönliche Seite
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
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
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

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.