我有一个 Windows TCL 应用程序,它通过 USB 端口控制板上的各个芯片。我在 bitbang 模式下使用 FTDI 驱动程序。Bitbang 模式使板上的 USB 设备充当 PC 并行端口。
假设板上的芯片是一个二进制计数器。如果我想让计数器递增,我会向 USB 端口写入一系列字节,以使芯片计数。
如果我希望计数器以某个速率计数,我会以某个已知速率发送这些字节。
由于数据是二进制数据,我将端口配置为二进制模式。我将几个控制字节(称为块)写入缓冲区,然后刷新端口,以便数据发送到 USB 端口(所以它在我想要的时候进行计数)。写入后,我等待一段时间,然后再次写入块。
我知道这不会是完美的时机;没关系;这次我只需要关闭。
我的问题是数据块之间的传输速度不会超过 2mS。(我不是在谈论块内数据的传输率,我是在谈论块之间的最短时间。)另一种说法是,似乎服务刷新任何缓冲区的最短时间(实用)大小约为2mS。
我用 o-scope 观察数据变化测量了 2mS。这也与我在代码中放入的计时器一致。
有什么办法可以缩短这个间隔时间吗?我不知道这是我从 Windows 获得的实际执行时间片,还是缓冲区传输到 USB 的队列处理间隔。有没有办法找出导致操作系统延迟的原因?
有没有办法控制这个间隔。让它达到 500uS 而不是 2mS 会很棒。
只是希望有人可以提出建议。
谢谢