USB外围设备彼此之间不能彼此通信,它们只能与具有节制总线能力的USB主设备通信。直到比来,也只有PC具有主设备能力。但今朝,良多微节制器也具有了嵌入式USB主设备的功能,这使得嵌入式应用可以毗连加倍普遍的USB外围设备。
USB闪存驱动器是一种使用很是普遍的USB外围设备,它已经成为传递或存储年夜量数据的廉价介质,许年夜都据记实设备恰是得益于它才得以成长。对于远程的持久数据记实,可以先采集,并存储在闪存驱动器中,然后带回到便利剖析措置的处所。
闪存驱动器也可以用于向PC中传输高速时刻相关数据。PC是极好的数据剖析工具,但实时能力有限。相反,嵌入式应用出格适合实时数据采集,但数据剖析能力凡是很弱。嵌入式实时数据记实仪可以在闪存驱动器上存储数据,然后把数据传输到PC上剖析,这样二者的优势都获得了充实的阐扬。
嵌入式USB主设备的应用
起头嵌入式设计的首要使命之一是选择微节制器。为了使用闪存驱动器,微节制器就必需具有嵌入式USB主设备的能力。若是微节制器具有USB OTG(On-The-Go)或USB双脚色(Dual Role)功能,如Microchip公司的PIC24FJ256GB1微节制器,如图1所示,它也可以撑持嵌入式USB主设备功能。USB外围设备,有时也称为USB设备模式,只能用作闪存驱动器等,而不能和其他USB外围设备通信。
其次,设计者应该确信能有完整的开发工具。至少也需要一个器件编程器(若是有一个调试器是最好的)和一个C说话编译器,因为嵌入式USB主设备和运行在微节制器中的轨范往往是用C说话而不是用汇编说话编写的。
最后,设计者也应该体味哪些软件库是可以获得的,因为嵌入式设备发现闪存驱动器时的握手操作需要USB设备类、FAT32文件系统和其他库的撑持。从头起头设计撑持嵌入式USB主设备的工作会需要数月的时刻,而一个由经由认证的和谈栈组成的方案可以节约相当多的时刻。
为了使用闪存驱动器,嵌入式设备也需要一种USB海量存储类(Mass Storage Class)设备的终端驱动轨范、硬件呼吁行接口,以及文件系统接口。凡是,具有2Gb或更低存储空间的闪存驱动器使用FAT16文件系统,而更年夜容量的闪存驱动器将使用FAT32文件系统。设计要求
一旦选定了微节制器,硬件设计就起头了。USB硬件设计需要遵循以下良多轨则。
● 若是嵌入式主设备需要撑持USB设备类,它对外围的供电就必需能够供给500mA的电流。
● 若是嵌入式主设备需要撑持任何耗损电流跨越100mA的设备,它也必需能够供给500mA的电流。
● 若是嵌入式主设备需撑持耗损电流100mA或更低的设备,那么VBUS电压限制就可以降低到4.4V。然而,若是嵌入式主设备需撑持耗损电流跨越100mA的设备,那么VBUS电压限制是 4.75V,就和全功能主设备一样。
● 必需从头设计无须用户干与干与就可复位的过流呵护机制。
● 从USB毗连器到收发器之间的传输延迟必需在8ns之内。
● 嵌入式USB主设备在VBUS上的电容必需年夜于120μF,而且USB OTG设备在VBUS上的电容必需为1.0?6.8μF。
除以上轨则外,也必需细心考虑采用嵌入式USB主设备应用的用户接口。USB外围设备凡是用在PC上,万一发生错误就可以供给具体的错误信息。若是LED指示灯闪灼,用户能够知道毗连失踪败了。USB规范也作了强制性的划定,经由认证的USB嵌入式主设备必需供给错误信息。换句话说,所有错误信息必需被明晰地通知应用层,也就是奉告用户。
经由过程USB通信
实现USB嵌入式主设备的一个最年夜挑战就是要和各类各样的USB外围设备通信。虽然不是所有的闪存驱动器产物都经由过程了认证,可是若是在嵌入式设备中一种闪存驱动器可以正常使用,而另一种没有任何原因就不能使用时,用户是不会欢快的。
若是闪存驱动器需要的上电时刻是许可最年夜时刻的两倍或一半,或因为主机以最年夜许可的速度轮询时闪存驱动器被锁住,以及因为闪存驱动器需要一种分歧的SCSI呼吁序列来成立通信等,这都不会有任何问题。但若是这样的闪存驱动器在主设备上不能运行,在PC上却可以正常使用,用户会批*这一主设备。是以,确保进行普遍的测试,与多种没有进行认证的USB外围设备进行通信,即使它只是一个拇指年夜的闪存驱动器或一根电缆。