
Ich verwende eine FTDI USB-zu-UART-Breakout-Bridge. Sie verfügt über einen eingebauten Timer, den „Receive Buffer Latency Timer“, der die Zeitmessung startet, wenn ein Datenelement in einem Puffer empfangen wird, und bei Timeout die Daten sendet. Dieses Timeout ist standardmäßig auf 16 Millisekunden eingestellt.
ftdiport.inf
In der Dokumentation heißt es, dass dieses Timeout bei Verwendung von Windows- und D2XX-Treibern durch Ändern des Werts in der Datei wie folgt geändert werden kann :
[FtdiPort.NT.HW.AddReg]
HKR,,"LatencyTimer",0x00010001,16
Ich verwende stattdessen Linux und lese Werte aus einem VCP (mithilfe von /dev/ttyUSB0)
. Wie kann ich auf das Äquivalent der .inf-Variablen zugreifen und es ändern, die ich in diesem Setup finden würde?
Sollte ich stattdessen direkt in Register auf dem Mikrocontroller schreiben? Wenn ja, wie unterscheide ich zwischen Registern auf der Brücke und Registern auf dem Sensor, mit dem ich über die Brücke eine Verbindung herstelle?
Antwort1
Sie suchen wahrscheinlich nach dem Befehl „setserial“.
Mit diesem Befehl haben Sie viel weniger Kontrolle als mit der .inf
Datei:
setserial /dev/ttyUSB0 low_latency
Für eine genauere Einstellung können Sie möglicherweise die FTDI-Latenztimer (sofern es nicht gegen Aktualisierungen gesperrt ist):
#cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
16
# echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
# cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
1
Dadurch wird der Timer von 16 ms auf 1 ms (das Minimum) gesenkt, um die Latenz zu verringern.