阅读:2243回复:5
请教68013同步传输的问题
我用的是cypress公司提供的驱动程序,采用下面的方法读入数据,速度很慢。
IsoControl.PacketSize = 512; IsoControl.PacketCount = 160; IsoControl.PipeNum = 2; IsoControl.BufferCount = 2; IsoControl.FramesPerBuffer = 40; bytesToRead = IsoControl.PacketCount * (IsoControl.PacketSize + sizeof(USBD_ISO_PACKET_DESCRIPTOR)); BeginReadOdd(); bResult = DeviceIoControl (hDevice, IOCTL_EZUSB_ISO_READ, &IsoControl, sizeof(ISO_TRANSFER_CONTROL), (void*)LBaseAddress, bytesToRead, &nBytes, NULL); 如果用下面的bulk传输,则速度可以达到20M m_Height=576; m_Widht=768; inPacketSize=m_Height*m_Width;//GetDlgItemInt(IDC_NUMBER); BeginReadOdd(); //同步完成后进行读入 // Perform the BULK OUT bResult = DeviceIoControl (hDevice, IOCTL_EZUSB_BULK_READ, &bulkControl, sizeof(BULK_TRANSFER_CONTROL), (void*)(LBaseAddress), inPacketSize, &nBytes, NULL); 谢谢各位大虾指点。使用同步传输有什么快的方法。 |
|
沙发#
发布于:2003-05-29 17:56
你的iso是512字节来回跑一次
bulk是inPacketSize跑一次,哇,超过64k-1了,你又说你用的是cypress公司提供的驱动程序,没出错么? :o :D |
|
|
板凳#
发布于:2003-05-30 08:41
没有出错,请问你的应用层的程序是如何编写的,能发给我看看吗?
不知怎么回事,我的分数全没有了,要不我请你吃饭,我现在这个问题搞不定麻烦了。 |
|
地板#
发布于:2003-05-30 09:08
iso不是512字节来回跑一次
你把FramesPerBuffer设小一点看看,比如8。我不用IOCTL_EZUSB_ISO_READ 我是用的iso 的IOCTL_EZUSB_START_ISO_STREAM,稍微修改了一下。 |
|
|
地下室#
发布于:2003-05-30 18:32
我试验过了,发现ios传输比bulk传输慢很多,用Stream传输的话老是丢数据,而且不知道怎么设定于时间。
|
|
5楼#
发布于:2007-11-27 01:08
大侠,能把你的同步传输的固件程序共享一下么!
在bulkloop基础上改成同步传输,需要设置哪些寄存器,还有其它哪些是需要注意的?? |
|