使用 FTDI 芯片从另一个设备发送到 PC 的 uart 数据包之间的延迟

Delay in between uart packets sent from another device to PC using FTDI chip

我有一个设备发送一系列 20 字节的 UART 帧(每个 20 字节,在 20 字节之间没有延迟)。通过使用 FTDI 芯片 TTL 将数据发送到 PC 到 USB 转换器r,20个字节之间有16毫秒的延迟sometimes.Why是吗?

这是在 - 查看 RS232 软件

上监控的

在 PC 的监控软件上观察到,在某些帧的 20 个字节之间有 16 毫秒的延迟。例如,首先是 4 个字节,然后是 16 个字节,因此 on.Or 首先是 6 个字节,然后是 16 毫秒后的其余 10 个字节。 已尝试使用不同的波特率 rates.The 同样的问题仍然存在。

我读到如果未收到至少 64 个字节,FTDI 芯片会出现延迟超时,延迟为 16 毫秒。但这不应该影响我的应用程序,因为连续发送数据的最大长度是 20 个字节,之后有延迟,然后下一个 20 个字节到达。因此,一旦收到 20 个字节,就会发生超时。中间不应有延迟。 参考: https://www.ftdichip.com/Support/Documents/AppNotes/AN_107_AdvancedDriverOptions_AN_000073.pdf

这可能是由于 USB 调度延迟以及它不是完全中断驱动的事实吗?有人对此有可能的解决方案吗?延迟始终为 16 毫秒。

预期结果是 20 字节数据,中间没有延迟。

不拖延是不可能的。当我们谈论 USB 时,由于 USB 和大多数总线系统的性质,总有一些抖动。 FT 驱动程序的 latency/timeout 设置通常设置为 16 毫秒。您可以通过相应虚拟 com 端口的设置对话框在设备管理器中的 windows 下更改它。对于波特率超过 10 MBps 的 FT2232H,我能得到的最好数据包来回传输时间为 1.46+-0.31 毫秒(n=1000 个包)。