我正在编写一个简单的虚拟串口设备来报告旧的串口。至此,我能够枚举设备并发送/接收字符。
在从主机到设备的不同数量的批量输出传输之后,端点似乎放弃并停止传输数据。在 PC 端,我收到一个写入错误,从 USBlyzer 跟踪判断,音乐停止在一个档位 (USBD_STATUS_STALL_PID)。但是,我的代码从未故意在该端点上发出 STALL 条件,并且生成的状态标志永远不会被设置。
鉴于发出请求和 STALL 之间经过的时间很短(<300 µs),这似乎是某种无效响应,而不是超时。在设备端,输出端点已准备就绪,缓冲区中的数据和正确的 DATA0/1 同步,但没有进一步发生。
请注意,即使在我开始发送“大量”数据之前,该设备似乎也可以长时间正常工作。据我所知,设备枚举/配置似乎也成功完成。哦,在此之后,批量输入端点继续正常工作。
作为记录,我使用的是标准的 Windows usbser.sys 驱动程序和 XMega128A4U µP。我还在多台 Windows Vista 和 7 机器上看到了相同的行为。
有什么想法我做错了什么,或者我可能会进行哪些进一步的测试来缩小范围?