purple.sun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-17
  • 最后登录2013-08-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2004-04-08 12:09
我是811的供应商,我成功的推了很多客户,没有听说怎么慢啊!
要不你联系我详细谈谈,我可以让我们FAE或者成功客户的工程师来支持你.
tonychen.sh@ptcc.com.tw


我猜是我自己水平问题,因为楼上那位大虾做到了800KB。我会和你联系的,另外问一下你用8051+811一般可以做的多少速度,最好的可以达到多少速度
strongxg
驱动牛犊
驱动牛犊
  • 注册日期2002-04-14
  • 最后登录2011-08-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2004-04-08 14:53
与设备端也有关系。不同的U盘也有很大差别。
800K是纯写入速度吗?
我用AVR,14。7M,读取串行FLASH,写 FAT16操作,只能达到大概200K。用30M,DSP,读取NAND FLASH,写 FAT16操作,能达到大概400K。但再增加频率,速度没有明显改善。
zf_98412
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2004-04-08 16:20
78c438  24M
直接把优盘中的数据读到外部RAM中,读128K需要5.5秒。
用的是中断做的,而非查询等待。未使用811双缓冲。
我没有做任何等待延时。
我认为楼主说需要等可能是因为程序错误,我曾经也认为需要等待,结果是因为我的串行调试信息在串行中断时与811数据发生冲突,等待其实是让串行数据全部送出后再对811操作。
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2004-04-08 16:42
我要份数荡东西 呵呵 :D :D :D穷啊
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2004-04-08 16:44
只能到300k一般u盘问题
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
ww7002
驱动牛犊
驱动牛犊
  • 注册日期2004-01-10
  • 最后登录2010-07-13
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2004-04-08 19:43
89c51 ram rom 空间不够吧,得扩展
jinqiu
驱动牛犊
驱动牛犊
  • 注册日期2004-04-05
  • 最后登录2008-05-26
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2004-04-08 19:59
55555555555,快挂了。我这边是51+SL8ll 读的速度恒定在50k/s,只需要高速读入到RAM中,速度达到350k+/s。单片机是W77e58,4分频。24M晶体。虽然可以用更强力的89c420(1分频),可是现在的底数就算换CPU也不可能达到350K/s。我哭啊,优化了3天了,读数部分用汇编重写。没有太大的飞跃。那位大侠帮忙看看时间浪费在哪儿啊?用的是 Cypress的部分源码,自己感觉Ping/pong 哪个部分应该是没用上,不知道怎么实现,哪儿高人能帮忙看看我的这部分代码。我不知道还有什么办法了。请留一下Email.....
roycelou
驱动牛犊
驱动牛犊
  • 注册日期2003-12-29
  • 最后登录2004-07-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2004-04-08 23:32
may up to 200kB/s
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2004-04-09 08:48
兄弟 去掉你个同步就可以了 呵呵 同步只能到64k 呵呵 你做的不错了 用汇编改过了 是吗?
哈哈
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
zf_98412
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2004-04-09 08:53
双缓冲那个其实很容易懂.
比如我现在读数据是这样的:
启动传输-等待中断-读数据-启动传输
而双缓冲则是:
启动传输-等待中断-启动下一次传输(当然是这一次成功的情况下)-读数据,即把传输与读数据并行.
因为这两次传输使用的SL811的内存范围不一样,所以不会有问题.
如:第一次读使用REG_USBA_BASEADDR=0x20,读回来的数据就是放在0x20开始的RAM中,在成功后,立即把REG_USBA_BASEADDR=0x60,再读第二次.这就不会影响0x20-0x5f中的数据,你就可以在USB传输的同时进行SL811读数据操作.速度当然会快一点.
可惜我不能那么做,因为我的速度要求不高,我现在的速度还嫌快.我老大还要我降到5K/s左右.

至于要优化的,我认为你最好把SL811的基本读写优化一下,用汇编写.

[编辑 -  4/9/04 by  zf_98412]
jinqiu
驱动牛犊
驱动牛犊
  • 注册日期2004-04-05
  • 最后登录2008-05-26
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
30楼#
发布于:2004-04-09 21:07
现在我的板子的读取速度仍停留在50k/s。既:每读1byte需要20us.我已经把SL811的读函数用汇编优化,用了16个机器周期可以完成从811读1byte并写入存储器中。我用的w77e58在4分频24M,则我完成从811读1byte并写入存储器中用了顶多5us.所以有15us浪费在和Sl811通讯和等待中断上了。我没有仿真器,所以也不知道时间浪费在哪儿了。通过反复调试发现在批量读入数据的过程中间,突然会有一个较大的时间的越变。如果可以的话,那位请看看我和811通讯的函数,并指点一下么?QQ=320946.Mail:s9705040@sina.com
purple.sun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-17
  • 最后登录2013-08-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
31楼#
发布于:2004-04-11 10:19
89c51 ram rom 空间不够吧,得扩展


目前code差不多要20多K,RAM我猜应该是多多益善。呵呵
偶很菜
purple.sun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-17
  • 最后登录2013-08-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
32楼#
发布于:2004-04-11 10:25
目前我把缓冲区加大到了4KB,速度可以达到5KB/sec,就是除去创建文件单纯向里面添数据的速度吧。

我用的是Cypress的代码,他是用的查询中断的方式做的,因此加入双缓冲似乎比较麻烦。郁闷呀

呵呵,问个问题,C里面嵌入汇编是把汇编单独作为一个文件写么?还是放在C语言文件里面。我真的很菜的,没有用过嵌入汇编的C
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
33楼#
发布于:2004-04-12 10:06
兄弟 高定了吗
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
hustdj
驱动牛犊
驱动牛犊
  • 注册日期2003-06-06
  • 最后登录2008-07-02
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
34楼#
发布于:2004-04-12 10:23
我使用的是Cypress的源代码,查询中断来进行usb传输,然后在Bulk Only层上每发送一个CBW、接收一个数据(主要在read10和write10中)就要延迟若干,而且不延迟就肯定出错。
*********************************************************


read10和write10的延迟主要来自于单片机读写USB芯片的buffer,USB芯片与U盘的传输速度还是很快的。所以提速的要点是减少对USB芯片buffer的访问次数。
wangzzdd
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2005-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
35楼#
发布于:2004-04-12 13:53
CYPRESS给的源代码有问题的。
purple.sun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-17
  • 最后登录2013-08-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
36楼#
发布于:2004-04-13 12:28
read10和write10的延迟主要来自于单片机读写USB芯片的buffer,USB芯片与U盘的传输速度还是很快的。所以提速的要点是减少对USB芯片buffer的访问次数。


可是811提供的仅仅240Byte的数据,BulkOnly协议里面的端口一次也只能传输64字节的数据。因此我在811芯片的Buffer设置的是64KB,是不是可以改动呢?
liuzq
驱动小牛
驱动小牛
  • 注册日期2003-05-25
  • 最后登录2004-06-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
37楼#
发布于:2004-04-13 12:43
purple.sun,我给你看的原理图怎样呵?
sunshangxin_1
驱动牛犊
驱动牛犊
  • 注册日期2004-04-12
  • 最后登录2004-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
38楼#
发布于:2004-04-13 12:46
哈哈高定了没哦
这么个小东西
不要说还没搞定哦
liuzq
驱动小牛
驱动小牛
  • 注册日期2003-05-25
  • 最后登录2004-06-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
39楼#
发布于:2004-04-13 13:01
sunshangxin_1 :

  我也想做51+811hs读U盘,大虾我给看个源理图(51+sl811hs)是否可行了,好吗?多谢
游客

返回顶部