轻松三步添加USB功能
2014-09-06SiliconLabs微控制器产品经理EvanSchulz
Silicon Labs微控制器产品经理 Evan Schulz
轻松三步添加USB功能
Silicon Labs微控制器产品经理 Evan Schulz
对于当今的系统设计人员来说,通过一种快速且容易的方法把嵌入式系统连接到计算机已经成为系统设计的必要条件。而能使嵌入式应用与计算机通信的最常见方法是采用通用串行总线(USB),几乎可以在每一台台式电脑、笔记本电脑和平板电脑上发现通用串行总线。随着USB的普及,嵌入式开发人员面临着学习挑战,即如何使用USB协议以及如何把它集成到系统中。问题在于,USB通信协议是复杂的,并且使用通用微控制器(MCU)实现USB设计是费时和具有挑战性的。少数半导体厂商提供了具有固定功能的通信桥接器,旨在通过消除USB设计相关的复杂性来简化添加USB功能的设计难度。
关于这种通信接口产品的一个例子就是Silicon Labs的CP2130 USB转SPI桥接器,它通过使用通用MCU上的串行外设接口(SPI)使能USB连接。图1显示了这种通信桥接器是如何与嵌入式系统连接的。除了USB转SPI桥接器,下面是一些支持其他接口的通信桥接器:
① USB转1 UART、2 UART、4 UART。
② USB转SMBus/I2C。
③ USB转I2S。
图1 系统级USB主机与MCU主机连接示意图
面向USB通信的嵌入式系统分成两种类型:使用USB更新原有设计或者在新设计中添加USB功能。
对于任何一种类型,开发人员只要遵循三个简单步骤,就可以很快使USB通信,而且不需要开发人员具有USB专业知识:
① 确定MCU主机上所提供的通信外设;
② 使用评估套件和跳线构建原型设计;
③ 使用通信桥接器创建定制的原理图和PCB图。
此外,开发人员能够构建应用定制的器件和驱动程序。现在,让我们来仔细看看每一个具体步骤,并探讨这些步骤中几种设计选择的利弊。
步骤1:确定MCU主机上所提供的通信外设
无论是升级原有设计,还是优化全新设计,开发人员都必须明确主机MCU可用的通信外设。如果是原有设计方案,开发人员应当寻找主机MCU上的空闲外设。如果没有,开发人员可以使用可寻址协议,例如SMBus/I2C。如果是全新设计,开发人员可以选择主机MCU去匹配预见要遵循的通信协议。例如,如果SPI通信是预见要满足的协议,开发人员应该选择一个具有空闲SPI接口的主机MCU。当选择一个通信外设时,考虑应用所需的最大通信速率也是十分重要的。如果有大数据需要高速传输,那么SPI或UART是最好的选择。如果传输速率不重要,而具有仲裁机制的多设备总线连接才是重要的,那么SMBus/I2C是最好的选择,因为它仅仅需要2个引脚。
除了选择通信外设,对于可用的驱动程序选项的选择也是很重要的。最人性化的选择是人机接口设备(HID)类通信桥接器,它不需要安装驱动程序,HID类设备使用一般操作系统中内置的驱动程序,它只需将设备插入USB口即可使用。其他驱动程序选项包括虚拟COM端口(VCP)驱动程序、WinUSB/LibUSB驱动程序和供应商定制的驱动程序。所有这些选项都需要安装驱动程序,并且通常能够比HID类产品获得更高的吞吐量。
步骤2:使用评估套件和跳线构建原型设计
在接下来的步骤中,开发人员能够使用通信桥接评估套件去构建一个原型设计,这个原型设计可以使用跳线来连接评估套件和主机MCU。此原型设计用于验证两个设备之间的通信,并且作为原理图设计的起始点。一般情况下,评估板上将有明确清晰的标识,帮助开发人员决定需要连接哪些跳线,而不用翻阅技术文档。
在图2中,将CP2130评估板连接到一个正在运行SPI Slave示例代码的C8051F850单片机板上。在这个示例中,具有SPI信号测试点的原有设计被用来替代C8051F850 单片机卡。SPI头已经连接到MCU开发板的特定端口引脚上,而且这些引脚已连接到内部SPI外设。
图2 总线供电的原型系统示例
现在硬件已经准备就绪,可以为你的USB主机准备安装演示应用和驱动程序。所有需要的软件通常能够在器件制造商网站上找到,这样的做法值得推荐,因为它通常包含最新的软件和文档。CP2130桥接设备在使用前需要安装驱动程序,并且还要使用一个评估软件工具用于USB通信,这两个软件包含在CP2130评估套件提供的软件包中。完成安装后,评估软件工具能够通过USB读写C8051F850 MCU上的SPI数据。这时可以运行几个读写测试程序来验证操作。
步骤3:使用通信桥接器创建定制的原理图/PCB图
原型设计有助于为最终设计创建原理图。首先,找到为通信桥接器评估套件提供的原理图,CP2130 USB转SPI桥接控制器的原理图可以在CP2130-EK用户指南中找到,而用户指南可从网络链接www.silabs.com/USB-Bridge下载。
评估套件原理图可以显示对于USB操作哪些组件是必要的。需要特别提及的是,一些通信桥接器集成功能消除了外部器件、减少了BOM成本、简化了设计。现在检查你的通信桥接器是否支持下列特性:
◆ 免晶振USB操作:你的通信桥接器能够支持无需片外晶振的USB通信吗?
◆ 片内5 V调压器:桥接器能够通过无需片外器件的USB连接给系统供电吗?输出电流最大是多少(这个特性主要用于USB总线供电的应用)?
◆ 片内可编程存储器:桥接器设备包含允许通过USB定制的集成的可编程存储器吗?
◆ 小封装选项:更小的封装有助于开发人员创建更小、更便携的解决方案。
选择包含这些特性的通信桥接器将大大简化设计的复杂度。接下来,把CP2130器件和主机MCU之间的SPI信号(SCLK、MOSI、MISO、SS、GND)原型连接转换成原理图连接。开始PCB设计之前,通过网络链接www.silabs.com/contactsupport发送原理图给Silicon Labs技术支持团队,他们将免费检查审核你的原理图配置是否正确。技术支持团队将检查你的原理图并在需要时提供修改建议。现在板子可以发给加工厂生产了。如果产品设计需要定制化的器件和驱动程序,请继续阅读。如果不需要,开始通信吧!
假使你想要创建定制器件和驱动程序,通信桥接器和驱动程序通常具有出厂时自带的供应商特定的标准USB描述符和字符串。USB供应商ID(VID )、产品ID(PID )描述符和串行字符串被操作系统用于匹配连接设备的驱动程序。因此,强烈推荐描述符和字符串组合具有唯一性,以避免当两个具有相同信息的设备连接到同一系统时产生错误。创建定制的驱动程序和设计使得开发人员可以使用产品特定的字符串和设备描述符。图3显示的是当安装非定制CP2130器件时,在Windows上呈现的默认字符串。
图3 CP2130安装过程中在窗口显示的默认字符串
为了成功定制一款产品,通信桥接器和相关驱动(如果需要)必须更新。通信桥接器有相关的图形化定制工具,这款工具允许通过USB连接实现定制化。桥接器制造商通常也提供一个驱动程序定制工具,指导你一步一步地创建一个定制化的驱动程序。定制桥接器以后,除非相关定制的驱动程序已经被安装到主机上,否则这款桥接器不能与主机系统进行通信。
其他实用技巧
① 一旦驱动程序以任何方式被定制了,操作系统供应商可能需要额外的认证过程。例如Microsoft的Windows硬件质量实验室(WHQL)测试。Windows 7(x64)和Windows 8(x64)不允许安装未认证过的驱动程序。其他Windows版本允许安装,但是将为用户显示警告信息。应用笔记220——USB驱动定制详细介绍了如何定制驱动程序;而应用笔记807——重新认证定制的Windows HCK驱动程序包详细介绍了如何为Windows重新认证定制过的驱动程序。两个应用笔记可以从网络链接www.silabs.com/interface-appnotes下载。
② 对于定制的通信桥接器的量产,制造商能够为用于最终系统的器件提供预编程服务,从而不需要图形化定制工具。
③ 在销售产品给客户时,产品包括一条USB线缆,以及定制驱动程序所需的Flash存储盘、CD/DVD或者网络下载链接地址。
附加值
虽然三步法添加USB功能的主要目标是使