阅读:1456回复:6
高手新手不妨都来看看
在D12-USB开发板的固件程序里,函数USB_Single_Transmit(0, 0)
的作用是什么呀,向控制端点写一个空数据包对程序的运行有什么影响呀? |
|
沙发#
发布于:2002-12-27 14:19
发USB令牌应答包,其中不包含数据,要不host会认为没成功。
|
|
|
板凳#
发布于:2002-12-27 14:23
发USB令牌应答包,其中不包含数据,要不host会认为没成功。 那除了设置端点结束发的那个空包以外还在什么时候需要发空包阿?? |
|
地板#
发布于:2002-12-27 14:44
那样的话,都需要在什么情况下发空包呀,在读写数据命令之后又没有必要呢? 我曾经把固件程序Vdor.c里USBVendorRequest_ReadCode(void)和USBVendorRequest_WriteCode(void)函数中USB_Single_Transmit(0, 0);命令去掉过,但是数据传输速率明显的慢了下来,不知是怎样对传输速率造成影响的。 (最后统一放分) |
|
地下室#
发布于:2002-12-27 15:19
一般是用在控制端点0的通信上,即host标准请求和厂商请求的应答,若无需返回数据,则需要调用此功能。
|
|
|
5楼#
发布于:2002-12-27 16:14
举个例子可能会更容易理解:
例如 EP0大小为8; 现在DEVICE需要向HOST回送16字节的数据包,此数据包正好可以通过EP0分两次送到主机,但是两次后主机并不知道数据包是否已经发送完毕,这时DEVICE就需要发送一个0数据包以使主机确认数据发送完毕。 如果DEVICE需要回送的数据是9个字节,那么第二次发送的时候通过EP0只发送一个字节,这样主机就明白数据包已发送完毕。 (以上是我个人的理解,错误之处请指出。) |
|
6楼#
发布于:2002-12-27 17:08
谢谢各位,给分,多少就这么个意思吧。
|
|