打印
[圈圈教你玩USB]

请教usb的控制传输中状态过程是如何实现的?

[复制链接]
3013|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eyuge2|  楼主 | 2011-3-22 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我在
void UsbEp0Out(void)这个函数的
case DEVICE_DESCRIPTOR: //设备描述符中发现了

if(SendLength%DeviceDescriptor[7]==0)  //并且刚好是整数个数据包时
{
      NeedZeroPacket=1;      //需要返回0长度的数据包
}

请问为什么需要这样做,发送一个0长度的数据包

相关帖子

沙发
eyuge2|  楼主 | 2011-3-22 16:59 | 只看该作者
哈哈,看程序不仔细 在usbcore.c文件的开头部分
//是否需要发送0数据包的标志。在USB控制传输的数据过程中,
//当返回的数据包字节数少于最大包长时,会认为数据过程结束。
//当请求的字节数比实际需要返回的字节数长,而实际返回的字节
//数又刚好是端点0大小的整数倍时,就需要返回一个0长度的数据包
//来结束数据过程。因此这里增加一个标志,供程序决定是否需要返回
//一个0长度的数据包。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

105

主题

1366

帖子

9

粉丝