摘要:usb是一种灵活的高速接口技术,可以替代计算机中原来的串行口和并行口,但灵活性高也意味着更加复杂,使得usb设计调试以及设计完成后的验证都比较困难。本文首先对usb规范作一简要介绍,然后详细讨论usb产品在调试与规范验证方面的一些实用技巧。
通用串行总线(usb)是一种很流行的接口,可用于那些与个人计算机进行通信的设备。近年来,所有新pc机和mac机都支持usb技术,这种接口有足够的灵活性,既可用于驱动器和键盘之类的普通外围设备,也可用于定制按特殊用途设计的外设。此外usb还有一些对用户和开发人员都很有吸引力的特性,如从总线向设备提供电源、易于通过集线器进行总线扩展,以及主计算机对设备能自动识别等等。
但usb的超强性能也意味着它的接口要比它所替代的老式串行和并行接口都复杂,每个usb设备必须响应总线上的一系列标准请求和各种事件。大多数总线交流需要双向通信,而且延迟必须很小,总线上的数据都经过编码,单单只用示波器或逻辑分析仪观察不是很容易。工程技术人员可以选择不同的工具与技术或采用不同设计,简化并加快usb的开发和故障排除。
usb规范
usb规范是由英特尔、微软和另外几个pc及外设公司共同提出的,在usb应用者论坛(usb-if)的网站上提供了供开发人员使用的规范文本、相关信息及工具(详情可访http://www.usb.org)。
每个总线上有一个主控制器,用来控制与总线上面设备的通信。为了给设备提供更大带宽,一台计算机可以有多个主控制器,分别控制其自己的总线。
usb支持三种总线速度:低速1.5mbps、全速12mbps和高速480mbps。高速模式是2000年发布的规范2.0版本新增加的,windows xp是支持usb 2.0的第一个windows系统,微软公司允诺在windows 2000和windows me中对usb 2.0提供更新支持,而其它操作系统以后也将逐渐支持usb 2.0。
对于嵌入式pc操作系统,windows ce也支持 usb。大多数windows ce计算机作为usb主机使用,windows ce 3.0中还包括用于cypress/scanlogic公司sl11主/从控制器的驱动程序。有了这些驱动程序(或者用于其它控制器的类似驱动程序),一个windows ce计算机还可以作为usb外设使用。
usb的多功能性主要归功于它的4种传输类型,每一种类型适用于不同的用途。其中控制传输模式用于传输枚举过程中的请求,也用于发送请求至设备和接收答复(可选);中断传输模式用于键盘鼠标之类由主机定期发出请求和发送数据的设备;批传输模式用在诸如打印机和扫描仪之类的设备中,这类设备要求传输速度快,但在总线忙碌时传输数据可以等待;同步传输用于实时伴音和其他应用,这类应用对时序要求很高,但允许有偶尔的错误。
在自举或者当某个设备连接到总线上时,设备集线器就向主机报告连接情况,在一个称为枚举的过程中,主机发送系列请求以了解连接的设备并与之建立通信,设备则以所谓描述符数据结构返回应答信息。windows的设备管理器将描述符内的信息与pc内部inf文档进行比较,从中找出最佳匹配,然后指定一个设备驱动程序,这样应用程序就能够访问该设备了。
所有设备必需遵循usb对功率管理的要求,包括限制设备吸收的总线电流和检测什么时候进入低功耗挂起状态,允许的电流量取决于器件描述符中的信息。
目前市面上有很多带usb功能的设备控制器芯片可供选用,有的是带一个usb口的微控制器,有的是非cpu控制器,上面带有一个usb口和一个用于与普通微控制器通信的串口或并口。大多数具有usb功能的微控制器都有c语言编译器,如果你熟悉某个微控制器系列,那么它提供的usb功能变量将非常有用。测试usb设备的通信功能包括几个阶段,第一个目标是成功枚举,如果设备不能枚举,那么接口什么事也做不了。其它测试包括让设备执行预定的任务(例如读出或写入文档至一个usb设备),以及验证该设备是否遵循功率管理规则。
usb通信调试可在三个位置进行,即在pc主机、设备和线缆等处,每个方案都有其自己的优点。