阅读:1378回复:3
usb bulk传输问题,大家帮帮忙!!!
我在用USB进行BULK传输时,碰到一个问题,希望
大家帮忙看看.具体情况是: 当我收到一个BULK REQUEST(0471, PHILIPS的VENDER REQUEST, 方向是由DEVICE TO HOST)后,我开始进行 DMA传输,传输完成后,设置端点缓存有效,以待下一个 IN令牌将数据取走.之后,由测试程序执行READFILE函数,驱动程序BUILDBULKTRANSFER向实验板发一个IN请求,这时收到端点IN中断,可是数据并没有传输出去, 必须再来一次才可以,(第一次发送一次就可以实现,以后 的都必须要两次才能实现),为什么? 我用的是PHILIPS ISP1581芯片. 谢谢!!! |
|
|
沙发#
发布于:2004-07-13 16:55
我和你用同样的芯片,你用的是那个测试程序?我的测试程序刚开始不能中断传输,只能批量,刚开始也是利用一个厂商请求传输出bmrequest0471和mIndex 0x0c。然后UILDBULKTRANSFER,基本没有问题,这些参数是固件程序中设置好了的,你不是也是这样做的吗?怎么会呢?
|
|
板凳#
发布于:2004-07-13 18:02
谢谢。
我是用DS生成的测试程序进行试验的。 先给他发一个i 1(向驱动程序发送DMA请求,并通知传输16Bytes字节数据。固件程序接收到后,DMA控制将SRAM中的16个字节的数据送到BULK IN BUFFER中,并设置VENDP为1)。完毕后,再发r 16(从USB读取16Bytes数据),但这时却接收不到数据(应用程序结果显示接受了0Bytes字节数据),可ISP1581却产生了In管道中断。若再发r 16命令,数据却能正确接收(但用Bus Hound观察响应时间却在1sec以上)。感觉上好像是当发第一个r 16时,USB返回NAK,发第二个r 16时才接收数据。不知为何。 [编辑 - 7/13/04 by metalwing] |
|
|
地板#
发布于:2004-07-14 08:19
建议你自己编写一个应用程序测试吧
|
|