阅读:2310回复:22
关于BULK传输的基本问题。。。请指导一下。
AN2131使用BULK传输时,片内有7个BULK_IN端口,每个端口的缓存为64Byte。USB1.1协议上说,BULK传输时候每帧(1ms)最多19个BULK传输包,也就是19×64B=1216B,传输速率达到1.216MBytes/s.但是AN2131只有7个BULK_IN端口,每个端口缓存只有64Bytes。如何才能实现在一帧中传输19个BULK包?我对这些基础不太清楚。请指导一下,谢谢!!
|
|
最新喜欢:![]() |
沙发#
发布于:2002-10-22 09:56
当然不光是IN端点了,还有7个OUT端点,一共14个包。但是要实现19个的话,我想这应该是理论值了,实际上不太可能。
|
|
|
板凳#
发布于:2002-10-22 10:20
那岂不是BULK稳定单向传输到PC机器的速度不太高?7个BULK_IN端口,7×64B/帧=448KB/秒。
|
|
地板#
发布于:2002-10-22 10:31
能达到500K已经很不错了。
|
|
|
地下室#
发布于:2002-10-22 14:58
我的PC主应用程序如何实现每毫秒(帧)读操作一次。只能开一个主线程,别的线程不能开,不然的话,线程切换需要几十毫秒,如果没来得及发送读操作,AN2131中的BULK_IN端口中的缓存随时会更新,我的数据还没有读上来。
BULK_IN端口太少了,如何实现 四个通道×50K Samples/s 16位的实时采样?是不是不能实现?我难住了。。 |
|
5楼#
发布于:2002-10-22 15:03
把缓冲区弄大一点,就是PACKETSCOUNT大一点就是了。
|
|
|
6楼#
发布于:2002-10-22 15:18
是主机的缓冲还是端口的缓冲?哪儿设置。。不要介意。每个BULK_IN端口不是只有最大64B的缓存么?发送是,每一帧(1ms)统一发送么?还是我的基础不好,请指导以下~,谢谢!
|
|
|
7楼#
发布于:2002-10-22 15:27
缓冲区?laicq你是指端口缓冲么?最大只有64个字节。
|
|
8楼#
发布于:2002-10-22 15:29
在主机端的缓冲区,参看《EZ-USB General Purpose Driver Specification》中IOCTL_EZUSB_BULK_READ函数。
|
|
|
9楼#
发布于:2002-10-22 15:49
你是指nOutBufferSize么?是不是一开始请求的nOutBufferSize大于64Bytes( 小于64KByte),端口会继续准备数据,并传输。直到达到nOutBufferSize。我理解的对么?
|
|
10楼#
发布于:2002-10-22 16:01
应该是这样的。你可以自己编一个固件程序来测试一下。
|
|
|
11楼#
发布于:2002-10-24 15:13
好像不是小于64Kbyte都可以
|
|
12楼#
发布于:2002-10-24 15:25
TO newdm:
愿听高见。 |
|
|
13楼#
发布于:2002-10-24 15:42
我正在试,结果是这样使用cypress开发包自带的\"ez-usb control panel\"每次读取128,192,1024,甚至32768都没问题(其他一些非8的整数倍的好像不行),可是使用“IOCTL_EZUSB_BULK_READ”读1024以上的都不行,我使用他们的那个例子程序“bulktest”改的,把写去掉了只用读,固件用的是“EzBulk_asm\",它的2ep持续向上发送数据
|
|
14楼#
发布于:2002-10-24 16:05
它的bulktest例子的传输结果应该不错呀!
|
|
|
15楼#
发布于:2002-10-24 16:09
我的测试结果就是这样
你可以试一试看 我现在正在找原因 |
|
16楼#
发布于:2002-10-24 16:23
我找到原因了
是我忘了改缓存的大小了,不好意思,确实是64k以下均可 :D |
|
17楼#
发布于:2002-10-24 16:31
还有刚才测试了一下,一个管道光读速率竟然有1M字节/s!!有这种可能吗??
|
|
18楼#
发布于:2002-10-24 17:21
还有刚才测试了一下,一个管道光读速率竟然有1M字节/s!!有这种可能吗?? 有可能, MAX 12Mb, 扣掉效率, 好一 |
|
19楼#
发布于:2002-10-24 17:27
解决就好,理论速度还要快!
|
|
|
上一页
下一页