如何在 PIC24FJGB410 的 USB 通信批量模式下使用多个端点(IN 和 OUT)

How to use multiple endpoints (IN and OUT) in Bulk Mode for USB comm in PIC24FJGB410

在我的项目中,我正在为来自主机的输入和输出配置 USB 端点(批量模式)。我正在使用 PIC24FJ256GB410 和使用 PIC24FSTARTER KIT 配置的 Microchip 示例代码“Vendor throughput”。

如果我对 OUT 使用端点 1、2、3,对 IN 使用端点 1,一切正常。

我为 OUT 配置端点 1、2、3 和为 IN 配置端点 81 的那一刻。 Data OUT 工作正常但 Data IN 根本不工作。

我使用 VC++ 作为前端,WINUSB 写入管道使用端点 1 作为输出,使用端点 81 作为输入。

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

附上完整代码,方便调试,请多多指教。

代码 LINK 如下


USB Descriptor & USB CONFIGURATION


USB DATA IN & OUT CODE

O.K。好吧,我一直在研究这段代码,并发现了一些有趣的东西,我想与读者分享。如有错误请指正

我认为问题已经解决或者实际上,根本没有问题。 USB 是一种基于主机的协议,因此来自主机的数据 OUT 始终为 1、2、3、4,而 IN 将始终为 81、82、83.regardless,表示您从 DEVICE 发送的方式。在设备上初始化 USB 描述符时我们已经完成了 EP1,2,3 OUT 和 EP 81,82 IN 但实际上当我们 send/receive 时,我们通过 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)继续前进,一切都是嗯。