0

在我的项目中,我正在为主机的输入和输出配置 USB 端点(批量模式)。我正在使用 PIC24FJ256GB410 和配置了 PIC24FSTARTER KIT 的 Microchip 示例代码“供应商吞吐量”。

如果我将端点 1、2,3 用于 OUT 并将端点 1 用于 IN,则一切正常。

我将端点 1、2、3 配置为 OUT,将端点 81 配置为 IN。数据输出工作正常,但数据输入根本不起作用。

我使用 VC++ 作为前端,WINUSB 写入管道将端点 1 用于 OUT,将端点 81 用于 IN。

我完全糊涂了。一般来说,主机端和设备端的端点编号应该匹配,但在我的情况下,当我尝试匹配它时它不起作用。

附上完整的代码以供调试和您的宝贵建议。

代码链接如下


USB 描述符和 USB 配置


USB 数据输入和输出代码

4

1 回答 1

0

好的,我一直在研究这段代码,发现了一些有趣的东西,我想与读者分享。如果我错了,请纠正。

我认为问题已经解决,或者实际上,根本没有问题。USB 是基于主机的协议,因此来自主机的数据输出将始终为 1、2、3、4,输入将始终为 81、82、83。无论您如何从设备发送。在设备上初始化 USB 描述符时,我们已经完成了 EP1,2,3 OUT 和 EP 81,82 IN,但实际上当我们发送/接收时,我们通过 1,2,3 和 IN 通过 1,2 而不是 81、82。 IN Endpoint 从 1、2 到 81、82 的转换由 USB Descriptor 完成。此外,在阅读 PIC 24fj 手册时,我只能找到 0-15 个端点。没有定义名称 81、82 的端点。所以简而言之,它的工作方式没有任何问题。

此时我选择使用 EP1、2、3 作为 OUT 和 IN EP 4、5、6(在 VC++ 中配置为 84、85、86)继续前进,一切都很好。

于 2017-04-14T06:39:52.063 回答