STM32 的高速 USB 信号质量测试实现

judy的头像
judy 发布于:周二, 11/14/2017 - 12:01 ,关键词:

STM32 提供了丰富的接口资源,其中包括 USB FS、USB HS、OTG FS 和 OTG HS。对于高速 USB,由于信号速率相对较高。在开发过程中,会对高速 USB 信号质量进行测试,例如运用广泛的眼图测试。STM32 的高速 USB/OTG IP 遵循USB 2.0 规范,能够配合实现眼图等信号质量测试项。本文中,首先介绍眼图等信号质量测试的实现框架,然后以 Cube 软件包中 USB 设备类的 HID 例程为基础,提供软件层面的修改。最后通过 USB 官方提供的 HSETT 工具,一步一步呈现如何使STM32 实现的 USB 设备进入测试模式,以便使其输出用以获取眼图等测试项的信号。

一 信号质量测试背景介绍

高速 USB 信号质量测试,实现框架如下图。

STM32 的高速 USB 信号质量测试实现

根据测试需要,利用电脑端测试软件工具 HSETT,使 STM32 实现的 USB 设备进入相应的测试模式。然后利用示波器抓取测试信号,进行信号质量分析。本文中不包含示波器抓取信号的实现描述,读者可以通过文末的参考文档进行了解。

其中,HSETT 全称 High-speed Electrical Test Tool,是 USB 官方组织发布的一个发包工具(官网 www.usb.org 下载)。

STM32 的高速 USB IP 遵循 USB2.0 规范,支持多种测试模式,包括 Test_J 模式、Test_K 模式、Test_SE0_NAK 模式、Test_Packet 模式和 Test_Force_Enable 模式。更多测试模式内容的介绍请参考 USB2.0 规范。 更多内容请参考对应型号的参考手册。其中,如果是进行眼图测试,需要进入 Test_Packet 测试模式。

二 软件层面支持

本文中实现环境如下:

硬件平台: STM32F469I-EVAL
Cube 软件包版本: v1.16.0
HID 例程文件路径 :
STM32Cube_FW_F4_V1.16.0\Projects\STM32469I_EVAL\Applications\USB_Device\HID_Standalone.HS Electrical Test Tool (HSETT)

通过上述介绍可以了解到高速 USB 的信号质量测试,需要 USB 器件进入测试模式,提供符合测试的信号输出。基于此,下面列出例程中添加及修改处,以实现 HID 设备对测试模式的支持。

STM32 的高速 USB 信号质量测试实现

STM32 的高速 USB 信号质量测试实现

STM32 的高速 USB 信号质量测试实现

完成上述修改,编译生成执行文件,并加载到 STM32F469I-EVAL 板。注: 工程中包含三个子工程,分别是STM32469I-EVAL_USBD-FS、STM32469I-EVAL_USBD-HS-IN-FS 和 STM32469I-EVAL_USBD-HS,选择 STM32469IEVAL_USBD-HS实现高速 USB 的 HID 设备功能。

三 测试模式进入

利用 USB 数据线将 STM32F469I-EVAL 板上的高速 USB 口与电脑连接。如果 HID 例程运行正常,电脑会对将其识别为HID 设备,可在电脑的设备管理器中查看,如下图。

STM32 的高速 USB 信号质量测试实现

打开 HS Electrical Test Tool,出现主控制器选择界面,如下图。界面中内容及出现情况与电脑有关,如果电脑仅包含一个主控制器,不会出现选择界面。注意 HSETT 工具用于 USB2.0,如果电脑只有 USB3.0 主控制器,会出现无法找到USB2.0 主控制器的提示,并且不能使用。

STM32 的高速 USB 信号质量测试实现

从设备管理器进入,查看主控制器属性中的位置路径。查找与 HID 设备的位置路径关联的主控制器,如下图(主控制器的总线、设备和功能号信息,在下图界面的“常规”标签中)。

STM32 的高速 USB 信号质量测试实现

根据图中信息确定选择 “PCI 总线 0、设备 29、功能 7”,出现选择测试类型的界面,如下图。

STM32 的高速 USB 信号质量测试实现

本文中介绍 USB 设备的测试实现。选择 “Device”,单击“TEST”,进入测试模式的界面,如下图

STM32 的高速 USB 信号质量测试实现

界面中列出了挂载在主控制器上的 USB 设备硬件 ID,选择对应的设备。(实验时,对应 USB 主控制器上只挂载了STM32 实现的 HID 设备。)

点击 “Enumerate Bus”重新与设备建立枚举。枚举成功出现如下提示。

STM32 的高速 USB 信号质量测试实现

HSETT 提供了多种设备命令,如下图。为了实现眼图测试,选择“TEST_PACKET ”,单击“EXECUTE”,向 USB 设备发送设置 Test_Packet 模式的命令。

STM32 的高速 USB 信号质量测试实现

发送成功,并被 USB 设备正确响应后,出现如下提示。然后可以单击“Return To Main”  “Exit”退出 HSETT,释放主控制器的控制。

STM32 的高速 USB 信号质量测试实现

STM32 高速 USB 进入测试模式,通过 USB 接口连续循环地向外输出测试需要的信号。在进入测试模式后,信号的发送不受 USB 数据线连接的影响,断开 USB 数据线,依然会发送信号,以便获取眼图等测试信号。

四 小结

本文简略的从 STM32 角度,描述了高速 USB 信号质量测试中,涉及到的修改及实现。对于具体的测试及分析,不在本文介绍范围内,读者可以通过提供的参考文档 Universal Serial Bus Implementers Forum Device Hi-Speed Electrical TestProcedure,更加全面的了解信号质量测试的步骤及实现。另外,文件中以 HID 设备为例,但需知测试实现与哪种类型 USB设备无关。

来源: http://www.stmcu.com.cn

围观 1598