Forum: Mikrocontroller und Digitale Elektronik FT4232: Maximale Baudrate von 12Mbps nurtzen (Linux)


von M. Н. (Gast)


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.

von Rainer W. (rawi)


Lesenswert?

M. H. schrieb:
> Hat jemand von euch eine Ahnung, wie ich das unter Linux am besten
> eingestellt bekomme.

Was hat Linux mit Mikrocontrollern zu tun?
Das hört sich nach einer Beschränkung des Treibers unter deinem 
Betriebssystem an.

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

M. H. schrieb:
> Hat jemand eine Idee, wie man das noch hinbekommen kann ohne
1
stty -F /dev/ttyUSB2 12000000

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

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

von Gustl B. (gustl_b)


Lesenswert?

Norbert schrieb:
> aber für ein interaktives Terminalprogramm sollte das allemale
> ausreichen.

Jetzt nicht den Nutzen hinterfragen! Man kann auch ssh über ein tty 
fahren und dann natürlich auch ssh -X. Und zack will man das in 
performant.

von M. Н. (Gast)


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.

von Norbert (der_norbert)


Lesenswert?

M. H. schrieb:
> Bringt mir nur nichts, wenn die Gegenstelle 12 MBaud/s hat :(

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

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… ;-)

von M. Н. (Gast)


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.

von Norbert (der_norbert)


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… ;-)

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

M. H. schrieb:

> 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.

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

https://github.com/jbkim/Linux-custom-baud-rate

Grüßle,
Volker

von Veit D. (devil-elec)


Lesenswert?

Hallo,

wenn es nur an den Möglichkeiten des Terminals liegen sollte nimm hterm. 
Kann man alles frei einstellen, verwende ich schon seit Jahren unter 
Windows.
https://www.der-hammer.info/pages/terminal.html

von Vanye R. (vanye_rijan)


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

von Foobar (asdfasd)


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.

: Bearbeitet durch User
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.