阅读:819回复:0
最近我在调1581的通讯,在IN端点出了点问题,不知可否和你们探讨一下?
最近我在调1581的通讯,在IN端点出了点问题,不知可否和你们探讨一下?
boyvsgirl9999@yahoo.com.cn 就我知道的1581的枚举过程如下: 不管是全速还是高速,过程一样,只是配置描述符不同: 1、下位机上电后,对1581复位,开始监视1581中断。 2、发现有复位总线复位中断后,下位机对1581复位。 3、检测到高速模式后,设高速标志为true. 4、主机请求设备描述符,1581回复相应的设备描述符(如高速标志为true则发高速的, 否则发全速的)。 5、主机发设置地址描述符,1581设好后回复一个空字节。 6、主机再请求设备描述符,下位机再加复。 7、主机请求配置描述符,9字节的标准配置描述符。下位机回复。 8、主机请求46字节的配置描述符,下位机回复配置+接口+4个端点的描述符和。 9、主机请求字符串描述符,先请求ID0,得到语言ID后,再请求ID1或ID2,得到设备描述字符串。 10、主机重复9一次。 11、主机查找驱动,找到后装入内存,发设置配置描述符。完成枚举过程。 以上过程就是在我这儿实现的,不管高速还是全速,都能枚举通过,但现在IN端点有点问题: 1、每次上电复位后上位机每次总要读64字节(全速)或512字节(高速),以后就正常了,我写几字节就读几字节。 2、就是我读端点长度寄存器,不管我把这个寄存器写入多少,每次读出总是64或512,不知何故。 3、我在IN端点发完一包后立即写一包到IN端点,想连续发来测速度,但行不通,写子程序是调用了,但IN缓冲区没数据,所以没法实现原来的想法,上位机发一包后就再也收不到了,也就是1581收到一包后再也没有成功写一包到IN缓冲区。 4、端点长度寄存器是控制每一包的长度还是控制每次上传到PC机数据的长度?也就是说置端点长度寄存器的值大于MaxPageSize的值可以吗? 以上问题不知哪位大侠能帮我解答一下,不胜感激!!! [编辑 - 12/26/03 by link_bridge] |
|
|