现在的USB生产厂商很多很多,几乎所有的硬件厂商都有USB的产品。我了解的公司有Intel, 国半, Cypress, AnchorChips这几家,Intel作为USB标准的制订者之一,又加上Intel的龙头老大的地位,现在的计算机主板上的HOST基本上采用的都是INTEL的芯片。而在外设的USB控制器方面,大家的性能都差不多。其中CYPESS公司的器件以便宜见长,在收购了ANCHORCHIPS公司之后,CYPRESS基本上从低速到全速的器件都包涵到了,有一些器件的性能还超过INTEL,当然价格要便宜得多。就象CPU唯INTEL马首是瞻一样,很多的厂家都喜欢把自己的东西和INTEL的做比较,我个人认为要做的话,还是INTEL的要好一些!
USB器件一般来说是有两种类型的,一种是MCU集成在芯片里面的,象上面提到的
Intel,Cypree,National semiconductors, Anchorchips等等;另外的还有就是单独的一个芯片实现USB的Engine的功能,象philips,DIUSBD11,PDIUSBP11A,PDIUSBD12等,还有象lucent也出了两款器件,USS-820,USS-620,820是普通的高速设备,具有8个双向的endpoints,而620是具有DMA功能,使用起来比820占用系统资源要少得多!还有很多家,因为我没有接触过其它厂家的东西,所以没有发言权!呵呵!不过总的来说,在这个方面philips和National Semiconductors的东东要大众一些,开发的话应该上手快一些!不过philips的和51的接口搞的偶烦了好几天,比较的麻烦一些!
好了,既然把话题说开了,就接着说说USB的HUB的器件,主要的我没有做过,好象国内的USB的HUB还没有什么厂家开始做,即使有,也是非常少的,HUB的器件我重点推荐philips的东西,可以选择PDUSBH系列产品,这一个系列的产品主要是在于用它设计HUB的测试方面有很好的功能,从而减少了开发的难度。
对了,还有一个问题,起码有不少于十个人来问我,两台PC间如何通过USB口直接连接起来,再次重申一遍,由于USB的网络协议的关系,两台PC的USB都是host,所以没有办法连,如果连的话,必须要使用USB的桥!这个桥的芯片有以下几种,一是anchorchips的EZlink,还有Prolific Technology Inc 的PL2301,PL2302,这个,我只知道anchorchips的东东,要买好几十个美金,我想如果是家庭用的话,没有人会发神经病去买这个鸟东西,反正两个网卡才几块银子。还有USB的Audio方面的器件,有Dalas和philips的东西可以选,当然还有其它的,反正都是巨大无比的公司,应该质量上没有特别的差别,只是在一些小的细节上有所不用,各位老大自己慢慢斟酌了。
下面就以INTEL公司的8X930AX USB 芯片作一些介绍:
8X930AX USB微处理器采用的是MCS51作为它的控制CPU,工作在12MHz的工作频率,有256Kbytes的存储空间,如果不够还能够在外围扩展。它有11个中断源,其中有三个分配给USB设备(device)。当然他也还有一些其它的特性,在此不作详细的介绍了。您可以到http://www.intel.com/ 去获得详细的资料。它的主要缺点是价格上可能偏高,开发费用略高,但是开发难度要相对小一些!
如何给USB器件设计一个BUFFER(Intel)
下面以CYPRESS公司的CY7C6XX系列产品作一些介绍:
CYPRESS公司的芯片在低速的场合做得很好,比如国内所有的USB鼠标都是采用的CYPRESS公司的芯片(真的是便宜,不由得你不买他的东东),但是在高速方面支持得不是很好,好象是在CY36系列产品上存在着速度快就CRASH的毛病,在收购了ANCHORCHIPS之后情况才有所改观。 在我这次更新(四月)主页的时候,我得知他们在很多方面都做了改进,他们的产品应该还是很有竞争力的。
其实我觉得USB的硬件所有的厂家都差不多,差别只是在于他们采用的控制器的不同,除了各个公司的CPU不同(像ST就用他们的ST8或者ST16,Intel当然就用他们的看家本领,而ANCHORCHIPS就只好用人家的51了)以外的东西基本一致,就只有一个SIE(什么是SIE,可以参考这篇文章),高速的器件还会有一个DMA的控制器,使他的数据可以跑得很快。当然你还要看他们的开发包的费用了,具体的报价我没有比较过,有兴趣的可以比较一把,别忘了给我一份,呵呵!
我对于硬件最想说的一点是他的速度的算法,USB的速度是跟USB其间内部提供的缓冲区的大小有关,还有一个就是USB标准中提到的每1ms和每10ms(还有255ms的时候)发一桢数据的区别,这是低速和全速的主要区别,而缓冲区的大小直接的影响到每桢传送的数据量的大小,这一点大家在算USB的速度的时候一定要注意。在做设计之前一定计算好自己所要求的带宽和芯片的速度匹不匹配,否则会引起不必要的麻烦。
下面是一个带宽的计算公式:
BW="EP"*INT(BPF/(OH+EP))/125
其中:BW表示带宽(Mbits/sec),EP表示ENDPOINT的大小(bytes),BPF表示每桢的字节数,OH表示开销。
你可以很快的根据你的设计计算出你的USB器件的带宽。下面给出一个例子:
BPF 187 OH 46
ENDPOINT SIZE(BYES) MAX BW(Mbits/sec)
1 0.024
2 0.048
4 0.096
8 0.192
希望可以从这个例子中得到USB的带宽的计算方法。而对于四种不同的传输方式来说,主要的不同是体现在BPF和OH的不同上。具体可以参照USB的标准的第八章。还可以看一看这篇文章。
选好方案之后,到了具体的控制程序设计阶段,就只是一个CPU的程序控制问题,对于华夏发达的单片机水平来说,这是非常容易解决的,倘若我再重复讲一下单片机中断抑或讲一段什么例子程序的话,我怀疑会被人砍翻在地,因此寡人只好封刀引退。若有不明,请参考谁谁谁谁谁等高手之微处理器专著。
也有一些大佬们来问了一下一些关于这些控制方面的问题,很多是没有仔细的看文档资料,关于一些USB的芯片的特殊功能寄存器在说明书里面都有详细的说明,操作方法跟51的器件里面的SFR一模一样
文章评论(0条评论)
登录后参与讨论