Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1999回复:17

FX2不够快吗?

楼主#
更多 发布于:2002-06-26 10:27
各位仁兄:
    480M的传输速度应该够快的了,可我从一个5M的CCD读取数据,还会出现ENDPOINT FULL标志,同时丢失相当一部分数据。这会是谁的错?HOST,FX2, OR MASTER?
    请指教!
    
Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-26 10:54
    HOST:   主机应用程序不是很好,我已经让它足够简练了,
             没有多余的判断,数据也没有进行任何处理。
    FX2:    固件有一个小问题,我用AUTOIN=1,按说固件不影响
             数据传输,可我感到担心,因为数据传输时,固件还
             在产生一个波形,用到了EZUSB_DELAY(500)。数据传
             输可以和固件同时工作吗?
    MASTER: CCD一帧数据每一行结束是不是最好送一个PKEND?
Ten
Ten
驱动牛犊
驱动牛犊
  • 注册日期2002-04-03
  • 最后登录2003-11-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-26 10:55
很正常,扩大缓冲吧。
Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-26 11:15
//     很正常,扩大缓冲吧。
----------------------------------


想到过会是这样的问题,可从来没尝试过。
Ten
Ten
驱动牛犊
驱动牛犊
  • 注册日期2002-04-03
  • 最后登录2003-11-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-27 09:11
请问你说的5M是BYTE还是BIT?
还有,在没有增加缓冲的情况下,我试过用全速和高速两种模式去接收数据,寄存器设置保持不变,全速能接收400KBYTE/S而不掉数据,但高速的话,再慢哪怕不到200KBYTE/S都掉数据,而且都不知道掉多少,我都不知道什么原因。
冲浪
游客
游客
5楼#
发布于:2002-06-27 09:30
   HOST:   主机应用程序不是很好,我已经让它足够简练了,
             没有多余的判断,数据也没有进行任何处理。
    FX2:    固件有一个小问题,我用AUTOIN=1,按说固件不影响
             数据传输,可我感到担心,因为数据传输时,固件还
             在产生一个波形,用到了EZUSB_DELAY(500)。数据传
             输可以和固件同时工作吗?
    MASTER: CCD一帧数据每一行结束是不是最好送一个PKEND?


HOST部分相信是没有问题的。

MASTER:你指的是CCD一帧数据送信头信尾吗?建议一定加上,虽然这个对你的传送速度没有什么影响,但可以方便你别的地方的很多操作。

关于传送速度,一个是加大缓冲,另一方面检查一下固件部分。
冲浪
游客
游客
6楼#
发布于:2002-06-27 09:36
请问你说的5M是BYTE还是BIT?
还有,在没有增加缓冲的情况下,我试过用全速和高速两种模式去接收数据,寄存器设置保持不变,全速能接收400KBYTE/S而不掉数据,但高速的话,再慢哪怕不到200KBYTE/S都掉数据,而且都不知道掉多少,我都不知道什么原因。


若他用的是线阵CCD,5M肯定是BIT,不太可能是byte.
比如CCD有3000像素,一个像素的信号是16bit,1秒采100帧,乘起来是4.8M BIT.
冲浪
游客
游客
7楼#
发布于:2002-06-27 09:52
我没有用USB做过类似的东西。
但是随便在市场上买一块没有隔离的DIO卡来读取这种CCD数据,读取的速度都能达到1M byte/s以上,怎么使用USB更差了呢?估计还是你自己没有做对吧?
谁能解释的更清楚一点呢?
Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-06-27 10:38
///////////////////////////////
多谢!!!
、、、、、、、、、、、、、、、、

我的CCD工作频率是5M,一帧是1024X1024象素,一个象素12位。
也就是一帧图象有2M字节数据。


在内存中扩大缓冲区,还不知如何去做。看了一些书也不知如何下手。
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-06-27 10:44
68013的GPIF有初始化问题.你可以到cypress上去看看.
如果不解决的话,速度始终提不高.
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
冲浪
游客
游客
10楼#
发布于:2002-06-27 12:27
takaya的建议可能是说到正点上了,我不太懂,你可以好好看看。

一秒钟采几帧?

做CCD数据接收我觉得比较典型的方法是:
1.CCD驱动、A/D电路等等部分
这部分的功能是处理CCD接收的信号,并把数据存到FIFO里
2.读取、送PC机
这部分可以用常见的DIO卡,或者通过Usb接口传到PC。

总体来说就是这两大部分,也可能这两部分是叠加的,但思路还是这样的。
Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-06-28 09:17
我还没敢用GPIF呢,眼下用的是SLAVE FIFO模式。这个不存在初始化问吧?
///////////////////
一秒可以采两帧图象。实际我只有在需要的时候读取一帧图象。CCD还有别的工作。
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-06-28 09:18
我们用68013做过一个数据采集的东东.
在68013的说明书上没有说GPIF需要初始化,当我们按它的例子使用的时候,发现即使我们把一个包设为512B,但也只能传送32B的数据.估计你们的瓶颈也在这个上面.
因为我在那个系统中不做GPIF部分,所以也不清楚倒底怎么解决的,但好像cypress公司的论坛里有解决方法.

解决了初始化问题后,我们的速度可以达到300Mbit/s,够快了吧.
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-07-02 13:37
想到的方法都试了,还是FIFO满,数据有失!
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-07-02 22:09
我们用68013做过一个数据采集的东东.
速度可以达到300Mbit/s,够快了吧.

厉害,我也搞一个试试
m678
驱动牛犊
驱动牛犊
  • 注册日期2002-02-06
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望24点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2002-07-02 23:17
你换速度快些的机器试试,我们用它做的摄像头,一定要在P4上才能正常,且要INTEL的芯片的主板.
Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-07-03 09:26
CPU,主板没有问题。
FX2中,FIFO是外接5M时钟;8051是48M;SIE应该是480M速度。
上面都不应该出问题。
现在感觉问题可能还是出在应用程序,和驱动上面。哪位仁兄可以告诉我应用程序和驱动怎么做才好?
Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-07-03 13:47
托大家福,原因找到了!
就是应用程序和驱动的问题。应用程序中inPacketSize越大,数据丢失越少。当inPacketSize = 1024*60 时,数据还能正常传输。但是当inPacketSize = 1024*64 时,出现in buffer failed。
我想如果不丢失数据, inPacketSize 就应该足够大,大概是1024*2048。现在的问题是在驱动程序中修改哪些值,才能使inPacketsize > = 1024*64.
游客

返回顶部