阅读:1325回复:5
请教比量传输与速度问题,烦请高手帮忙
各位达人好,俺最近搞一个LPC2378+ISP1161的USB主机项目,遇到几个问题请教各位达人:
1,在批量传输数据的时候经常出现这样的情况(但不是每次都出现):命令阶段正常,数据阶段正常,可到了状态阶段出现了问题,单步跟踪后发现是状态阶段收到的PTD数据结构中的ActualBytes域本来应该是13字节(CSW),但实际收到的是0字节,但是收到的PTD中的CompletionCode域却是正确的0x00;这样的情况只要出现一次,以后的批量传输就都回出错,导致整个数据传输过程失败。但是,如果在批量传输的数据阶段之后加入一个比较大的延时,这样的情况出现的几率会大大的降低,请问有哪位达人遇到过这样的情况?为什么会出现这样的情况? 2,传输速度的问题。我们的主机写U盘的速度经过测试只有3.xKB/s,写一副300k左右的图片到U盘用了一分钟左右,速度出奇的慢。我们的2378用的是模拟总线,理论上说模拟总线的速度会慢一些,但即使这样,主控器每次向1161送出16位数据之后必须加入一个计数大约5000左右的延时,否则ADS就会出现“取数据终止”的错误,并且程序根本无法执行加入延时之后程序才会正常运行,请各位达人帮忙分析一下原因!! 感激涕零!!! |
|
沙发#
发布于:2007-09-22 12:49
自己顶
|
|
板凳#
发布于:2007-09-24 09:29
这么多人看贴,怎么就没有人回呢??
|
|
地板#
发布于:2007-09-24 19:33
那位达人知道就说说阿,这个问题几天了小弟之一解决不了啊
|
|
地下室#
发布于:2007-09-25 09:38
这样具体的问题可能只得自己慢慢地解决。
1。不能正确得到状态包的原因有多方面。不同的U盘处理可能不一样,也许你发过到的命令包,数据包不正确的话,U盘会有一个延迟。你找一下好的U盘试一下。另外,可通过看WINDOWS如何处理来多做试验。另外,你可在命令包后,加一段延时,因为,如果你数据包发得太快的话,U盘还没来得及处理,它就会当错误。 2、这肯定是不正常,好好查一下你的读取1161的寄存器的时序是否正确。是否可正确读到CHIP ID值,在发送命令字后可尝试等一下MS,然后再发数据字。 |
|
|
5楼#
发布于:2007-09-25 16:17
引用第4楼lejianz于2007-09-25 09:38发表的 : 首先谢谢楼上高人回答我的问题 关于问题1,你说的没错,我遇到的问题也是这样,手头有两个u盘怎么整都没有问题。但是有金士顿1G的,朗科1G的,还有个清华紫光512M的都回出现上述我说的问题。我也不知道Windows下世怎么处理这个问题的,要是楼上高人知道,麻烦您能不能给小弟说说 关于问题二:出现这样的问题,我们用同样的模拟时序来读写16位,32位寄存器,奇怪的是读写32位寄存器的时候是两次调用模拟时序读或写数据,就不用加延时,但是读写16位寄存器时必须在模拟时序后面加上延时,不知道为什么?32位只是执行两次模拟失学而已阿,怎么就不行呢? 问题3,用模拟时序向16位数据线送出数据也需要延时,但是送出命令和读入数据时就不需要延时,不知道您知不知道我遇到的问题该从何处下手解决?? |
|