阅读:1475回复:8
d12的问题,给100分
我的mcu发送18个设备描述符给host,这两次mcu的control in中断,读最后状态寄存器分别是41h和01h,这能不能说明我的18个设备描述符成功发给host?在此后,host应向mcu发送80,06,00,02,00,00,09,00,而我接收到的确是80,06,00,01,00,00,40,00,这是怎么回事?可能使那里的原因????请教!!给100分!!!!!!!
|
|
沙发#
发布于:2004-04-08 09:00
发送应该是成功的,但接受是否成功就不一定了.
还有你的这18个描述符是什么时候发的?看你下面收到的好象是在第一次发送描述符,应该是在地址分配之前,那就说明你没发送成功. |
|
板凳#
发布于:2004-04-08 09:10
不知道你的主机是不是PC,如果;是PC,建议用bus hound抓取枚举过程看看!
照我的理解,你最后状态寄存器读到的值应该可以反映出数据已经发送,但是假如你主机是PC就可以用bus hound抓出数据来看,到底是不是发送了,要不然就得用usb 分析仪来做了! |
|
地板#
发布于:2004-04-08 09:18
在你的程序中加一个COM发送程序,把接收到的数据通过COM发送出来。然后与 BUS Hound相比较。这样很块就知道问题在哪里。
|
|
地下室#
发布于:2004-04-08 12:07
我是按照以下5步来的:
(1)80 06 00 01 00 00 40 00 GetDescriptor 返回08h,01h,10h,01h,0dch,00h,00h,10h (2)00 05 02 00 00 00 00 00 SetAddress 返回空数据包 (3)80 06 00 01 00 00 12 00 GetDescriptor 返回12h,01h,10h,01h,0dch,00h,00h,10h,71h,04h,66h,06h,00h,01h,00h,00h,00h,01h 只能做到这里,收不到以下的数据了 (4)80 06 00 02 00 00 09 00 GetDescriptor (5)80 06 00 02 00 00 ? 00 GetDescriptor |
|
5楼#
发布于:2004-04-08 12:18
我的host是pc,用bus hound怎么抓数据,是不是枚举成功了之后才能在bus hound上看到数据?有没有可能是bus hound软件的问题?
我觉得pc应该收到了,否则如果pc没收到这18个设备描述符的话,那也不会收到这一步之前mcu发送的数据,那么pc也不会向mcu发送下一步的数据了,我说的对吗??????还有,虽然我能做到第三步,但我用bus hound看不到发送和接受的数据呀,怎么回事??? |
|
6楼#
发布于:2004-04-08 13:44
我的host是pc,用bus hound怎么抓数据,是不是枚举成功了之后才能在bus hound上看到数据?有没有可能是bus hound软件的问题?
我觉得pc应该收到了,否则如果pc没收到这18个设备描述符的话,那也不会收到这一步之前mcu发送的数据,那么pc也不会向mcu发送下一步的数据了,我说的对吗??????还有,虽然我能做到第三步,但我用bus hound看不到发送和接受的数据呀,怎么回事??? //********************************************************* BusHound在枚举过成中也可以抓数据,你的情况可能是设置问题。你说的情况可能是数据出错造成的。你的D12的GoodLink指示灯有没有闪亮一下又灭了的情况。如果有我想应该是数据出错。 |
|
7楼#
发布于:2004-04-08 14:14
他不是闪一下就灭,而是亮一会,然后在灭,然后在亮,然后在灭!!!!!!!怎样设置bus hound?
|
|
8楼#
发布于:2004-04-08 17:24
我的灯能亮一会儿,然后灭了
|
|