我在 PC 上的应用程序以 1 KB 的块向嵌入式设备发送文件 (2 MB)。
我使用 FTDI Windows 驱动程序,我使用经典的 FT_Write() API 函数,因为我的代码是跨平台的。
注意:当我使用 1KB 块大小时,会出现以下这些问题。较小的块(我尝试了 64 个字节)工作正常。
问题是该函数每几百个数据包返回“0 字节发送”并卡住。我找到了一个解决方法,通过清除 TX 和 Rx,然后调用 ResetDevice() 恢复芯片。它仍然每几百个数据包发生一次,但至少我可以发送整个文件(2 MB)。
但是当我使用 USB 隔离器(http://www.bb-elec.com/Products/USB-Connectivity/USB-Isolators/Compact-USB-Port-Guardian.aspx)时,解决方法失败了。
我相信我的工作不是一个优雅的解决方案。
注意:我使用大块是因为我在下面的 FTDI 应用说明中找到了建议:
将数据写入 FTDI 设备时,应在应用程序中缓冲尽可能多的数据并在单个写入函数调用中写入设备(对于使用 Win32 API 的 VCP 应用程序的 WriteFile,如果使用 D2XX 经典接口,则为 FT_Write 或FT_WriteFile 如果使用 D2XX FT_W32 接口)。其结果是数据将以每个 USB 数据包 64 字节的形式写入设备。
知道这些问题的正确解决方法是什么吗?它与 FTDI 初始化有关吗?我的驱动程序版本是 2.12.16.0 (3/9/2016)。