У меня есть следующая установка:
FPGA отправляет данные по UART со скоростью 3 Мбит/с. Передаваемые данные представляют собой блок из 1024 байтов, отправляемых с переменной периодичностью в диапазоне от 20 мс до 200 мс. (Так что даже в худшем случае скорость передачи данных далека от 3 Мбит/с)
FTDI 232RG
Кусок python, работающий на моем компьютере (Windows), в основном: открытие COM-порта с помощью pyserial, 3Msps, опрос in_waiting до тех пор, пока он не достигнет размера пакета (1024 байта), форматирование полученного пакета и печать его на экране
Скрипт хорошо работает при низкой частоте повторения, но я сталкиваюсь с проблемами при более высоких повторениях (обычно 20 мс). Когда периодичность в 20 мс, я в конечном итоге получаю переполнение буфера где-то перед in_waiting. Я проверил время цикла Python, и это занимает около 4 мс. Таким образом, похоже, что есть что-то восходящее (в FTDI или Windows), которое подает в буфер pyserial более одного пакета в течение 4 мс после пакета.
Я попытался изменить задержку FTDI в драйвере (с 16 мс по умолчанию до нескольких мс), но это не помогло.
В настоящее время я не знаю, что происходит. Не могли бы вы посоветовать, как лучше понять, что происходит?
Спасибо за вашу помощь!