首页 > 解决方案 > 使用 FTDI 芯片从另一个设备发送到 PC 的 uart 数据包之间的延迟

问题描述

我有一个设备发送一系列 20 字节 UART 帧(每个 20 字节,在 20 字节之间没有延迟)。通过使用FTDI 芯片 TTL 到 USB 转换器将数据从设备发送到 PC,之间有16 毫秒的延迟有时是 20 个字节。为什么会这样?

这是在 - Look RS232软件上监控的

在 PC 的监控软件上观察时,在某些帧的 20 个字节之间存在 16ms 的延迟。例如,先是 4 个字节,然后是 16 个字节,依此类推。或者先是 6 个字节,然后是 16 毫秒后剩下的 10 个字节。已尝试使用不同的波特率。同样的问题仍然存在。

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

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

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

标签: serial-portusbuartftdi

解决方案


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


推荐阅读