阅读:1679回复:9
请帮分析一下:是不是总线枚举没成功
是不是总线枚举没成功。
主机先后发出以下中断: 40(复位) 3(设备描述符) 40(复位) 3(设置地址) 3(设备描述符) 2(返回设备描述符) 3(配置描述符) 2(返回配置描述符) 40(复位) 以上过程持续三次,没成功,结束。 1、在要描述符过程中我直接返回一个IN,应该再来一个IN才对,18=16+2; 2、复位是否需要10ms等待,若需要为什么; 3、设备描述符18是需要两个IN:16+2? 配置描述符32=9(cfg)+9(interface)+7(endpoint)+7(endpoint)需要三个IN:16+16+0; |
|
沙发#
发布于:2002-04-28 16:45
返回配置描述符不对,
第一次主机要求返回的配置描述符是9个字节,第二次才能返回全部配置描述符(包含其它应包含的描述符)。 |
|
板凳#
发布于:2002-04-28 17:00
那么设备描述符中长度字节是12h还是9h?
如果回送了16个,d12是否只取前九个。 |
|
地板#
发布于:2002-04-28 20:25
谢谢plasma的回答,但datasheet中不是说配置、接口、端点一起送吗,
配置描述符32=9(cfg)+9(interface)+7(endpoint)+7(endpoint),不对吗? |
|
地下室#
发布于:2002-04-28 21:06
主机第一次请求设备描述符,返回16字节,然后设置USB地址,
主机第二次请求设备描述符,返回18字节,先返回16字节,再收到in请求时返回2个字节, 主机第一次请求配置描述符,返回9字节, 主机第二次请求配置描述符,返回全部配置描述符,包括配置、接口、端点描述符,如果有类描述符也包括在内,方法同上。 |
|
5楼#
发布于:2002-04-28 21:37
IN事务处理中,读状态总是0x92或0xD2,为什么?? |
|
6楼#
发布于:2002-05-05 12:06
怎么没人讨论?
|
|
7楼#
发布于:2002-05-06 16:49
有时候,可以不理会状态,在需要发送数据到主机时,只需要判断:如果D12缓冲区空了就写,不空就等待。
|
|
|
8楼#
发布于:2002-05-07 17:10
xoy 先生
\"IN事务处理中,读状态总是0x92或0xD2,为什么?? \" 在调试USB硬件时,有时不能单步执行,因USB通讯有时间限制. 上述状态已表明D12挂起. 调试时应一步运行到读状态后的语句处. |
|
9楼#
发布于:2002-05-08 15:50
谢谢大家,我已经知道原因了。
现在EP0和Ep2已调试通过. 再次谢谢plasma!! |
|