USB CDC批量IN端点冻结

时间:2016-12-17 05:10:41

标签: usb cdc lpc

我使用LPC2368使用USB CDC与PC通信。 当PC通过批量输出端点2向LPC发送命令时,LPC2368从UART恢复4104字节,通过USB CDC Bulk IN端点2发送到PC。

在PC上,这些数据被认为是来自虚拟com端口,使我能够通过超级联系查看数据(发送到PC)。

有些命令的响应小于64字节。

发送命令以获取这些4104字节后,从UART成功接收到4014个字节,并将其发送到for循环(对于批量传输,一次只能发送64个字节)到PC。

现在,如果在收到4104字节后发送任何命令,则看不到任何响应。只有在发送命令两次后才得到响应。

任何人都可以指导解决USB的这种行为吗?

1 个答案:

答案 0 :(得分:1)

  

对于批量传输,一次只能发送64个字节

是的,如果您的上一个事务完全 64字节长,则连接将“挂起”。原因是批量管道的鲜为人知的特征,它将背靠背64字节(最大数据包大小)事务视为单个较大事务。任何小于最大数据包大小的数据包都将完成一次交易。

修复很简单:如果在64字节数据包之后没有更多字节要传输,只需传输零数据包。是的,这是一个不包含数据字节的数据包。

大多数USB2UART示例代码都没有实现此修复,因为UART通常不够快,无法将fifo填充到64字节。