baohuicumt
驱动牛犊
驱动牛犊
  • 注册日期2007-08-10
  • 最后登录2012-03-20
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
阅读:1326回复:5

请教比量传输与速度问题,烦请高手帮忙

楼主#
更多 发布于:2007-09-22 12:10
各位达人好,俺最近搞一个LPC2378+ISP1161的USB主机项目,遇到几个问题请教各位达人:
1,在批量传输数据的时候经常出现这样的情况(但不是每次都出现):命令阶段正常,数据阶段正常,可到了状态阶段出现了问题,单步跟踪后发现是状态阶段收到的PTD数据结构中的ActualBytes域本来应该是13字节(CSW),但实际收到的是0字节,但是收到的PTD中的CompletionCode域却是正确的0x00;这样的情况只要出现一次,以后的批量传输就都回出错,导致整个数据传输过程失败。但是,如果在批量传输的数据阶段之后加入一个比较大的延时,这样的情况出现的几率会大大的降低,请问有哪位达人遇到过这样的情况?为什么会出现这样的情况?
2,传输速度的问题。我们的主机写U盘的速度经过测试只有3.xKB/s,写一副300k左右的图片到U盘用了一分钟左右,速度出奇的慢。我们的2378用的是模拟总线,理论上说模拟总线的速度会慢一些,但即使这样,主控器每次向1161送出16位数据之后必须加入一个计数大约5000左右的延时,否则ADS就会出现“取数据终止”的错误,并且程序根本无法执行加入延时之后程序才会正常运行,请各位达人帮忙分析一下原因!!

感激涕零!!!
baohuicumt
驱动牛犊
驱动牛犊
  • 注册日期2007-08-10
  • 最后登录2012-03-20
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-22 12:49
自己顶
baohuicumt
驱动牛犊
驱动牛犊
  • 注册日期2007-08-10
  • 最后登录2012-03-20
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-09-24 09:29
这么多人看贴,怎么就没有人回呢??
baohuicumt
驱动牛犊
驱动牛犊
  • 注册日期2007-08-10
  • 最后登录2012-03-20
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-09-24 19:33
那位达人知道就说说阿,这个问题几天了小弟之一解决不了啊
lejianz
驱动中牛
驱动中牛
  • 注册日期2003-03-05
  • 最后登录2023-11-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望145点
  • 贡献值0点
  • 好评度116点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2007-09-25 09:38
这样具体的问题可能只得自己慢慢地解决。

1。不能正确得到状态包的原因有多方面。不同的U盘处理可能不一样,也许你发过到的命令包,数据包不正确的话,U盘会有一个延迟。你找一下好的U盘试一下。另外,可通过看WINDOWS如何处理来多做试验。另外,你可在命令包后,加一段延时,因为,如果你数据包发得太快的话,U盘还没来得及处理,它就会当错误。

2、这肯定是不正常,好好查一下你的读取1161的寄存器的时序是否正确。是否可正确读到CHIP ID值,在发送命令字后可尝试等一下MS,然后再发数据字。
一起交流,共同提高!
baohuicumt
驱动牛犊
驱动牛犊
  • 注册日期2007-08-10
  • 最后登录2012-03-20
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-09-25 16:17
引用第4楼lejianz于2007-09-25 09:38发表的  :
这样具体的问题可能只得自己慢慢地解决。

1。不能正确得到状态包的原因有多方面。不同的U盘处理可能不一样,也许你发过到的命令包,数据包不正确的话,U盘会有一个延迟。你找一下好的U盘试一下。另外,可通过看WINDOWS如何处理来多做试验。另外,你可在命令包后,加一段延时,因为,如果你数据包发得太快的话,U盘还没来得及处理,它就会当错误。

2、这肯定是不正常,好好查一下你的读取1161的寄存器的时序是否正确。是否可正确读到CHIP ID值,在发送命令字后可尝试等一下MS,然后再发数据字。


首先谢谢楼上高人回答我的问题
关于问题1,你说的没错,我遇到的问题也是这样,手头有两个u盘怎么整都没有问题。但是有金士顿1G的,朗科1G的,还有个清华紫光512M的都回出现上述我说的问题。我也不知道Windows下世怎么处理这个问题的,要是楼上高人知道,麻烦您能不能给小弟说说

关于问题二:出现这样的问题,我们用同样的模拟时序来读写16位,32位寄存器,奇怪的是读写32位寄存器的时候是两次调用模拟时序读或写数据,就不用加延时,但是读写16位寄存器时必须在模拟时序后面加上延时,不知道为什么?32位只是执行两次模拟失学而已阿,怎么就不行呢?

问题3,用模拟时序向16位数据线送出数据也需要延时,但是送出命令和读入数据时就不需要延时,不知道您知不知道我遇到的问题该从何处下手解决??
游客

返回顶部