gpt4 book ai didi

windows - 以已知速率将数据发送到 USB 端口

转载 作者:可可西里 更新时间:2023-11-01 11:54:50 25 4
gpt4 key购买 nike

我有一个 Windows TCL 应用程序,它通过 USB 端口控制电路板上的各个芯片。我在 bitbang 模式下使用 FTDI 驱动程序。 Bitbang 模式使板上的 USB 设备像 PC 并行端口一样。

假设电路板上的芯片是一个二进制计数器。如果我想让计数器递增,我会向 USB 端口写入一系列字节,使芯片计数。

如果我希望计数器以某种速率计数,我会以某种已知速率发送这些字节。

由于数据是二进制数据,我将端口配置为二进制模式。我将几个控制字节(称为 block )写入缓冲区,然后刷新端口,以便将数据发送到 USB 端口(因此它会在我需要时进行计数)。写入后,我等待一段时间,然后再次写入 block 。

我知道这不会是完美的时机;那没关系;这次我只需要关闭。

我的问题是数据 block 之间的传输速度不会超过大约 2 毫秒。 (我不是在谈论 block 内数据的传输速率,我是在谈论 block 之间的最短时间。)另一种说法是,它似乎是刷新任何缓冲区的最短时间(实际)大小约为 2mS。

我通过使用 o 型示波器观察数据变化来测量 2mS。这也与我放入代码中的计时器一致。

有什么办法可以让这个间隔时间变短吗?不知道是我从windows获取的实际执行时间片,还是buffer传输到USB的队列处理间隔。有没有办法找出导致操作系统延迟的原因?

有没有办法控制这个间隔。如果能达到 500uS 而不是 2mS 就太好了。

只是希望有人能提出建议。

谢谢

最佳答案

几个月前,我一直在为这个完全相同的问题而苦苦挣扎。

通过检查 USB 流量发现,当处于 bitbang 模式时,FTDI 驱动程序不断轮询 FTDI 芯片以获取新的可用数据,导致总线上的放置操作和占用大量 CPU 资源之间的延迟多个 FTDI 板连接到同一台 PC。

此行为在 Windows 和 Linux 中都是一致的。在 Windows 中,您可以使用 Wireshark 进行检查和 USBPcap .

就我而言,我在 FTDI 板上有一个 FPGA。将对时间更敏感的任务卸载到 FPGA 并批量发送命令对我来说很有效。

关于windows - 以已知速率将数据发送到 USB 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19991790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com