Forum: Mikrocontroller und Digitale Elektronik FT232RL mit 1Mbaud, PC zu langsam??!?!


von domi (Gast)


Lesenswert?

Hallo,

ich muss eine große Datenmenge (bis zu mehrere hundert MB) seriell 
übertragen. Dazu verwende ich einen FT232RL angeschlossen am ATmega324P 
(16Mhz). Baudrate ist 1MBaud. Wenn ich größere Datenblöcke, z.B. 50kB 
direkt übertrage (vom ATmega324P zum PC) kommt es vor, dass ab und zu 
genau 1024 Bytes Frame-Error aufweisen (zeigt zumindest Hterm an).
Ich verwende kein Handshaking und keine Paritybits. Kann es sein, dass 
der PC zu langsam ist und es zum Buffer overflow kommt? (Wie findet man 
sowas raus? Ansteuerung der seriellen Schnittstelle erfolgt unter 
Windows mit den API-Funktionen.)

Hat sonst jemand Erfahrungen bei großen Datenmengen und hohen Baudraten 
mit dem FT232RL?

Gruß,
Domi

von Max (Gast)


Lesenswert?

In der Systemsteuerung steht max. 115200 Baud und das ist ja wohl << 
1MBaud.
Mag sein das die FIFO mehr kann, aber ob z.B. Windows da Bock drauf hat, 
steht in den Sternen

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein, das tut es nicht. Windows unterstützt sehr wohl auch serielle 
Schnittstellen mit höheren Baudraten als 115200, nur die 
Standard-Schnittstellen, wie sie in PCs vorhanden sind, tun das nicht.

Probleme bei der Verwendung hoher Baudraten sind auf zu kleine 
übertragene Datenblöcke zurückzuführen, das ist insbesondere bei 
USB-Übertragung ein Thema, da dort nur im Millisekundentakt überhaupt 
Datenpakete übertragen werden. Hinzu kommt die Granularität des 
Windows-Schedulers, die normalerweise bei 10 msec liegt und auch nur auf 
1 msec reduziert werden kann.
Also müssen die Pakete ausreichend dimensioniert sein, um die Datenmenge 
einer (oder gar 10) Millisekunde(n) aufnehmen zu können und auch die auf 
der Clientseite des PCs verwendete Applikation muss entsprechend große 
Datenblöcke von der seriellen Schnittstelle abnehmen. Lesen und 
Verarbeiten einzelner Bytest ist da definitiv nicht angesagt.

von domi (Gast)


Lesenswert?

Ich lese immer Blöcke von 514 Byte (512 Byte Daten + 2 Byte Checksumme). 
Allerdings kann es sein, dass die Checksumme, also die zwei letzten 
Bytes, etwas verzögert gesendet werden.

Das merkwürdige ist ja, dass ich auf einem alten Notebook (IBM, T20 mit 
Win2000) gar keine Probleme habe. Auf meinem neuen Notebook (Samsum X20 
mit WinXP) treten die oben beschriebenen Fehler auf.

von arc (Gast)


Lesenswert?

Handshake sollte immer gemacht werden (RTS/CTS oder DTR/DSR), da so gut 
wie immer die Möglichkeit besteht, dass die Sende/Empfangspuffer 
überlaufen können.

> Ich lese immer Blöcke von 514 Byte (512 Byte Daten + 2 Byte Checksumme).
> Allerdings kann es sein, dass die Checksumme, also die zwei letzten
> Bytes, etwas verzögert gesendet werden.

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

von Cute Knut (Gast)


Lesenswert?

Der PC ist definitiv nicht zu langsam. Ursache dürfte hier HTerm, ein 
schlechtes Übertragungsprotokoll und der FTDI-Treiber sein.

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.