Usb 控制端点上的输入和输出数据包

Usb 控制端点上的输入和输出数据包,usb,Usb,控制端点可以接收输入和输出数据包吗 作为正常终点?或者它可以 仅接收设置数据包之后的输入和输出数据包?设置数据包始终是控制传输的一部分。 主机总是通过发送设置数据包来启动控制传输。输入或输出数据将跟随它。通常,用于控制传输的USB API包括设置数据包和数据缓冲区。例如,libusb函数如下所示: int libusb_control_transfer (libusb_device_handle * dev_handle, uint8_t bmRequestType, u

控制端点可以接收输入和输出数据包吗 作为正常终点?或者它可以
仅接收设置数据包之后的输入和输出数据包?

设置数据包始终是控制传输的一部分。 主机总是通过发送设置数据包来启动控制传输。输入或输出数据将跟随它。通常,用于控制传输的USB API包括设置数据包和数据缓冲区。例如,libusb函数如下所示:

int libusb_control_transfer (libusb_device_handle * dev_handle,
    uint8_t     bmRequestType,
    uint8_t     bRequest,
    uint16_t    wValue,
    uint16_t    wIndex,
    unsigned char *data,
    uint16_t    wLength,
    unsigned int    timeout 
)   
bmRequestType、bRequest、wValue、wIndex和wLength参数用于设置数据包

Microsoft提供的以下文档还应有助于理解控件传输的工作原理:

虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-有趣的事实:从atmega32u4数据表中对
RXSTPI
位的描述中可以看出:“如果端点是in端点,则该位处于非活动状态(已清除)。”由此我们可以得出结论,设置数据包可能由控制端点和OUT端点接收,而不是in端点。@Striezel感谢您的评论,我已经编辑了我的答案。问题是控制端点上是否存在“非控制”传输。