20楼#
发布于:2004-04-08 12:09
我是811的供应商,我成功的推了很多客户,没有听说怎么慢啊! 我猜是我自己水平问题,因为楼上那位大虾做到了800KB。我会和你联系的,另外问一下你用8051+811一般可以做的多少速度,最好的可以达到多少速度 |
|
21楼#
发布于:2004-04-08 14:53
与设备端也有关系。不同的U盘也有很大差别。
800K是纯写入速度吗? 我用AVR,14。7M,读取串行FLASH,写 FAT16操作,只能达到大概200K。用30M,DSP,读取NAND FLASH,写 FAT16操作,能达到大概400K。但再增加频率,速度没有明显改善。 |
|
22楼#
发布于:2004-04-08 16:20
78c438 24M
直接把优盘中的数据读到外部RAM中,读128K需要5.5秒。 用的是中断做的,而非查询等待。未使用811双缓冲。 我没有做任何等待延时。 我认为楼主说需要等可能是因为程序错误,我曾经也认为需要等待,结果是因为我的串行调试信息在串行中断时与811数据发生冲突,等待其实是让串行数据全部送出后再对811操作。 |
|
23楼#
发布于:2004-04-08 16:42
我要份数荡东西 呵呵 :D :D :D穷啊
|
|
|
24楼#
发布于:2004-04-08 16:44
只能到300k一般u盘问题
|
|
|
25楼#
发布于:2004-04-08 19:43
89c51 ram rom 空间不够吧,得扩展
|
|
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.....
|
|
27楼#
发布于:2004-04-08 23:32
may up to 200kB/s
|
|
28楼#
发布于:2004-04-09 08:48
兄弟 去掉你个同步就可以了 呵呵 同步只能到64k 呵呵 你做的不错了 用汇编改过了 是吗?
哈哈 |
|
|
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] |
|
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
|
|
31楼#
发布于:2004-04-11 10:19
89c51 ram rom 空间不够吧,得扩展 目前code差不多要20多K,RAM我猜应该是多多益善。呵呵 偶很菜 |
|
32楼#
发布于:2004-04-11 10:25
目前我把缓冲区加大到了4KB,速度可以达到5KB/sec,就是除去创建文件单纯向里面添数据的速度吧。
我用的是Cypress的代码,他是用的查询中断的方式做的,因此加入双缓冲似乎比较麻烦。郁闷呀 呵呵,问个问题,C里面嵌入汇编是把汇编单独作为一个文件写么?还是放在C语言文件里面。我真的很菜的,没有用过嵌入汇编的C |
|
33楼#
发布于:2004-04-12 10:06
兄弟 高定了吗
|
|
|
34楼#
发布于:2004-04-12 10:23
我使用的是Cypress的源代码,查询中断来进行usb传输,然后在Bulk Only层上每发送一个CBW、接收一个数据(主要在read10和write10中)就要延迟若干,而且不延迟就肯定出错。
********************************************************* read10和write10的延迟主要来自于单片机读写USB芯片的buffer,USB芯片与U盘的传输速度还是很快的。所以提速的要点是减少对USB芯片buffer的访问次数。 |
|
35楼#
发布于:2004-04-12 13:53
CYPRESS给的源代码有问题的。
|
|
36楼#
发布于:2004-04-13 12:28
read10和write10的延迟主要来自于单片机读写USB芯片的buffer,USB芯片与U盘的传输速度还是很快的。所以提速的要点是减少对USB芯片buffer的访问次数。 可是811提供的仅仅240Byte的数据,BulkOnly协议里面的端口一次也只能传输64字节的数据。因此我在811芯片的Buffer设置的是64KB,是不是可以改动呢? |
|
37楼#
发布于:2004-04-13 12:43
purple.sun,我给你看的原理图怎样呵?
|
|
38楼#
发布于:2004-04-13 12:46
哈哈高定了没哦
这么个小东西 不要说还没搞定哦 |
|
39楼#
发布于:2004-04-13 13:01
sunshangxin_1 :
我也想做51+811hs读U盘,大虾我给看个源理图(51+sl811hs)是否可行了,好吗?多谢 |
|