上次说了.我用52+D12,速度最高只能达到16K.今天我查了一下.发现D12每4ms才发出一个中断,但这个中断只用了0.2ms就执行完了..这样算下来,速度最高也只能达到16K.并且速度的瓶颈不是出在51上.USB1.1每1ms都有一个帧呀.而且在一个帧中可出放19个bulk包...
全文
回复(8) 2002-06-18 09:24 来自版块 - USB驱动开发
表情
takaya那是当然的呀.不然第二个包就读不出来了呀. 何况我只在中断处理程序填充了D12的Buffer.(2002-06-18 16:41)
laiqing你处理一次中断后,有没有及时地再次把数据送到buffer中? 就是说你用4096的话,传输的第一个数据包要在中断来自前要先送入BUFFER中,把这个端点使能。 中断来后要在中断处理程序中把下一个数据报 送到BUFFER中。(2002-06-18 16:11)
takaya是不是需要把在DS中设置的Endpoint2IN的MaxTransferSize也改成4096?我试过了.不能完整的读出4096个字节.只读得出一部分.(2002-06-18 14:42)
takaya我试过把64B改成4096B,但只能读出前64B来. 现在是每4ms才读一次.其它3个帧都没有用到.C51处理从D12读64B的时间是0.2ms左右.这样算下来,在一个帧中应该可以处理5个包.但现在只有0.25个包..................(2002-06-18 14:32)
laiqingOpenFile(??) 计时开始 while(???) { ReadFile(????????); } 计时结束 CloseFile(???) 你每次ReadFile(????????)传输的数据块有多大?64字节/次? 要是和它差不多大?...(2002-06-18 14:16)
takaya再有,怎么控制一个帧中的包数目泥?(2002-06-18 13:13)
takayaOpenFile(??) 计时开始 while(???) { ReadFile(????????); } 计时结束 CloseFile(???) 我就是这样做的呀. 在While中只有16K.(2002-06-18 13:11)
laiqing这可能和你的应用程序有关,不要每次传输都执行打开和关闭USB管道。 打开USB管道,获得句柄后,等到所有的传输数据都传完后,再关闭 USB句柄。 (2002-06-18 12:39)

返回顶部