阅读:1543回复:6
FX2 slave fifo的问题,大侠帮忙看看。
我试着开EP2端口做Auto out传输,并且是外部master用异步方式读取。
用20MHz的有源晶振输出时序信号给SLOE和SLRD引脚。 FIFOADR0,FIFOADR1接地,以选通EP2。 固件程序见附件。 为什么用CONTROL PANEL每次512字节往EP2发送,发送4个后,就显示不能发送。 Max oprations Pending Limit Reached. 似乎FIFO口并没有把数据送出去,难道FX2 Slave FIFO真的像别人告诉我那样不 能用auto out方式? 还是我的固件有错误。 哪位大侠帮忙看看,谢谢! //bow |
|
最新喜欢:![]() |
沙发#
发布于:2003-11-17 22:57
为什么用CONTROL PANEL每次512字节往EP2发送,发送4个后,就显示不能发送。
Max oprations Pending Limit Reached ------------------------------------------------ 因为我们一般采用EP2,512大小,如果是2倍BUFFER的话,那么大小就是1024;4倍BUFFER的话,可存储的就是512×4=2048;所以最多只能发送四次! :D |
|
板凳#
发布于:2003-11-19 12:45
我试着开EP2端口做Auto out传输,并且是外部master用异步方式读取。 谁跟你说的slave fifo不能用auto out方式???打他pp! 你的现象说明端点里的数据没有被外部master读走,因此你只能填充四次,如果你设的是双缓冲的话,说明外部读了两个包就停止了,因此一个是查你外部的时序是否和68013的slave fifo的读时序符合,另一个是查你得固件设置是否有问题,如ifclk的设置,读信号和标志信号的高低有效是否和外部逻辑匹配等。 |
|
地板#
发布于:2003-11-24 13:35
谢谢jinghuiren大侠!
问题解决了,是REVCTL这个寄存器设置错误。 还有个问题想请教大家。 可不可以在保证高速的情况下,让FIFO口不停的传输数据而EMPTY信号一直为非空呢? 我用VC编的主机端程序,计算一个大文件传输需要的时间。 --当我把文件分为4k往端口(out)发送的时候,700M的文件用了140000ms左右的时间。 那差不多有5MB/s的速度,虽然不高但也能达到要求。 而EMPTY标志(比如FLAGA引脚)也有时为EMPTY,表示端点为空。 --当我把文件分大为8k,16k,32k,64k发送的时候,尤其是32k,64k时,EMPTY标志总是为非空。 但是这时速度有很大影响,传输同样的文件要花几倍的时间。 我想应该是文件分割较大时,传输出错重新发送的时间也用得更多。 那么我可不可能在保证4MB/s左右的速度下,让EMPTY为非空呢? 谢谢! |
|
地下室#
发布于:2003-11-25 13:01
我顶
|
|
5楼#
发布于:2003-11-25 18:31
应该不是出错的原因,你可以试试把端点设成四缓冲,然后把其它的应用程序都关掉,在传输是不要做其它的事情,这样应该是最快的。
还有就是理论上说当你每次请求的数据量大的时候效率是增高的,也就是说应该是64k的数据最快。 |
|
6楼#
发布于:2003-11-26 13:46
应该不是出错的原因,你可以试试把端点设成四缓冲,然后把其它的应用程序都关掉,在传输是不要做其它的事情,这样应该是最快的。 原来大于4K时传输慢的问题解决了,应该是我的晶振输出不稳定。 现在一次发送50K,速度还不错。 但是jinghuiren大侠,你说的\"64k数据最快\"不对。我用64k传的时候总是出错,根本没法传数据。再看看《EZ-USB General Purpose Driver Specification》中IOCTL_Ezusb_BULK_WRITE的说明,nOutBufferSize必须小于64k。^_^ |
|