USB设备的调试与测试技巧

2015-03-20 13:09:40   来源:eechina   

关键字: USB设备  调试  测试技巧

USB是一种灵活的高速接口技术,可以替代计算机中原来的串行口和并行口,但灵活性高也意味着更加复杂,使得USB设计调试以及设计完成后的验证都比较困难。本文首先对USB规范做一简要介绍,然后详细讨论USB产品在调试与规范验证方面的一些实用技巧。

通用串行总线(USB)是一种很流行的接口,可用于那些与个人计算机进行通信的设备。近年来,所有新PC机和Mac机都支持USB技术,这种接口有足够的灵活性,既可用于驱动器和键盘之类的普通外围设备,也可用于定制按特殊用途设计的外设。此外USB还有一些对用户和开发人员都很有吸引力的特性,如从总线向设备提供电源、易于通过集线器进行总线扩展,以及主计算机对设备能自动识别等等。

但USB的超强性能也意味着它的接口要比它所替代的老式串行和并行接口都复杂,每个USB设备必须响应总线上的一系列标准请求和各种事件。大多数总线交流需要双向通信,而且延迟必须很小,总线上的数据都经过编码,单单只用示波器或逻辑分析仪观察不是很容易。工程技术人员可以选择不同的工具与技术或采用不同设计,简化并加快USB的开发和故障排除。

USB规范

\

                                              图1:Windows的设备管理器会显示出所有枚举成功的USB设备。

USB规范是由英特尔、微软和另外几个PC及外设公司共同提出的,在USB应用者论坛(USB-IF)的网站上提供了供开发人员使用的规范文本、相关信息及工具(详情可访问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设备),以及验证该设备是否遵循功率管理规则。 

\

                                                              图2:从集线器上收到的设备描述符代码。

USB通信调试可在三个位置进行,即在PC主机、设备和线缆等处,每个方案都有其自己的优点。

在主机上进行调试

在主机处,可以验证一个设备是否枚举成功并能执行预定的功能。在主机检测到问题后,要找到问题根源常常还需要检查设备本身硬件或线缆中的总线通信流量情况。

当USB设备连接到主机后, 

Windows的设备管理器 (图1)会进行快速检查,看设备枚举是否有问题。图标列表上的惊叹号表示与该设备通信或寻找驱动程序时有问题,而图标上的X号则表示设备存在但己不起作用。

为精确地看到主机在枚举时收到什么信息,可以使用USBCheck应用软件包或者新的USB指令验证器工具,USB-IF网站上免费提供了这两种工具。USBCheck能观察描述符、发送控制请求、观察结果以及在集线器和HID(拟人接口设备)上对设备做进一步测试。

USBCheck的设备框架测试能读出描述符并发送标准请求,这些测试作为初始检查非常有用,此时Windows从设备上检索到它所想要的信息。图 2显示了USBCheck从集线器接收到的设备描述码。主机对USB设备枚举成功后,应用软件可以按预定用途对设备进行测试,Windows设备驱动程序可通过组合API函数如ReadFile()、 WriteFile()或DeviceIoControl()等使应用软件访问USB设备。有些不同等级的设备还有额外支持,如应用软件能以访问其它驱动器的同样方法访问USB驱动器,应用软件不必了解驱动器是使用USB还是其它接口,因为这些细节在更低一级中进行处理。对于许多设备来讲,USB等级规范定义了设备的预定功能及固件响应,如HID、大容量存贮器件和用于静止图像捕获的设备等。

当出现错误时,Windows返回的错误信息通常提供不了太多帮助。例如向HID类设备发送WriteFile()函数失效时,返回的错误一般是 “CRC Error”,而造成传输失效的任何固件问题都会得到这个错误信息。通常排查错误要是从CRC计算着手基本上是找不到什么的,跟踪这类问题出现的原因常常需要在设备或总线上进行调试。

认证测试USB应用者论坛和微软公司可为USB设备和主机软件开发人员提供测试,通过测试的产品可以在上面使用USB标识或者Microsoft Windows标识。
[1] [2]
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

推荐阅读

编辑:什么鱼
本文引用地址: http://www.eeworld.com.cn/Test_and_measurement/2015/0320/article_11094.html
[发表评论]
[加入收藏]
[打印本页]
[关闭窗口]
[返回顶部]
[RSS订阅]
小广播
每日新闻
最热点击
本周热门资源推荐
EEWORLD独家
论坛精华
精选博文