一. 概述
CVTest 是基于 USBCV 软件工具的合规性测试,可以验证设备是否符合 USB 规范和标准。USBCV 则是 USB-IF 提供的一款免费 USB 装置测试软体,简要做 USB2.0 及 USB3.0 装置相关测试。本文将基于 NXP LPC5516 HID 类键盘简要讲解 USBCV 中公有 USB 请求测试及 HID 类测试步骤,说明测试相关注意事项及 LPC5516 HID 类键盘为通过 CVTest 需要修改的程序,为需要通过 CVTest 的用户提供一个参考。
二. Chapter9 Test
Chapter9 Test 是 CVTest 的公有 USB 请求测试。在 USB 标准第 9 章定义了枚举期间主机送到外设的所有请求,以及外设响应的数据格式,Chapter9 Test 可以证明枚举代码正确性,建议所有设备均通过此测试。以下为 Chapter9 Test 测试步骤:
1. 将待测 HID 类设备连接至主机 USB 上,打开 CVTest 软件图标(下载链接:https://www.usb.org/document-library/usb3cv)。
2. 打开弹出以下界面,选择待测主机驱动器,点击 Continue(电脑连接的某些非测试目标的 USB 设备可能导致 USBCV 无法发现主机驱动器, 所以测试时应保证系统 USB 设备尽量少)。
3. 弹出窗口,继续选择 Continue。(进入 CVTest 后测试协议栈会替代系统自身的 USB 协议栈导致 USB 设备不可用,因此 USB 鼠标等无法使用,如果依然能使用说明驱动没有正确替换)
4. 进入测试主页,选择测试类别 Chapter9 Test(本例为使用的 USB 协议为 USB2.0,因此选择 Chapter9 Test[USB 2 devices],用户根据自身情况选择 USB2.0 或 USB3.0),点击左下角 Run 开始测试。
5. 本例使用测试平台为 NXP LPC5516 HID 类键盘,如果此待测设备下载的程序是 USB SDK 默认例程来直接进行测试(如 dev_composite_hid_mouse_hid_keyboard 例程),会出现测试失败。
6. 需要将 USB SDK 默认例程(如 dev_composite_hid_mouse_hid_keyboard 例程)中设备一致性测试开启,设置测试模式的宏为 1。
7. 此例中使用的是高速 USB2.0,因此将 SDK 默认低速 USB 改为高速 USB,并将 SDK 中循环的函数停止,方便测试。
8. 编译下载后重新进入 Chapter9 Test[USB 2 devices] 测试页,点击 RUN,此时将会弹出 USB2.0 设备选择,根据 PID 与 VID 选择待测设备(本例中 PID = 00A0、VID = 1FC9)
9. 具体 PID、VID 值可在 USB SDK 例程如图所示位置找到:
10. 开始自动执行测试,全部测试项完成后将提示可以继续进行其他测试,此处直接点击 OK 即可。
11. 弹出测试结果。当该测试类别下全部测试项均通过,会提示测试通过(已通过的测试其背景色将被标注为绿色,未通过项其背景色被标注为红色)
三. HID Test
HID 类设备还需进行的测试项为 HID Test,因此需要在通过 Chapter9 Test 基础上进行 HID Test,SDK 代码相关修改如上 Chapter9 Test。HID Test 测试步骤如下:
1. 在通过 Chapter9 Test 后点击 HID Test,点击 RUN,选择待测设备。
2. 在通过 Chapter9 Test 测试的 SDK 代码中中未获取 HID 描述符,因此会出现如下错误。
3. 需要在测试( dev_composite_hid_mouse_hid_keyboard )代码中添加获取 HID 描述符请求,重新编译下载后进行重测。
4. 此时可以通过 HIDTest 测试
备注:上述测试中 Chapter9 Test 的 Remote Wakeup Test 被跳过,若需要这部分的测试通过报告,可以使用 usb_suspend_resume_device_hid_mouse 例程进行测试,其修改内容参考该文档 NXP LPC5516 在 USB CVTest 的一致性测试 - 大大通(简体站) (wpgdadatong.com.cn)
四. 总结
本文介绍了关于 HID 类设备 CVTest 需要进行的两种兼容性测试,详细介绍基于 NXP LPC5516 的测试步骤及代码需要修改之处,其他 MCU 如需通过测试可根据本文参考。