阅读:1535回复:9
我Get_Descriptor都没有传完数据,怎么就收到Set_Address的命令呢
我一开始收到要我传64个字节的Get_Descriptor的命令。
我才传了8个字节的IN包,就收到SETUP包是Set_Address的命令。 可是我应该要传18个字节才传完的呀。 会出现这种情况吗? |
|
最新喜欢:![]() |
沙发#
发布于:2004-04-22 14:23
小伙子要搞清原理呀。
第一次的取描述符的长度是给最大的。因为HOST还不知道USB的地址和具体参数,所以先给你最大长度。你回应只需要回16个BYTE就可以了。可不要画蛇添足啊。 |
|
板凳#
发布于:2004-04-22 15:17
可是我只传了8个byte就有中断了,是set_address的SETUP包。可是我18个byte都没有传完呀。
|
|
地板#
发布于:2004-04-22 16:54
你这个是没错的阿
主机第一次请求描述符的时候,只需要读取描述符的头8个B就行了,因为描述符的第8位给出了maxep0size,等到下次再请求getconfiguration时,主机才读出整个的设备描述符 |
|
地下室#
发布于:2004-04-22 17:10
哦,谢谢。
那就是讲,我现在发了8个byte后收到这个命令,就把我的地址按PC的set_address设置好,在通信。 还是等我发送完18个byte后,再设置这个地址呢。 另外,设置了地址后是不是需要要给主机返回什么ACK包吗? |
|
5楼#
发布于:2004-04-22 21:15
先设置地址,然后发送空包给主机,然后你才会第二次收到get descriptor的命令。
|
|
6楼#
发布于:2004-04-22 21:39
OK,我设好地址,然后发送空包,主机就发get_descriptor给我这次是0x12也就是要我发18个byte,我连发了18个byte,主机就没有反应了。请问这18个byte的结束需要有什么设置吗?难道还要发空包过去?我记得spec讲,如果一个包的数据大小小于设定的MAXPSIZE这里是8个byte主机就会认为这次数据通信结束了呀。
谢谢了。调这个好麻烦,主要是主机端没有办法抓包。 |
|
7楼#
发布于:2004-04-22 23:23
你用的是啥啊
这么麻烦 我来谈谈啊 第一次 只要发送你的最大字节量的就可以了 不要画se不会拼了 哈哈 主机就知道了 最小是8个 而第8个恰恰是端点0的大小 :D :D 最大就水便你呵呵 这样主要是为了主机知道你的短点0的大小 呵呵 明白吗???? 以下就循规蹈矩 你看看 多简单的道理 搞那么复杂干吗 :D :D :D 我的msn sunshangxin@hotmai.com 有空帮帮我这个垃圾哦 |
|
|
8楼#
发布于:2004-04-22 23:24
为啥老有人把我击倒呢
|
|
|
9楼#
发布于:2004-04-23 11:26
搜一下以前的帖子吧,这个问题已经讨论过很多次,好像从网站建立的时候就开始讨论这个问题了。
|
|