这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » usb 请教一个关于usb枚举的问题

共2条 1/1 1 跳转至

usb 请教一个关于usb枚举的问题

院士
2006-09-17 18:14:16     打赏
usb 请教一个关于usb枚举的问题



关键词: 请教     一个     关于     枚举     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 采用D12芯片,在主机从设备读取描述符的时候,设备描述符是通过几次发送的(因为D12端口0的数据缓冲区只有十六个字节),但是发现,主机只读取一次数据,之后就不在发送in命令了。(用USB分析仪,发现只有一次in命令,之后主机就发送一个out命令 ,结束了数据传输)。
请高手帮忙解答一下!谢了先!! 1: 对于刚插入的设备,在复位后,主机发一个获取描述符的命令如果有数据返回,就认为设备正常,接下来就会发送设置地址(SET ADDRESS)命令。
第一次获取描述符(GET DESCRIPTOR)时,只负责检测是否有描述符返回,而不管这个描述符有多长。

所以,如果你的描述符超过16字节,在D12返回一次数据后,主机将不再发送输入请求包,
而转换到设置地址阶段。设置地址后,USB HOST将使用新的地址,对设备进行获取描述符
操作,这时可返回完整的描述符。 2: 不是那个意思主机发送第一次获取设备描述符的命令,设备可以正常返回数据
然后主机发送地址命令,也对
设置地址后,主机使用新的地址,对设备进行获取描述符的操作,这时返回的第一次数据也对,但是并没有一次传输完,而主机却不再发送新的IN命令了!!

整个枚举的过程是对的,只是当要发送的数据长度大于EP0的最大数据传输量时(我设的是16个字节),就只能传输一次。

不知道是哪里有问题,硬件应该是对的!
晕了,高手帮帮忙啊!

huhu!!

3: 枚举过程如下:PID:SETUP  ADDR:00  ENDP:00  CRC5:02  idle:3
PID:DATA0  data:80  06  00  01  00  00  40  00  CRC16:94dd  idle:6
PID:ACK  idle:2e18
PID:SOF  FRAME:3a0  CRC5:0a  idle:6
PID:IN  ADDR:00  ENDP:00  CRC5:02  idle:8
PID:NAK  idle:2e7d
PID:SOF  FRAME:3a1  CRC5:15  idle:6
PID:IN  ADDR:00  ENDP:00  CRC5:02  idle:8
PID:DATA1  data:12  01  10  01  00  00  00  40  71  04  01  00  13  01  01  00  CRC16:1df8  idle:8
PID:ACK  idle:2dd3
PID:SETUP  ADDR:00  ENDP:00  CRC5:02  idle:3
PID:DATA0  data:00  05  01  00  00  00  00  00  CRC16:25eb  idle:6
PID:ACK  idle:2e1a
PID:SOF  FRAME:3de  CRC5:12  idle:6
PID:IN  ADDR:00  ENDP:00  CRC5:02  idle:8
PID:NAK  idle:2e7d
PID:SOF  FRAME:3df  CRC5:0d  idle:6
PID:IN  ADDR:00  ENDP:00  CRC5:02  idle:8
PID:DATA1  data:CRC16:0000  idle:8
PID:ACK  idle:2e53

PID:SETUP  ADDR:01  ENDP:00  CRC5:1d  idle:3
PID:DATA0  data:80  06  00  01  00  00  12  00  CRC16:f4e0  idle:6
PID:ACK  idle:2e1a
PID:SOF  FRAME:41d  CRC5:1c  idle:6
PID:IN  ADDR:01  ENDP:00  CRC5:1d  idle:7
PID:NAK  idle:2e7d
PID:SOF  FRAME:41e  CRC5:14  idle:6
PID:IN  ADDR:01  ENDP:00  CRC5:1d  idle:8
PID:DATA1  data:12  01  10  01  00  00  00  40  71  04  01  00  13  01  01  00  CRC16:1df8  idle:8
PID:ACK  idle:2dd3
PID:SOF  FRAME:41f  CRC5:0b  idle:2ebc
PID:SOF  FRAME:420  CRC5:07  idle:6
PID:OUT  ADDR:01  ENDP:00  CRC5:1d  idle:3
PID:DATA1  data:CRC16:0000  idle:6
PID:ACK  idle:2e59
PID:SOF  FRAME:421  CRC5:18  idle:2ebd
PID:SOF  FRAME:422  CRC5:10  idle:2ebd
PID:SOF  FRAME:423  CRC5:0f  idle:2ebd
PID:SOF  FRAME:424  CRC5:00  idle:2ebd


这里,实际上数据还没有发送完,但是主机却不再发送IN命令了!!

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]