阅读:2332回复:10
68013 slavefifo一问!
我现在USB配置在slave fifo模式
用PC进行BULK读操作 但是我用vc将读进来的数据写入文件时,usb的fifo会满 这个时候就产生丢包 是不是因为我的pc写文件太慢 导致usb的fifo满 所以产生丢包? 哪位大虾能指点一下应该怎么解决呢? 因此我考虑将slave fifo的大小从512*2变成1024*3 不知道slave fifo模式下允许这样的配置么? 真的愁死我了 哪位能赐教 万分感谢! |
|
最新喜欢:![]() |
沙发#
发布于:2005-06-19 11:07
怎么会有丢包呢!只要你发的速度不是比USB快,就不会有丢包,硬盘写文件是很快的,至于FIFO写满的情况是有的,为了不冲掉上次的数据,你可以判断FIFO满标志吗,只要FIFO满,就让主控停止写FIFO,直到FIFO不满再写入!
|
|
板凳#
发布于:2005-06-19 15:58
可是我需要做到实时传输
外面的码流不断 我在外面做fifo似乎用处也不大。。。 |
|
地板#
发布于:2005-06-20 10:40
不是因为你写文件而丢的包,而是在读数据的时候已经丢了!
68013只支持大约1MB/s的实时传输速率,当你的传输速率大于这个数的时候就会丢包 你需要采用异步IO的读写方式,具体怎么操作请参考DDK下面的BulkUSB里的Read和Write函数 |
|
地下室#
发布于:2005-06-20 10:43
当然如果你把FIFO的块数增加可以稍微提高一点速率
我说的使用BULK双缓冲的情况,如果你用4缓冲可能会好一点 注意,Bulk最大包大小最多512,可以4缓冲,1024是不可能的 |
|
5楼#
发布于:2007-04-12 22:23
用户被禁言,该主题自动屏蔽! |
|
6楼#
发布于:2007-04-13 09:05
因为PC每启动一次bulk读,就算没有数据也需要0.1-0.2ms的时间,如果在这段时间内端点都满了,那么数据就丢失了
改成异步还是比较麻烦的,你可以尝试先用4x512缓冲,主机开双线程,1线程读数据,1线程写数据,这样能提高不少 |
|
7楼#
发布于:2007-04-13 17:29
用户被禁言,该主题自动屏蔽! |
|
8楼#
发布于:2007-04-16 08:55
异步的话 对SLWR的频率有什么要求吗?
我上次看到个68013的资料 看到异步SLWR最小的周期都需要50+70ns 这个时间好长啊 速度好象不是很快样的 |
|
9楼#
发布于:2007-04-16 09:45
你启动一次不管读多少数据都代表一次,驱动自己分割包耗时会非常小,延迟可以忽略
比如你一次读64K数据,那么在这64K数据中每个512间的延时是可以忽略不计的,最重要的延迟出现在两个64K传输中间那段时间。 |
|
10楼#
发布于:2007-04-19 20:22
看来要提高速度,驱动程序也很重要是嘛??
用CY68013自带的驱动速度行不行啊?? 楼上各位能留个QQ嘛! |
|