|
1. проблема имеет место быть ТОЛЬКО c VCP драйвером. C D2xx этой проблемы нет, если пользоваться функцией FT_SetUSBParameters.
2. Все описано в AN232B-04_DataLatencyFlow.pdf.
VCP дрова устроены так, что за один прием читается максимум 4096 байт (задается в настройках драйвера USB Transfer Sizes - макс.=4096!!!).
Если мы хотим читать большее количество байт то будут сформированы новые запросы, а как измерил кто-то на электрониксе новый запрос формируется от 3мс до ХХмс. В итоге на высокой скорости обмена аппаратный буфер FT232 переполняется, и похоже что дрова в этом случае не формируют ошибку OVERRUN.
Сейчас уменьшил латентность до 2мс как-то завелось на 1000000bps, но ~25% пакетов битые (постоянно идет перезапрос непринятых блоков).
Еще создается впечателение что FTDI драйвера VCP и D2XX глухо виснут где-то внутри себя при злобной нагрузке компа с помошью S&M. Во всяком случае без передергивания они не отвисают.
Как-то не радостно.