lvgx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-27
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3225回复:12

问个关于AN2131的问题

楼主#
更多 发布于:2002-04-22 18:09
   不知firmware中的EP Pair功能是用来干什么的,有哪位能描述一下吗?它是把两个buffer连在一起使用,不知这有什么好处,能提高数据的传输速度吗?
  谢谢。

最新喜欢:

author22author...
lvgx
WOOD
驱动老牛
驱动老牛
  • 注册日期2001-09-14
  • 最后登录2008-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-22 19:15
对,可以提高传输速度
例如OUTEP2和OUTEP3做PAIR  EP PAIR后向OUTEP2发数据,原OUTEP2的缓冲区装入数据,在OUT2BC没有清零前,只要原OUTEP3的缓冲区没有使用就可以继续向OUTEP2发数据,AN2131会自动将其放入原OUTEP3的缓冲区里,这样只要数据处理速度够快就可以交错使用两个BUF,不断发送数据。表达能力不好,具体请仔细阅读CYPRESS的文档
lvgx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-27
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-24 00:06
   多谢。我今天晚上仔细看了片子的说明,它的意思是说,经过设置
pair设置后,把两个buffer当一个用,只用一个ISR和Busy标志,
  那么我首先在ISR中,装载64个数,然后IN2BC = 64,然后再判断
是否busy,如果busy = 0,那么我还对Buf2进行赋值(是这样吗?)
  我获得结果倒确实实现了两个Buffer交替发送数据,但是速度没有改变。我在应用程序中,是仅对管道2进行读取(我是对in2,in3pair)
您如果有经验,请指点一二。  
lvgx
WOOD
驱动老牛
驱动老牛
  • 注册日期2001-09-14
  • 最后登录2008-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-24 09:03
的确是只对一个管道进行读取,并且你的赋值方法也没有问题。当你进行大块数据读的时候,比如HOST端一次要求读4096BYTE(不要每次只读64BYTE,大块分成64BYTE小块的工作交给WINDOWS的USBD去做好了),速度就会有区别了
lvgx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-27
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-24 10:15
   多谢。
   当4096时,速度能到最大,当没有用Pair的时候,能到40k字节/s,仅用2管道。当pair后,实际上的传输速度还是只有40k字节/s.
   不知提过正常提过速后,大致应该比没有PAIR的快几倍?而且我看到
有的USB硬盘速度能到1M字节/s,当然它用的是DMA方式,但是也不应该
相差这么大吧,不知中间是否有其它原因?还有,据您的经验,用bulk
传输,最大效率能到多少呢?
lvgx
lvgx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-27
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-25 09:42
  请哪位高手指点一二,谢谢。
lvgx
WOOD
驱动老牛
驱动老牛
  • 注册日期2001-09-14
  • 最后登录2008-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-04-25 22:15
具体没有实际测过,只不过应该和51内核处理数据的速度有关
yxy3115
驱动牛犊
驱动牛犊
  • 注册日期2002-03-12
  • 最后登录2004-03-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-04-27 08:05
我现在利用BULKTEST上层、底层范例进行大块数据的IN-OUT测试,先OUT多片64字节的数据,然后需要将OUT出的数据在上层进行IN读入。出现的现象是,OUT时底层响应中断,传输正确,IN时底层无法中断进行读入操作(上层软件调用DEVICEIOCONTROL函数,底层IN07IEN 寄存器使能),请指教原因,非常感谢!
附:我使用的是CYPRESS公司的AN2131开发板


yxy3115
驱动牛犊
驱动牛犊
  • 注册日期2002-03-12
  • 最后登录2004-03-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-04-27 08:26
请问使用DEVICEIOCONTROL函数进行IN操作是有没有发生中断,底层如何接收到IN中断,请各位高手指教


 
lvgx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-27
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-04-27 11:48
   在例子中不是能成功吗?把OUT中的,转到IN中。
应用程序中为写,读指令。我没有试过,但是应该没有问题吧。
lvgx
yxy3115
驱动牛犊
驱动牛犊
  • 注册日期2002-03-12
  • 最后登录2004-03-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-04-27 13:42
  在例子中不是能成功吗?把OUT中的,转到IN中。
应用程序中为写,读指令。我没有试过,但是应该没有问题吧。

例子中的只传送一个包,全在一个OUT中断的就解决了,要传送多个包,就必须使用IN中断。
lvgx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-27
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-04-27 16:29
   哦,那你一次OUT很多数据,存在什么地方,外存储器吗?
你每次读进来的时候,注意在IN ISR中设置INBC = 64。试试。
  这样,你给我一个实时的联系方式,我跟你讨论,我也是2131,
遇到问题,需要切磋。
lvgx
yxy3115
驱动牛犊
驱动牛犊
  • 注册日期2002-03-12
  • 最后登录2004-03-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-04-28 15:00
  哦,那你一次OUT很多数据,存在什么地方,外存储器吗?
你每次读进来的时候,注意在IN ISR中设置INBC = 64。试试。
  这样,你给我一个实时的联系方式,我跟你讨论,我也是2131,
遇到问题,需要切磋。


多谢朋友的交流,我的QQ是12020359,EMAIL:yxy3115@21cn.com
游客

返回顶部