首页 文章

USB CDC批量IN endpoints 冻结

提问于
浏览
0

我正在使用LPC2368使用USB CDC与PC通信 . 当PC通过Bulk Out End Point 2向LPC发送命令时,LPC2368从UART恢复4104字节,通过USB CDC Bulk IN Endpoint 2发送到PC .

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

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

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

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

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

1 回答

  • 1

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

    是的,如果您的上一个事务正好是64字节长,则连接将为"hang" . 原因是批量管道的鲜为人知的特征,它将背靠背64字节(最大数据包大小)事务视为单个较大事务 . 任何小于最大数据包大小的数据包都将完成一个事务 .

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

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

相关问题