
Я использую мост FTDI USB to UART breakout. Он имеет встроенный таймер, Receive Buffer Latency Timer, который начинает отсчет времени, когда часть данных поступает в буфер, и по истечении времени отправляет данные. Это время ожидания установлено по умолчанию на 16 миллисекунд.
В документации указано, что при использовании драйверов Windows и D2XX это время ожидания можно изменить, изменив значение в файле ftdiport.inf
следующим образом:
[FtdiPort.NT.HW.AddReg]
HKR,,"LatencyTimer",0x00010001,16
Вместо этого я использую Linux и считываю значения из VCP (используя /dev/ttyUSB0)
. Как мне получить доступ и изменить эквивалент переменных .inf, которые я найду в этой настройке?
Должен ли я вместо этого писать напрямую в регистры на микроконтроллере? Если да, то как мне отличить регистры на мосту от регистров на датчике, к которому я подключаюсь с помощью моста?
решение1
Вы, вероятно, ищете команда setserial.
Эта команда дает вам гораздо меньше контроля, чем файл .inf
:
setserial /dev/ttyUSB0 low_latency
Для более точной настройки вы можете установить Таймер задержки FTDI (если он не заблокирован для обновлений):
#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
Это снизит таймер с 16 мс до 1 мс (минимум), чтобы уменьшить задержку.