安装过PC的人员都知道,通用串行接口(USB)具有与即插即用相似的性能。因而,将USB端口移植到嵌入式系统是一种方便的控制外部设备的办法。毕竟USB只有两条信号线和两条电源连接线,设计一个USB端口不会有什么困难吧。这一任务说起来简单,对设计者却有不少困难。不过,供应商可以提供从板卡到软件的一切帮助。
在一个嵌入式系统上添加USB端口的最简单的办法是采用基于Windows的计算机。很多单板机(图1)提供了内置的USB端口,并且运行Windows 软件。许多USB外设都装有现成可用的Windows驱动器。当你需要采用实时操作系统(RTOS)时控制工程网版权所有,任务就会变得困难起来。若干家公司提供了能够简化USB端口设计的芯片和软件,还可以获得在片上系统添加端口的知识产权(IP)许可证。
图1 EBC-C3Plus等单板机提供了内置的USB主控端口
USB设备可以扮演主控或外设的双重角色。外设无需太高的智能度,但主USB端口却要求具备处理能力和控制软件。U
最新标准(USB 2.0)提供的总线速率是1.5Mbit/s(低速)、12Mbit/s(全速)和480Mbit/s(高速)。可惜,很多用户认为标有“USB 2.0”字样的设备一直在480Mbit/s的速率工作。但很多遵循USB 2.0的设备是在较慢的传输速率下工作。
在规划一个嵌入式应用时控制工程网版权所有,你要确切知道使用什么USB设备——打印机、海量存储单元还是I/O控制器。然后www.cechina.cn,决定你需要多少端口,是否需要主控、外设还是两种端口都要。大多数嵌入式应用并不需要外设端口。
你在评估端口配置时控制工程网版权所有,应该决定你的数据率需求。例如,虽然一个应用可以平均10Mbit/s的速率进行数据传输,但也可能需要以更高的速率传输突发性数据。请记住,要实现更高的数据传输,就需要在USB连接的两端采用更大的缓冲区。你可能需要将性能要求稍微降低一些以减少设计所需的昂贵缓冲。
如果你对数据率没有把握,可以从USB主控芯片厂商那里购买开发板控制工程网版权所有,然后在PC上对你的应用进行模拟。主控芯片供应厂商包括TransDimensions,Cypress半导体CONTROL ENGINEERING China版权所有,NEC和Philips半导体公司。以TransDimension为例,它提供2端口和3端口的主控芯片和软件。另外,很多公司也出售作为USB外设控制器的芯片。
主控制器芯片的支持软件有多种,从支持Philips ISP1561的基于Windows的驱动器,到支持TransDimension器件的多种RTOS软件。Cypress提供用于EZ主控IC的Linux和VxWorks驱动器。所有的USB主控端口都需要一个“堆栈”,它的简单含义是软件的分层布置,如图2所示。各层形成从底部物理层(连线和芯片)一直到顶部应用软件层的结构。
图2 USB堆栈
在物理层,芯片和IP厂商已经采用了标准的软件-接口连接,它们可以简化嵌入式设计中主控器的运用。这样,堆栈往往遵循如下标准:开放式主控制器接口(OHCI)、通用主控制器接口(UHCI),或者更新的为USB2.0规范开发的增强型主控制器接口EHCI。这些规范描述了主控制器所用的寄存器级操作。通过这些标准的采用,芯片制造商提供了驱动器软件的通用接口。OHCI、UHCI和EHCI规范明确了主控制器寄存器和驱动器软件之间的互操作。
通常,硬件抽象层,或者包装层将堆栈和驱动器与特定微处理器的具体实现细节屏蔽开来。设计者可以获得包装层的源代码,因此能对它进行修改,以便适应所选定的具体微处理器和RTOS。如果你不想深入了解这一层的软件细节,可以由供应商对包装层进行定制开发。你可能会发现,启动项目时即采用兼容的微处理器、堆栈、RTOS和USB主控制器将使开发变得更为容易。
除了堆栈,开发者还将需要控制外设的驱动器。虽然Windows、Windows CE和Linux可以调用用于多种外设的、种类极为丰富的驱动程序,但你还是会发现其他操作系统没有提供同样的多种选择。IC厂商们提供了USB级驱动器www.cechina.cn,它们可以提供控制同