ftdi(vcp或d2xx)转发(从PC到ftdi设备)延迟

时间:2014-11-13 18:13:48

标签: serial-port ftdi

正如FTDI网站上所记载的那样,为了从FTDI设备接收字节到PC,由于这个64字节的USB数据包问题,它可能有16ms(超时)+ 1ms(或更多,USB调度时间)的延迟。

如果我理解正确,那么从FTDI芯片(FTDI_232或FTDI_245)到PC的连续数据流(无流量控制)方面,最好的可以做到(避免16ms超时延迟)是要求:

如果USB调度程序每1ms可靠地调度驱动程序,则每1ms 62个字节; 如果USB调度程序每2ms可靠地调度驱动程序,则每2ms 124字节; ... 如果USB调度程序每6ms可靠地调度驱动程序,则每6ms 372字节;

我的问题是人们可以从PC向FTDI芯片发送字节的速度有多快?它肯定会受到USB调度程序延迟的影响。但是还有一些64字节的数据包问题吗?

换句话说,能够连续地将数据从PC传输到FTDI芯片。我一次要发62个字节吗?

2 个答案:

答案 0 :(得分:0)

我刚刚阅读该文档,我的理解是FTDI设备计时器的作用是强制闪存尚未完全缓冲到PC。否则,如果你有一个外围设备,它每小时只发送几个字节而没有事件字符或状态行改变,你将不得不等待一天填充64字节设备缓冲区并在PC端获取数据。

它似乎只影响读取和写入小于FTDI设备缓冲区的数据包。如果要以最大吞吐量流式传输到FTDI设备,请使用最大4K数据包并继续推送数据。超时设置应该没有效果。

答案 1 :(得分:0)

16ms USB Bulk IN延迟确实是将部分64字节数据块从芯片刷回PC。在他们的知识库中有关于changing this value的信息,即你​​可以设置1ms的最小延迟计时器,这意味着在每个ms之后,芯片内部的任何数据都将被发送回PC。

延迟计时器仅影响从芯片到PC的数据;它不会影响相反方向的数据。

设备的最大吞吐量将受您为UART设置的波特率的影响。我会和他们谈谈理论上的限制。