英飞凌
直播中

gvxiaot

13年用户 1170经验值
私信 关注

求助,关于USB3.0中的endpoint端点问题求解

在代码中,我观察到usb中的endpoint有15个端点,其中还有一个特殊的endpoint_0是双向的。
其中我想询问一下,因为USB中endpoint_0的通讯是需要握手交互的,那么这个是否有文档明确的写出其需要握手?
其次,我想咨询一下如果我其他的endpoint需要不进行握手直接将接收到的数据推出至host端,那我应该如何做?
如今我现在看了示例,示例中用的是endpoint_1端口的OUT和IN进行dma实验,其中是通过OUT端发出数据,然后再通过内部的线程将数据搬运到pipe的另一端,然后再通过center工具中的transfer data-in再从pipe的另一端读取数据出来。如今我不想通过center工具,直接将数据推出。这是否有方法?
或者说API函数库中有对应的函数?

回帖(1)

康大争

2024-5-22 17:35:40
关于USB 3.0中的endpoint端点问题,我将分步回答您的问题。

1. 关于endpoint_0的握手交互:
是的,USB规范中确实有关于endpoint_0的握手交互的描述。Endpoint 0是一个特殊的控制端点,用于设备枚举和控制传输。在USB 2.0和3.0规范中,endpoint_0是一个双向端点,用于设备与主机之间的控制传输。在控制传输过程中,需要进行握手交互,以确保数据的正确传输。

2. 如何实现其他endpoint不进行握手直接将接收到的数据推送至host端:
要实现这一点,您需要配置其他endpoint(例如endpoint_1)为非控制端点,并设置适当的传输类型(如批量、等时或中断传输)。在这种情况下,不需要进行握手交互,数据可以直接从设备传输到主机。您需要在设备的固件或驱动程序中配置这些端点,并确保主机端的软件能够正确处理这些传输。

3. 关于示例中的DMA实验:
在您提到的示例中,使用endpoint_1的OUT和IN进行DMA实验。通过OUT端发出数据,然后通过内部线程将数据搬运到pipe的另一端,再通过center工具中的transfer data-in从pipe的另一端读取数据。这个过程实际上是在模拟USB数据传输的过程,但并不涉及USB规范中的握手交互。

总之,如果您希望其他endpoint不进行握手直接将接收到的数据推送至host端,您需要配置这些端点为非控制端点,并设置适当的传输类型。同时,确保设备的固件或驱动程序以及主机端的软件能够正确处理这些传输。关于endpoint_0的握手交互,您可以查阅USB 2.0或3.0规范文档,以获取更详细的信息。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分