阅读:1780回复:7
用D12收到GET_DESCRIPTOR,但是还多了点东西,不知道是什么……
用D12,打开soft_connect之后,我读缓冲区连续读了16bytes,读出数据如下:
C0 08 80 06 00 01 00 00 40 00 00 00 00 00 00 00 从80 06开始的8bytes应该就是GET_DESCRIPTOR了,但是前面的C0 08是什么? 还有,我想用bushound来抓这些数,但是device里面只有usb root hub可以选择,没有看到Get_Descriptor.请问用什么可以抓到? |
|
沙发#
发布于:2004-08-12 13:40
我用bus hound5.0捕捉到get_descriptor为80 06 00 01 00 00 40 00,但是就没有了下文,我保存了最后的中断寄存器的状态,为0x4000,也就是总线复位中断,不知道为什么不是端点0输入中断,麻烦楼主提点提点。
|
|
板凳#
发布于:2004-08-12 15:50
试一下在softconnect之前,选择端点0用FAh命令使缓冲区有效。
我在softconnect之后得到的中断寄存器的状态是0xC1 。 |
|
地板#
发布于:2004-08-12 16:31
试了下,还是老样子。
给d12发0xFD,能返回0x1210,d12工作正常,总线上的数据也正常。怀疑是固件程序的问题,但是调试了下,单片机确实没有接收到控制端点输入的中断信号。搞不懂哪里出的问题。 |
|
地下室#
发布于:2004-08-12 16:57
兄弟:
C0是挂起和总线复位信号,因为你没有响应所以同时显示出来了. 在得到get description前收到挂起和复位信号是正常的,你可以参照USB协议集.不用理会复位和挂起信号. :D |
|
5楼#
发布于:2004-08-12 17:27
to liuxiaoxi
谢谢你的回复。我猜想也是,只是对协议不熟悉。 |
|
6楼#
发布于:2004-08-12 17:29
to egrias
D12好像没有0xFD这命令吧? 那SUSPEND脚有没有被置高呢? [编辑 - 8/12/04 by LikeDDK] |
|
7楼#
发布于:2004-08-13 09:10
0xFD在协议里是没有的,不过我看了许多的帖子提到,用于查看d12是不是正常工作,大家都说返回的是0x1210。
我的电路是模仿周立功的smart板的,没有使用74HCT123,所以程序中所有进入挂起状态的地方都去掉了,上电后SUSPEND都是低电平。 我用bus hound得到的数据如下: Device Phase Data Description Cmd.Phase.Ofs(rep) ------ ----- ------------------------ ---------------- ------------------ 9.1 DI 04 . 1.1.0 9.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 2.1.0(2) 9.0 DI 01 03 01 00 .... 2.2.0 9.0 CTL 23 01 10 00 02 00 00 00 CLEAR FEATURE 4.1.0 9.0 CTL a3 00 00 00 01 00 04 00 GET STATUS 5.1.0 9.0 DI 00 01 00 00 .... 5.2.0 9.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 6.1.0 9.0 DI 01 03 00 00 .... 6.2.0 9.1 DI 04 . 7.1.0 9.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 8.1.0(2) 9.0 DI 00 01 01 00 .... 8.2.0 9.0 CTL 23 01 10 00 02 00 00 00 CLEAR FEATURE 10.1.0 9.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 11.1.0 9.0 DI 01 03 01 00 .... 11.2.0 9.0 CTL 23 03 04 00 02 00 00 00 SET FEATURE 12.1.0 9.1 DI 04 . 13.1.0 9.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 14.1.0 9.0 DI 00 01 11 00 .... 14.2.0 9.0 CTL 23 01 14 00 02 00 00 00 CLEAR FEATURE 15.1.0 9.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 16.1.0 9.0 DI 00 01 01 00 .... 16.2.0 9.0 CTL 80 06 00 01 00 00 40 00 GET DESCRIPTOR 17.1.0 9.0 USTS 05 00 00 80 no response 17.2.0 前面的应该是d12自动完成的,主控器请求设备描述符就失败了,在中断服务子程序中i_st = D12_ReadInterruptRegister()的值保存的下来,没有端点0OUT的中断信号,而且最后读到的中断寄存器值是0x40,似乎d12没有接收到这个包。d12的D+、D-都经过18欧姆的电阻接到总线,分别有1M的弱下拉和上拉。 |
|