应用中的嵌入式USB案例分析
扫描二维码
随时随地手机看文章
USB是一项随时准备改变设备的技术,这非常类似于改变个人计算机的外设。2001年,由英特尔公司和微软公司提出的这项技术,作为IBM PC在20年前推出的一系列接口的替代物,这些接口包括和键盘接口、软盘接口、串口和并行打印接口。当然,进行这么大规模的是具有很多合理理由的,因为使用那些陈旧的接口具有很多的问题。例如,不记得那又费力又容易产生错误的串口手工配置(包括波特率、比特数、奇偶校验以及握手等)方法的人们又将如何办?另外,即便不说该接口的兼容性问题,收发器所需要的高电压也是一个问题,最后还有点对点连接属性这个并非不重要的问题,这种属性意味着在多种设备(如打印机、调制解调器和扫描仪)之间共享接口时,则需要使用大量的以及相互之间的手工转换。
不过,从事嵌入式控制研发者则把上述这些种种限制看作为可实现更大自由度的手段。通用异步发射和接收器()是(至今仍是这样)研发人员已经掌握如何实现简易串行连接的一个非常简单的器件。虽然在绝大多数的微控制器架构中都集成了,但却没有对专有方案中连续码流中所出现的更高级别的协议进行定义。
相比较,USB串行接口引擎(SIE)的实现则需要采用比其要替代的多得多的逻辑门。USB协议详细定义了多个栈层(ISO/OSI),因此需要更复杂的代码。更糟糕的是,取决于所要代替的具体接口类型,还需要专用的(OS)驱动器。这就意味着研发者在能够开发更有潜力的总线之前,需要掌握有关操作系统方面更复杂的知识。
在PC领域非常喜欢USB总线的时候,嵌入式控制领域尽可能地拒绝这一过渡,实际上这也不奇怪。不过,对于嵌入式领域来说,USB总线也有一些固有的优点,特别是在对于嵌入式控制研发者具有极大价值的最新一代闪存微控制器的实现中。
定义USB总线的主要目的之一是允许操作系统(如Windows)能够通过改进或增加下列机制来更好地管理通信资源:
1. 只要建立连接(即众所周知的即插即用),就能自动监测和配置应用;
2. 同步数据传递,通过允许OS来管理和规划事务、优化吞吐率并实现可靠的高速率来改善性能;
3. 通过对应用进行分级、允许代码共享和复用来标准化接口。
图1:USB外形图。
图2:利用串口连接到带有USB接口的设备进行升级维护。
不过,从更接近应用的观点来看,可以获得以下的关键特性:
1. 低电压工作;USB总线不需要高于5V标准电压的高电压,而数据线工作在3.3V的逻辑电压上。这就使得集成收发器、省去±12V电源的相关电路、从而降低总成本以及应用的元器件数量成为可能;
2. 和的绝对标准化。只有四对定义好的插头和插座,具有清楚的应用规则,从而保证了绝对兼容;
3. 采用同样的和提供电源,降低了电缆的复杂度并进一步地降低了系统成本;
4. 它具有总线架构,允许多达128台设备的同时连接。
上面所列功能对于设备生产来说具有很重要的暗示,即影响成本、空间和时间,并能激发设计师对这一连通性的深层技术进行深入研究。
举例说明
请看真正的设备应用。在本例中,设备中已经装备有微控制器,而我们希望通过增加一个通信口,使得安装人员(或服务人员)能够将其连接到个人计算机或其它便携设备()来提升性能或者获得以下好处:能够访问数据记录日志并报告最近的设备使用历史纪录,以实现担保和故障诊断;配置(微调)工作参数,以便优化操作或使设备适应本地的环境。
可以从成本和性能上将USB与许多传统的串口进行比较:
1. USB的自动检测和配置是Windows即插即用技术的一个组成部分,从而无需进行费力的和易出错误的手工设置连接;
2. 全速USB接口的高数据吞吐率(12Mbps),能够允许比最快的串口高几个数量级的速度传输数据,从而减少了所需时间;
3. 所需的低电压和收发器的集成使得电路比其它串口更简单,实际上降低了总的元器件数量和应用成本;
4. 应用上,USB规范只需识别单一的、标准的连接器,而且是一个体积非常小且具鲁棒性的组件,而且成本非常低;
5. 同一连接器可以提供电源(5V)到应用板(在服务过程中应用可以关断),从而简化了设计并进一步降低了成本;
6. 标准的接口数据库(以USB行话来说就是众所周知的“类”)能够支持代码复用,能够省去成本和客户的驱动程序的开发。
USB和闪存:一个强有力的结合
现在是我们应该注意微控制器市场有什么的时候了,特别是最新的具有USB接口的闪存微控制器,现在可以充分地欣赏植入USB的各种好处了。实际上,如果将研究限制在对现有技术进行修补的范围,即用一个USB代替一个RS-232收发器--实现起来非常容易,但该方案的成本较高。单机USB接口组件,甚至是最便宜的,则只能在成本上与所替代的收发器竞争。且仍需使用UART(通常被集成在微控制器中),它将成为整个系统的瓶颈,这将无法实现USB总线所承诺的高性能。
图3:单芯片USB示意图。
一个新的微控制器提供的一个较好的方案时使用本地USB接口。将USB接口和收发器直接与微控制器内核集成到一起,可以使应用能够充分利用总线潜在的各项优点(使用全速.0,数据率可高达1MB以上)。由于在片上有大量的闪存程序存储器,微控制器仅利用一个单芯片USB方案就可以管理整个应用,从而使得元器件数大大减少并降低了实际系统成本。闪存微控制器给设计师还提供了额外的自由度,可以实现维护现场升级、错误修复、性能提升,甚至是仅仅通过装配线的末端的实时编程和配置应用来实现制造优化。
黑匣子
并非所有的闪存处理器都是一样的。下面的关键性能可能带来极大的差别:自写能力,持久性和保持力。持久性指的是存储器能够使用的擦写周期数,而保持力则指存储器保存内容的年数。这些都是闪存技术的基本鲁棒性参数,因此也决定了应用的可靠性。在另一端的自写能力指的是微控制器在执行代码(从另一端)的同时修改其自身程序存储器(或者是其一部分)中内容的能力。在可用USB的微控制器的情况下,该能力是相当的实用并为大量的各种可能性敞开了大门。
图4:USB快速启动加载与黑匣子。
例如,相同的USB口可以被用来作为一个升级设备固件的手段,而不再需要利用专用的外部编程设备。一小段通常可以被视作为引导加载程序的代码,就可以利用该功能,而可以作为独立于应用程序的一个普通的程序块来开发。
闪存USB微控制器制造商通常按标准方案以黑匣子的方式来提供引导加载代码程序,经常用于提供完整的图形用户接口的小型(独立于操作系统)应用。
图5:基本的启动加载GUI的界面实例。
使用引导加载(通过连接一个USB口到PC)使得工作人员可以升级应用代码或升级应用固件所用的数据。这样的例子包括升级文本信息,包括参数的用来定义应用的菜单和操作表。同时,还可以从应用中读取数据(从内部的数据中读取,或者从闪存程序存储器中读取)。该功能为上载记录信息提供了一种方法--即为绝大部分的基本故障诊断工具所用的并行访问方法。由于该引导加载的黑匣子方案,上述所有这些都可以实现,而无需掌握有关USB总线的更多知识,或对应用代码的任何一部分进行重写。
USB的更先进的应用
之前,设计专家已经花费了很多时间,想开发USB总线更深层的能力,以提供能够从USB获取更多好处的能力。事实上,USB总线可以进行各种选择,来提供各种不同级别的,或者结合这些选择来实现更多的功能。
虽然进一步分析嵌入式USB的所有可能性不属于本文的范畴,但这里还是给出一些建议:
1. 人机接口级方案(HID)——提供简单的接口,而且不需要操作系统的专用驱动器,可用于比特率相对较低(大约相当于9,600波特率的串口)的应用;
2. 通信设备级方案(CDC)——为串口竞用提供最直接的迁移通道,并提供比传统串口更高的比特率,但只能在一定的操作系统(如Windows 2K和Windows XP)上才能实现;
3. 海量存储级方案(MSC)——使应用就像作为存储设备(驱动)的PC主机一样,但代价是复杂性的增加;
4. 客户定制级方案——为程序员提供了最大的灵活度,但代价也是成本增加--需要为需求开发操作系统专用驱动程序。
本文小结
图6:USB固件堆栈和解决方案分类。
所关注的是成本和复杂度的增加放慢了USB在设备领域的利用速度。但是,最新的具有本地USB接口的高级闪存微控制器的出现,为应用提供了单片解决方案,还有现成的固件方案(如USB闪存引导上载)的易用性,正在为设备设计者提供新的和颇具竞争性的引用USB的理由,即在降低成本的同时为其产品添加新的强有力的功能。