21ic电子技术开发论坛
标题:
CY7C68013的速率提不上去
[打印本页]
作者:
wjxcom
时间:
2010-11-23 10:47
标题:
CY7C68013的速率提不上去
各位好:
我现在在做usb方面的东西,到的问题是CY7C68013的速率提不上去。
测试系统结构:FPGA => CY7C68013 => PC
1、FPGA以16M/s连续产生16位并行测试数据至CY7C68013,即16M bytes/s
2、CY7C68013配置为SLAVE FIFO工作模式,端点2接受PC发出的命令,启动FPGA开始计数,接着端点8接受FPGA的计数器发出的数据。
测试过程及问题:将CY7C68013的端点缓冲区分别配置为双缓冲和四缓冲,用quartusii的SignalTap观察端点8的full信号,发现PC在接收数据的过程中,full信号由高变为低了。因此估计是PC未及时从FIFO中读取数据,但PC应用层只是执行了接收数据操作,不知是否低层驱动的问题。
其实我遇到的这个问题与
https://bbs.21ic.com/viewthread.php?tid=114226&highlight=CY7C68013%E7%9A%84%E9%80%9F%E7%8E%87%E6%8F%90%E4%B8%8D%E4%B8%8A%E5%8E%BB
是一样的,我看见版主computer00提出
驱动在取数据时,最好一时提交很大量的数据
。
我是写硬件的,不知道如何写软件,所以向大家请教一下,该如何写这个驱动呢?
作者:
computer00
时间:
2010-12-15 12:10
你先把你的应用软件的请求的数据包增大试试看吧。那个帖子里都说得很详细了,找做这个软件的兄弟帮忙看看。
作者:
wjxcom
时间:
2010-12-24 14:21
你好computer00:你说的应用软件是指什么?是产生驱动程序的软件吗?还是USB设备上位机的程序?
作者:
brucedd
时间:
2010-12-28 10:37
当然是PC
作者:
brucedd
时间:
2010-12-28 10:37
PC端的缓冲区增大
作者:
wjxcom
时间:
2010-12-28 16:00
感谢brucedd的回复,您说的PC端的缓冲区增大是如何实现的?在DS3.2产生的驱动程序理这样写吗?
m_Interface.Initialize(
m_Lower, //KUsbLowerDevice
0, //InterfaceNumber
1, //ConfigurationValue
0 //Initial Interface Alternate Setting
);
// Initialize each Pipe object
Ep1In.Initialize(m_Lower, 0x81, 65536);
Ep1Out.Initialize(m_Lower, 0x01, 65536);
Ep2In.Initialize(m_Lower, 0x82, 65536);
Ep2Out.Initialize(m_Lower, 0x02, 65536);
Ep4In.Initialize(m_Lower, 0x84, 65536);
Ep4Out.Initialize(m_Lower, 0x04, 65536);
Ep6In.Initialize(m_Lower, 0x86, 65536);
Ep6Out.Initialize(m_Lower, 0x06, 65536);
Ep8In.Initialize(m_Lower, 0x88, 65536);
Ep8Out.Initialize(m_Lower, 0x08, 65536);
作者:
wjxcom
时间:
2010-12-28 18:24
感谢brucedd的回复,我还是不明白您说的PC是指产生驱动的程序还是指USB设备上位机的程序?
作者:
wjxcom
时间:
2011-1-12 16:30
本帖最后由 wjxcom 于 2011-1-17 10:16 编辑
可以了 如果收取字节数小于2^21,速度达到30MByte/s。但如果收取的字节数达到2^29,则速度只有15MByte/s了。
结贴!
欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/)
Powered by Discuz! X3.5