先转帖我以前的一篇**,纠正楼主一个概念上的错误:

[复制链接]
 楼主| wowow 发表于 2007-12-1 15:17 | 显示全部楼层 |阅读模式
测板板子的USB速度,2.0下最高只有6.5MByte/s,1.1下最高只有240kByte/s,跟理论速度差太远了吧?2.0下应该可以到40M/s,1.1下应该可以到800k/s的。相同的USB端口用HDTone测移动硬盘可以到23M/s。问题会出在哪呢?<br /><br />68013A工作于Slave&nbsp;FIFO模式,测试时用板上的CPLD检测FLAG,只要不是FULL就往里写。写入速度最大6.25M&nbsp;Word/s,也就是12.5M&nbsp;Byte/s。上位机用的是CyAPI开发包和CyUSB.sys的驱动,只管使劲地读:<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PacketLength=512;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USBDevice-&gtBulkInEndPt-&gtXferData((unsigned&nbsp;char*)Buf,Dlg-&gtPacketLength);<br />     }<br />就这样速度怎么也起不来,哪里出了问题呢?<br />
vongy 发表于 2007-12-1 17:31 | 显示全部楼层

不知道你CPUCS的频率选的是多少

  
 楼主| wowow 发表于 2007-12-1 19:09 | 显示全部楼层

CPUCS是48M的

  
 楼主| wowow 发表于 2007-12-1 23:45 | 显示全部楼层

终于2.0下做到11.2M/s了

终于2.0下做到11.2M/s了,接近于CPLD写FIFO的12.5M/s。应该可以达到这个速度的,提不上来了。IFCLK没接到CPLD上,没办法用同步slave&nbsp;fifo测更高的速度。<br /><br />提高速度的办法很简单把下面的PacketLength换成比较大的值,如32768就好了。。。。<br />while&nbsp;(1){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PacketLength=512;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USBDevice-&gtBulkInEndPt-&gtXferData((unsigned&nbsp;char*)Buf,Dlg-&gtPacketLength);<br /> }<br />看Full&nbsp;Flag的波形,还是时不时有一小段高,可能PC机做为多任务的不可能一直在接收。提高写FIFO的速度应该还可以提高速度。<br /><br />但是在1.1下的速度还是惨不忍睹的240k/s。难道是68013对full&nbsp;speed支持得不好?看Full&nbsp;flag的波形,连续8段写入,然后一大段等待。为什么有8段连续写想不通。
dragon_hn 发表于 2007-12-4 19:00 | 显示全部楼层

楼主做到这个已经不错了

楼主做到这个已经不错了.提高速度一是FIFO和USB包长度要尽量长,二是对多FIFO的USB&nbsp;IC尽量把所有FIFO用上,三是尽量用DMA
computer00 发表于 2007-12-4 19:19 | 显示全部楼层

先转帖我以前的一篇**,纠正楼主一个概念上的错误:

误区:关于USB2.0和USB高速传输模式&nbsp;<br /><br />在最初的USB1.0和USB1.1协议中,仅存在着低速(1.5Mbps),全速(12Mbps)设备。发展到后来的USB2.0协议,又增加了高速(480Mbps)模式。但是需要注意的是,USB2.0协议只是USB协议的2.0版本而已,它并不是USB高速传输模式的代名词。在USB2.0协议中,规定了可以支持3种速度模式,分别是低速(Low&nbsp;Speed,&nbsp;1.5Mbps),全速(Full&nbsp;Speed,&nbsp;12Mbps)和高速(High&nbsp;Speed,&nbsp;480Mbps)。但它并未强制要求一定具备高速模式。<br /><br />很多USB芯片注明支持USB2.0协议,但是只支持全速(Full&nbsp;Speed)传输模式。如果你需要的是高速传输模式,那么在选择芯片时要特别注意,看它是否支持高速传输模式,如果只是看到USB2.0就认为一定支持高速传输模式,那就错了。<br /><br />像Philips的PDIUSBD12芯片,数据手册里面就明确写了,支持USB2.0协议的全速传输模式。<br /> <br /> 相关链接:<a href='http://group.ednchina.com/93/200.aspx'>http://group.ednchina.com/93/200.aspx</a>
 楼主| wowow 发表于 2007-12-4 21:35 | 显示全部楼层

我的产品是要求1.1/2.0都可以支持

我的产品是要求1.1/2.0都可以支持,并且要求如果2.0下传输不稳定的话能强制到1.1。因为以前的样机发现有的PC上2.0有时能联,有时不能联。现在做法是上电时先强制为1.1(稳定放在第一位),界面有个选择可以让68013切换到2.0模式。现在基本弄好了,但是1.1下速度太慢,只有244k/s,离上限800-900k/s差得太远。问题可能出在哪呢?<br />另外一个bug是运行过程中Reset&nbsp;OUT&nbsp;EP后EP就好像不工作了,IN&nbsp;EP没有问题。
dwindy 发表于 2016-7-7 16:10 | 显示全部楼层
wowow 发表于 2007-12-1 23:45
终于2.0下做到11.2M/s了,接近于CPLD写FIFO的12.5M/s。应该可以达到这个速度的,提不上来了。IFCLK没接到CP ...

那请问你len改了之后buf也对应改过去了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

649

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

59

主题

649

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部