我必须通过微控制器(Teensy 3.6 - Cortex M4)将传感器数据传输到主机PC,延迟时间尽可能短(约1-2ms)。
为了测试我的通信,我编写了一个程序,通过原始HID从uC发送计数器到PC,然后轮询一个响应。另一方面,PC接收usb数据包(包含计数器)并再次发回。 (我只限于libusb v0.1)
首先,我注意到发回的计数器与我刚发送的计数器的数量不同,但大约有4个数字(转移)。对我来说,这看起来像是在某个地方进行缓冲,类似于大小为4的FIFO。我尝试使用usb描述符中的rawHID值(usb_desc.h)但是减少了缓冲量,即NUM_USB_BUFFERS = 12
到8(每个端点最少x2个缓冲区)什么都不做。此外,关于纯粹的民意调查RAWHID_TX_INTERVAL
已设置为1
,因此设备将每隔1ms进行一次轮询。
我最好的猜测是,这与某些linux配置有关,我似乎无法找到与设置USB缓冲区数量或增加USB吞吐量相关的任何内容。另外我用CONFIG_HZ_1000
运行linux所以~1.1ms应该......可以实现吗?
我很感激有关此事的任何反馈/建议。