schnelle Serielle Schnittstelle mitloggen

Gast #5438861
Lesenswert?

Serial schrieb:
> oder möglicherweise
> ganz andere Fehlerquelle, der FTDI Chip liefert nicht schnell genug

Du kennst doch Deine Baudrate (welche??) und hast zugriff aufs 
Equipment.


Falls möglich, nimm doch einfach mal 1Mbit oder so. Vielleicht sind ja 
auch Pegelprobleme. Nimm also 2 USB/Seriell-Adapter und lass den einen 
senden den anderen empfangen und schaue, ob PC-SW / Chips OK sind. .
Gast #5438898
Lesenswert?

> Also HTERM kommt da irgendwie nicht hinterher

Das kann ich mir gut vorstellen.
Ich würde unter Linux versuchen, mit einem copy Befehl (oder dd) direkt 
vom seriellem Port in eine Datei zu kopieren.

Beim Testen/Debuggen benutze ich aber normalerweise geringe Baudraten 
(vorzugsweise maximal 9600). Erst wenn alles klappt, stelle ich dann auf 
höhere Baudraten um. Leider hat man nicht immer die freie Wahl.
#5438915
Lesenswert?

USB UART Kommunikation auf einem bereits etwas betagten Windows System 
in eine Datei zu loggen, ist mit vielen Terminal Programmen (ich benutze 
dafür gerne putty mit der Log All To File Option) erfahrungsgemäß bis 
6MBaud kein Problem. Sollte dein USB/Seriell Wandler einen der 
einfacheren Chips wie den FT232R besitzen, bist du jedoch auf 3MBaud 
maximal limitiert, wobei 1, 2 und 3 MBaud nur noch in vollen MBaud 
Schritten zu wählen sind - deine 2.4MBaud würden damit also nicht 
funktionieren. Du bekommst normalerweise keine Fehlermeldung, wenn du 
sie trotzdem wählst, der Chip arbeitet einfach mit der 
nächstniedrigeren.

Das größere Problem ist, dass du die 2, 3, oder bis zu 6MBaud nicht 
willkürlich in den Rechner fließen lassen kannst, dein RX Buffer würde 
zwischen den 1ms Frames überlaufen. Du brauchst also entweder eine 
geeignete Flusskontrolle, oder musst sicherstellen, dass die 
durchschnittliche Netto Senderate ~2MBit/s nicht überschreitet.

Es hilft, die Framerate des USB Seriell Wandler im Gerätemamager auf 1ms 
zu stellen (Standard häufig 64ms), die Paketgröße maximal zu wählen, und 
falls du immer noch Probleme haben solltest, das entsprechende Log 
Programm wie puTTY auf einen CPU Kern zu locken.
Gast #5438984
Lesenswert?

Zitronen F. schrieb:

> Nun, ja, wenn du ein UART hast, das das kann ...
> Allenfalls ein 16 oder 32 bit controller

Was soll die Verarbeitungsbreite von mehreren Byte bei einem 
Byte-orentierten Übertragungsverfahren deiner Meinung nach an Vorteilen 
bringen? Also warum soll es 16- oder gar 32Bit Controller sein, wenn es 
nur (üblicherweise) maximal 8Bit breite Daten zu verarbeiten gilt?

OK, es gibt auch noch dieses seltenst verwendete Frameformat mit 9 
Datenbits, dafür könnte eine höhere Verarbeitungsbreite eventuell schon 
vorteilhaft sein...
#5438990
Lesenswert?

Auch wenn die Baudrate bei 2.4MBit liegt muss man ja nicht MByte 
ueberteragen, sondern kann mal mit 32 Byte probieren. Das kann HTerm 
dann auch.
Weshalb ich einen 16 oder 32 Bitter vorschlage .. weil die mit MHz 
klotzen koennen. Ein AVR auch mit 20MHz geclockt kann keine 2.4MBit am 
UART. Auch wenn er's koennte sollen die Daten ja auch noch irgendwo hin, 
und das reicht dann nicht mehr.
Persönliche Seite #5439001
Lesenswert?

c-hater schrieb:
> Was soll die Verarbeitungsbreite von mehreren Byte bei einem
> Byte-orentierten Übertragungsverfahren deiner Meinung nach an Vorteilen
> bringen?

Angenommen, der beteiligte µC soll Daten zwischenspeichern, so ist die 
Chance, daß er mehr Speicher ansteuern kann, bei 32-Bit-µCs eher 
gegeben als bei 8-Bit-µCs.

Bei einem Protokollanalysator oder auch nur -Mithörer erscheint mir das 
Konzept eines ausreichend großen Aufzeichnungspuffers nicht vollends 
verwegen.

Dazu kommt, daß bei 2.4 MBaud immerhin 240 kByte/sec durchrauschen, was 
bei einer einfachen UART eine Interruptrate von 240 kHz zur Folge hat, 
und die zu bedienen ist, wenn auch noch etwas anderes sinnvolles 
erledigt werden soll, mit einem 8-Bitter, der nur mit ein paar MHz 
getaktet wird, auch nicht ganz trivial. Bei -beispielsweisen- 24 MHz 
Takt stehen nur 100 Taktzyklen pro empfangenen Zeichen zur Verfügung.
Gast #5439087
Lesenswert?

mir ist die Aufgabe noch nicht klar. Der TO will doch einen Datenstrom 
per PC mitlesen. Das geht bei "glatten" Baudraten von 1 oder 2 MBaud 
doch problemlos mit jedem USB-Umsetzer.

Wenn er 2.45MBaud hat, wird das der USB-Umsetzer vermutlich nicht 
können. Dann braucht er vielleicht einen Wandler von 2.45MBaud auf 
3MBaud. Das könnte ein 8-Bitter mit 2 Uarts und entsprechendem Quartz 
machen (also wenn es da gemeinsame Teier gibt), links höhren, rechts 
rauspusten. Kein Zwischenspeichern. Solang raus schneller ist, als rein.
Gast #5439103
Lesenswert?

Ich war auch schon kurz davor, das Beispielprogramm von Niklas 
vorzuschlagen, da ich es bereits ein paar mal als UART-Schnüffler 
verwendet habe. Allerdings habe ich keine Ahnung, wie es mit so hohen 
Baudraten performt.

Immerhin hat der STM32 reichlich RAM, damit kann man schon üppige Puffer 
einrichten.

Hier ist es als Projekt für die System Workbench und das BluePill Board. 
Das Atollic TrueStudio kann dieses Projekt importieren: 
http://stefanfrings.de/stm32/usb_test2.zip
Persönliche Seite #5439108
Lesenswert?

Stefanus F. schrieb:
> Allerdings habe ich keine Ahnung, wie es mit so hohen
> Baudraten performt.

Hab's nicht ausführlich getestet, aber solange der PC die Daten schnell 
genug abholt sollte es klappen. Je größer die Datenrate, desto 
effizienter wird es, da dann größere Pakete gesendet werden.

Stefanus F. schrieb:
> da ich es bereits ein paar mal als UART-Schnüffler
> verwendet habe.
Ach, sag doch was, mich freut es zu erfahren wenn jemand meine Sachen 
nutzen kann :)
Gast #5440361
Lesenswert?

3 kurze Anmerkungen dazu

- HTERM hat ein Problem mit hohen Datenraten, einfach mal was anderes 
testen

- USB-Wandler von SiLabs können ganz gut hohe Datenraten, wenn die 
gewünschte Rate nicht dabei ist kann man mit Baudrate Aliasing arbeiten. 
Da gibt es ein Tool von SiLabs. FTFI soll das auch können.

- Bitte kein USB Wandler von Prolific. Die haben zwar den gesamten Markt 
aufgrund ihres günstigen Chipsatzes geflutet, sind aber auch die 
„Hauptschuldigen“ an dem generell schlechten Ruf von USB Seriell 
Wandlern.

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