FT4232: Maximale Baudrate von 12Mbps nurtzen (Linux)

Gast #7430500
Lesenswert?

Guten Tag,

ich habe hier einen FT4232H eingebaut, weil dieser bit 12MBaud kommunizieren kann. Hat jemand von euch eine Ahnung, wie ich das unter Linux am besten eingestellt bekomme.

Normale Terminalprogramme wie screen / minicom lassen mich die Baudrate nur bis 4 MBaud hochstellen. Darüber geht leider nicht.

Habe es dann mal mit python versucht:

1
ser = serial.Serial('/dev/ttyUSB2', 12000000)
2
ser.write(bytearray(0x55 for _ in range(1000)))
3
ser.close()

Damit klappt es :) Sobald der Port mittels python geöffnet ist, zeigt stty Folgendes an:

1
% stty -F /dev/ttyUSB2
2
speed 0 baud; line = 0;
3
min = 0; time = 0;
4
-brkint -icrnl -imaxbel
5
-opost -onlcr
6
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

Hier steht jetzt 0 als Baudrate... Hat jemand eine Idee, wie man das noch hinbekommen kann ohne ein python-skript zu nutzen? Python ist zwar für's erste ausreichend, da über die Schnittstelle eh scriptbasiert einige Daten fließen müssen. Aber es läuft eben auch eine normale Shell auf diesem Uart. Da wäre dann ein off-the-shelf Terminalprogramm doch praktisch.

Gast #7430570
Lesenswert?

Norbert schrieb:

M. H. schrieb:

Hat jemand eine Idee, wie man das noch hinbekommen kann ohne

stty -F /dev/ttyUSB2 12000000

Geht leider nicht. stty frisst nur die gängigen Baudraten.

1
% stty -F /dev/ttyUSB2 12000000
2
stty: invalid argument ‘12000000’
3
Try 'stty --help' for more information.

Norbert schrieb:

Die Frage ist jedoch: Läuft das Ding dann wirklich mit echten 12Mb/s oder ist das nur ein Anzeigeeffekt?

Wenn ich es mit python mache, ja. Habe es mir am Oszi angeschaut.

Norbert schrieb:

Meine reichen auch nur bis 4Mb/s, aber für ein interaktives Terminalprogramm sollte das allemale ausreichen.

Bringt mir nur nichts, wenn die Gegenstelle 12 MBaud/s hat :(

Gustl B. schrieb:

Jetzt nicht den Nutzen hinterfragen!

Ist immer das gleiche hier :) Es wird sofort alles in Frage gestellt, sobald keine offensichtliche Lösung vorliegt. Es geht primär darum die Testzeit des Geräts zu verkürzen. Und da sind eben 12 MBaud gut 3 mal schneller als 4 MBaud. Und wenn da im Test 4 Sekunden gespart werden können ist das bares Geld... Mir geht es jetzt darum auf dem Tisch einfach mit einem FTDI damit zu sprechen. In der Produktion wird das ganze nicht über einen FTDI gemacht und geht auch aktuell einwandfrei.

Gast #7430592
Lesenswert?

Norbert schrieb:

M. H. schrieb:

Ist immer das gleiche hier :) Es wird sofort alles in Frage gestellt,

Das wäre mit mehr Informationen vermutlich gar nicht erst passiert… ;-)

Ja. Aber diese Infos sind eigentlich irrelevant. Ich hätte auch schrieben können: "Wie nutze ich die volle Performance von meinem FT4232?". Das ist imho genau dieselbe Frage und auch absolut ausreichend. Wofür ich die 12 Mbaud brauche ist für die Benatwortung der Frage irrelevant.

Norbert schrieb:

Dann nimm dir halt ein Python basierendes Terminalprogram. Ist bei ›Serial‹ sogar dabei.

serial.tools.miniterm geht zwar, kann aber die ganzen Terminal Escape-Sequenzen nicht, die die Shell für die autocompletion / history buffer etc. nutzt um die Zeilen neu zu zeichnen. Aber Vermutlich werde ich für's erste damit leben.

#7430601
Lesenswert?

M. H. schrieb:

Ja. Aber diese Infos sind eigentlich irrelevant. Ich hätte auch schrieben können: "Wie nutze ich die volle Performance von meinem FT4232?".

Vollkommen korrekt. Hast du aber nicht. Du hast die Nutzung eines Terminalprogrammes explizit hinzu gefügt, was i.A. bedeutet interaktive Nutzung. Nur darauf, auf die interaktive Nutzung, bezog sich die Replik. Aber egal… ;-)

#7430720
Lesenswert?

Unter Linux lassen sich auch 'krumme' Baudraten einstellen, siehe:

Und das geht auch mit minicom. Hat mich mal 2-3Zeilen im Source gekostet als ich das irgendwann gebraucht habe.

Ob man allerdings in einem Terminalprogramm 12Mbps nutzen kann ist eher zweifelhaft. Das sind theoretische Maximalwerte an die man auch nur dran kommt wenn man grosse und immer volle Bloecke benutze.

Vanye

#7430730
Lesenswert?

M. H. schrieb:

serial.tools.miniterm geht zwar, kann aber die ganzen Terminal Escape-Sequenzen nicht, die die Shell für die autocompletion / history buffer etc. nutzt um die Zeilen neu zu zeichnen.

Das ist/war auch üblicherweise nicht Teil von denen. Die Terminal-Emulation (VT52/VT102/VT220/Tek4014) fand ein Layer höher statt (wenn nicht direkt ein Terminal benutzt wurde). Die Linux-Console emuliert ein VT102-Terminal, ähnlich xterm, rxvt und die ganzen anderen X11-Terminals. Sowas wie miniterm/picocom/cu leiten die Daten nur vom Serialport zum Emulator (über stdin/stdout) und zurück. Die (entfernten) Anwendung müssen die passenden Escape-Sequenzen erzeugen - dazu lesen sie die Umgebungsvariable TERM und benutzen dann die Terminaldatenbanken termcap oder terminfo.

Sowas wie minicom ist ein Terminalemulator, der VT102 emuliert (plus Rähmchen, Menüs, und ähnlicher Klimbim). Das ganze malt er dann mit den im (lokalen) TERM definierten Escape-Sequenzen. Also ein Konverter von VT102 <-> $TERM.

Wenn bei dir das Shell unpassende Escape-Sequenzen schickt, ist wahrscheinlich TERM (auf dem remote-Rechner) nicht oder falsch gesetzt.

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