阅读:3225回复:12
问个关于AN2131的问题
不知firmware中的EP Pair功能是用来干什么的,有哪位能描述一下吗?它是把两个buffer连在一起使用,不知这有什么好处,能提高数据的传输速度吗?
谢谢。 |
|
最新喜欢:author...
|
沙发#
发布于:2002-04-22 19:15
对,可以提高传输速度
例如OUTEP2和OUTEP3做PAIR EP PAIR后向OUTEP2发数据,原OUTEP2的缓冲区装入数据,在OUT2BC没有清零前,只要原OUTEP3的缓冲区没有使用就可以继续向OUTEP2发数据,AN2131会自动将其放入原OUTEP3的缓冲区里,这样只要数据处理速度够快就可以交错使用两个BUF,不断发送数据。表达能力不好,具体请仔细阅读CYPRESS的文档 |
|
板凳#
发布于:2002-04-24 00:06
多谢。我今天晚上仔细看了片子的说明,它的意思是说,经过设置
pair设置后,把两个buffer当一个用,只用一个ISR和Busy标志, 那么我首先在ISR中,装载64个数,然后IN2BC = 64,然后再判断 是否busy,如果busy = 0,那么我还对Buf2进行赋值(是这样吗?) 我获得结果倒确实实现了两个Buffer交替发送数据,但是速度没有改变。我在应用程序中,是仅对管道2进行读取(我是对in2,in3pair) 您如果有经验,请指点一二。 |
|
|
地板#
发布于:2002-04-24 09:03
的确是只对一个管道进行读取,并且你的赋值方法也没有问题。当你进行大块数据读的时候,比如HOST端一次要求读4096BYTE(不要每次只读64BYTE,大块分成64BYTE小块的工作交给WINDOWS的USBD去做好了),速度就会有区别了
|
|
地下室#
发布于:2002-04-24 10:15
多谢。
当4096时,速度能到最大,当没有用Pair的时候,能到40k字节/s,仅用2管道。当pair后,实际上的传输速度还是只有40k字节/s. 不知提过正常提过速后,大致应该比没有PAIR的快几倍?而且我看到 有的USB硬盘速度能到1M字节/s,当然它用的是DMA方式,但是也不应该 相差这么大吧,不知中间是否有其它原因?还有,据您的经验,用bulk 传输,最大效率能到多少呢? |
|
|
5楼#
发布于:2002-04-25 09:42
请哪位高手指点一二,谢谢。
|
|
|
6楼#
发布于:2002-04-25 22:15
具体没有实际测过,只不过应该和51内核处理数据的速度有关
|
|
7楼#
发布于:2002-04-27 08:05
我现在利用BULKTEST上层、底层范例进行大块数据的IN-OUT测试,先OUT多片64字节的数据,然后需要将OUT出的数据在上层进行IN读入。出现的现象是,OUT时底层响应中断,传输正确,IN时底层无法中断进行读入操作(上层软件调用DEVICEIOCONTROL函数,底层IN07IEN 寄存器使能),请指教原因,非常感谢!
附:我使用的是CYPRESS公司的AN2131开发板 |
|
8楼#
发布于:2002-04-27 08:26
请问使用DEVICEIOCONTROL函数进行IN操作是有没有发生中断,底层如何接收到IN中断,请各位高手指教
|
|
9楼#
发布于:2002-04-27 11:48
在例子中不是能成功吗?把OUT中的,转到IN中。
应用程序中为写,读指令。我没有试过,但是应该没有问题吧。 |
|
|
10楼#
发布于:2002-04-27 13:42
在例子中不是能成功吗?把OUT中的,转到IN中。 例子中的只传送一个包,全在一个OUT中断的就解决了,要传送多个包,就必须使用IN中断。 |
|
11楼#
发布于:2002-04-27 16:29
哦,那你一次OUT很多数据,存在什么地方,外存储器吗?
你每次读进来的时候,注意在IN ISR中设置INBC = 64。试试。 这样,你给我一个实时的联系方式,我跟你讨论,我也是2131, 遇到问题,需要切磋。 |
|
|
12楼#
发布于:2002-04-28 15:00
哦,那你一次OUT很多数据,存在什么地方,外存储器吗? 多谢朋友的交流,我的QQ是12020359,EMAIL:yxy3115@21cn.com |
|