阅读:2047回复:11
为什么 MaxtransferSize 不起作用呢?
无论一个URB请求多少字节,每次只能传64B
我应该怎么办阿 |
|
沙发#
发布于:2004-07-23 09:08
你读写的Endpoint只支持64B吧,或者你的端点描述符设置的wMaxPacketSize是64
|
|
|
板凳#
发布于:2004-07-23 09:30
Endpoint 是只能最多传64B
不过usbd可以把上层驱动要求的字节数自动分包。 我不知道是否要自己设置某些参数来达到这个效果! 谁能给我提点阿? 我会痛快地给分! |
|
地板#
发布于:2004-07-23 09:39
你可以跟一下你的固件程序,看在DMA传输之前是否DMA计数器就只给你传了64字节.
你的片子不知道,无法具体给你意见. |
|
|
地下室#
发布于:2004-07-23 09:47
应该不是DMA的问题,因为我用别的驱动(windriver自己的)可以达到最多一次传4k的数量。我是用ds做的
|
|
5楼#
发布于:2004-07-23 10:01
是不是驱动的关系?因为好像在驱动里有一个地方要设置一次最多读写的缓存区的大小,如果那里写的只是64的话,那你肯定只能一次传64.一般这个地方会给出一个比较大的值来传输数据,由USB部分来分次接受和发送.
|
|
|
6楼#
发布于:2004-07-23 11:03
是不是就是在端点初始化函数里的maxtransfersize参数?
但是没用阿,还有什么地方要设置呢??? |
|
7楼#
发布于:2004-07-23 11:16
那可能是你的驱动的问题,你可以看一下在你的驱动下DMA传输时USBD
给你发的信息和WINDRV的驱动下DMA传输时USBD给你发的信息,你比较一下,有什么差别,特别是传输长度方面. |
|
|
8楼#
发布于:2004-07-23 11:24
很感谢metalwing
但我不太明白怎么查看usbd发的信息阿 能否说详细点,拜托了! |
|
9楼#
发布于:2004-07-23 11:57
用BUSHOUND,USB MONISTOR等等工具,它们可以显示在USB总线上的
数据(过滤过的),你可以通过来往的数据进行判断和调试. |
|
|
10楼#
发布于:2004-07-23 12:02
是不是就是在端点初始化函数里的maxtransfersize参数? |
|
|
11楼#
发布于:2004-07-23 13:17
我发现我的驱程有时可以传多于64B的 ,但多数不行,还会发生data overrun 的error(busbound中的信息)
我真是百思不得其解 |
|