8564|0

1万

帖子

203

TA的资源

管理员

楼主
 

STM32 的高速 USB 信号质量测试【ST官方应用笔记】 [复制链接]

笔记预览
STM32 的高速 USB 信号质量测试实现
前言
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 信号质量测试,实现框架如下图。根据测试需要,利用电脑端测试软件工具 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 设备对测试模式的支持。
  1. 文件名 函数名 操作
  2. usbd_def.h #define USBD_EP_TYPE_CTRL 0
  3. #define USBD_EP_TYPE_ISOC 1
  4. #define USBD_EP_TYPE_BULK 2
  5. #define USBD_EP_TYPE_INTR 3
  6. /* 在之后添加 设备测试模式宏 */
  7. #define TEST_J 1
  8. #define TEST_K 2
  9. #define TEST_SE0_NAK 3
  10. #define TEST_PACKET 4
  11. #define TEST_FORCE_EN 5
  12. usbd_core.h /* 修改函数声明 */
  13. USBD_StatusTypeDef USBD_RunTestMode (USBD_HandleTypeDef
  14. *pdev, uint8_t testmode);
  15. usbd_ctlreq.c USBD_SetFeature /* 增加特性设置 */
  16. static void USBD_SetFeature(USBD_HandleTypeDef *pdev ,
  17. USBD_SetupReqTypedef *req)
  18. {
  19. if (req->wValue == USB_FEATURE_REMOTE_WAKEUP)
  20. {
  21. pdev->dev_remote_wakeup = 1;
  22. pdev->pClass->Setup (pdev, req);
  23. USBD_CtlSendStatus(pdev);
  24. }
  25. else if(req->wValue == USB_FEATURE_TEST_MODE)
  26. {
  27. USBD_CtlSendStatus(pdev);
  28. pdev->dev_test_mode = req->wIndex >> 8;
  29. }
  30. else
  31. {
  32. return;
  33. }
  34. }
  35. usbd_core.c USBD_RunTestMode /* 完善特性设置函数 */
  36. USBD_StatusTypeDef USBD_RunTestMode (USBD_HandleTypeDef
  37. *pdev, uint8_t testmode)
  38. {
  39. PCD_HandleTypeDef *hpcd = pdev->pData;
  40. USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
  41. switch (testmode)
  42. {
  43. case TEST_J:
  44. case TEST_K:
  45. case TEST_SE0_NAK:
  46. case TEST_PACKET:
  47. case TEST_FORCE_EN:
  48. USBx_DEVICE->DCTL |= testmode << USB_OTG_DCTL_TCTL_Pos;
  49. break;
  50. default:
  51. return USBD_FAIL;
  52. }
  53. return USBD_OK;
  54. }
  55. usbd_core.c USBD_LL_DataInStage if (pdev->dev_test_mode == 1)
  56. {
  57. USBD_RunTestMode(pdev);
  58. pdev->dev_test_mode = 0;
  59. }
  60. /* 将上述代码替换如下 */
  61. else
  62. {
  63. if (pdev->dev_test_mode != 0)
  64. {
  65. USBD_RunTestMode(pdev, pdev->dev_test_mode);
  66. pdev->dev_test_mode = 0;
  67. }
  68. }
复制代码

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


三 测试模式进入
利用 USB 数据线将 STM32F469I-EVAL 板上的高速 USB 口与电脑连接。如果 HID 例程运行正常,电脑会对将其识别为HID 设备,可在电脑的设备管理器中查看,如下图。打开 HS Electrical Test Tool,出现主控制器选择界面,如下图。界面中内容及出现情况与电脑有关,如果电脑仅包含一个主控制器,不会出现选择界面。注意 HSETT 工具用于 USB2.0,如果电脑只有 USB3.0 主控制器,会出现无法找到USB2.0 主控制器的提示,并且不能使用。
从设备管理器进入,查看主控制器属性中的位置路径。查找与 HID 设备的位置路径关联的主控制器,如下图(主控制器的总线、设备和功能号信息,在下图界面的“常规”标签中)。
根据图中信息确定选择 “PCI 总线 0、设备 29、功能 7”,出现选择测试类型的界面,如下图。
本文中介绍 USB 设备的测试实现。选择 “Device”,单击“TEST”,进入测试模式的界面,如下图。
界面中列出了挂载在主控制器上的 USB 设备硬件 ID,选择对应的设备。(实验时,对应 USB 主控制器上只挂载了
STM32 实现的 HID 设备。)
点击 “Enumerate Bus”重新与设备建立枚举。枚举成功出现如下提示。
HSETT 提供了多种设备命令,如下图。为了实现眼图测试,选择“TEST_PACKET ”,单击“EXECUTE”,向 USB 设备发送设置 Test_Packet 模式的命令。
发送成功,并被 USB 设备正确响应后,出现如下提示。然后可以单击“Return To Main”  “Exit”退出 HSETT,释放主控制器的控制。
STM32 高速 USB 进入测试模式,通过 USB 接口连续循环地向外输出测试需要的信号。在进入测试模式后,信号的发送不受 USB 数据线连接的影响,断开 USB 数据线,依然会发送信号,以便获取眼图等测试信号。


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


参考文档
Universal Serial Bus Specification v2.0
Universal Serial Bus Implementers Forum Device Hi-Speed Electrical Test Procedure For Agilent Infiniium v1.2
Universal Serial Bus Implementers Forum Device High-speed Electrical Test Procedure For Tektronix v1.5
Universal Serial Bus Implementers Forum Full and Low Speed Electrical and Interoperability Compliance Test Procedure
RM0386 Reference Manual STM32F469xx and STM32F479xx advanced ARM®-based 32-bit MCUs


下载: STM32_USB_HS_signal_quality_test.pdf (576.5 KB, 下载次数: 26)
此帖出自stm32/stm8论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
点赞 关注(1)
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表