Bikky
驱动牛犊
驱动牛犊
  • 注册日期2003-12-01
  • 最后登录2017-02-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望11点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:818回复:0

最近我在调1581的通讯,在IN端点出了点问题,不知可否和你们探讨一下?

楼主#
更多 发布于:2003-12-26 09:29
最近我在调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]
百克
游客

返回顶部