kelvin9230
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2003-06-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1846回复:6

HELP!!! 关于USB CF读卡器

楼主#
更多 发布于:2002-06-19 16:53
本人有一USB CF读卡器, 芯片是Genesys Logic的GL641USB. BULK ONLY, SCSI TRANSPARENT COMMAND SET.
发出指令后第一次能正确执行(CBW->DATA->CSW三个阶段没有任何错误)(如读一扇区)。
可是后面再发指令就再也不执行了(如再发读一扇区指令),
CBW阶段能有ACK响应,后面的DATA阶段就得到NAK,设备无响应,不执行操作。指令都是正确的,放到第一次都能正确执行
我是在DOS下写的UHCI的驱动和设备驱动.想尽一切方法都无效.
欢迎高手指点一二.
欢迎联系kelvin@ldic-china.com
Tel:021-64728712 吴华

[编辑 -  6/21/02 by  kelvin9230]
kelvin9230
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2003-06-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-21 16:24
push!push!push!push!push!
strongxg
驱动牛犊
驱动牛犊
  • 注册日期2002-04-14
  • 最后登录2011-08-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-21 16:57
我回复你了。好,再详细的说一遍。

你仔细的看批量处理的格式框图。注意以下说明:通过使用数据序列触发比特和DATA0/DATA1 PID,可以获得数据分组同步。并仔细看数据触发同步和重试的内容。

注意:

枚举成功后,将批处理的OUT,IN端点初始化为DATA0 PID。以后按DATA0/DATA1交替使用。

批量写: DATA0,DATA1,DATA0,DATA1。。。。。。
批量读: DATA0,DATA1,DATA0,DATA1。。。。。。

注意:两个管道是独立的。
注意:得到ACK后才翻转。NAK重复原过程。
kelvin9230
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2003-06-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-21 17:40
Thanks a lot. Let me try.

Maybe, I make mistake here:
The chip\'s bulk_in and bulk_out by 64 bytes in max size.
Read one sector(512 bytes), Then read one sector(512 bytes) again.
There should be 8 TDs in data section.
OUT------------IN    
CBW(DATA0)-----DATA(DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1)---CSW(DATA0)
OUT------------IN    
CBW(DATA0)-----DATA(DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1)---CSW(DATA0)

So, the correct sequence should be like this:

OUT------------IN    
CBW(DATA0)-----DATA(DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1)---CSW(DATA0)
OUT------------IN    
CBW(DATA1)-----DATA(DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0)---CSW(DATA1)

The first CSW\'s data toggle is DATA0, so the next bulk_in TD\'s DATA toggle should be DATA1. Is it correct?


[编辑 -  6/21/02 by  kelvin9230]
kelvin9230
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2003-06-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-21 21:36
Gooooooooood!!!
My driver works now!!!
Thanks, strongxg. You really saved me out from hell!!!

The sequence is:
OUT------------IN
CBW(DATA0)-----DATA(DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1)---CSW(DATA0)
OUT------------IN
CBW(DATA1)-----DATA(DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0)---CSW(DATA1)

We beginners should not make such foolish mistake again!!!
So I will paste our chat on the forums.
strongxg
驱动牛犊
驱动牛犊
  • 注册日期2002-04-14
  • 最后登录2011-08-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-22 11:54
ok!
strongxg
驱动牛犊
驱动牛犊
  • 注册日期2002-04-14
  • 最后登录2011-08-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-22 12:12
我也是个初学者。希望大家能互相提供帮助!望高手们不吝赐教!
游客

返回顶部