USB

基本功能

在本设计中,数据的处理可以使用PC机的MATLAB等功能强大的软件,但是这类现有的数据处理软件并不能对特有的数据采集系统的下位机采集模块进行直接控制,因此需要针对特定的数据采集系统编写对应的上位机软件,上位机软件是针对上述目的而设计与编写的,是整个采集系统的控制前端和数据存储及处理中心。控制功能主要包括控制下位机采集的开始与终止,采集的频率等,数据处理功能主要包括绘制波形图,将数据显示于列表,将数据存储于文件,其中将数据存储于文件将便于使用现有的数据处理软件对数据进行一些数值算法处理,以达到科学研究,结论验证等目的。

开发环境

C++程序设计语言可以很好地实现面向对象的编程思想,采用C++编写上位机程序,可以将每一个功能模块封装成一个类,修改某个类的实现,增加类的功能不会影响整个程序的框架,这样就很容易维护和扩展功能;加之我们要实现的软件功能中需要调用大量的windows API函数库,所以采用VC++6.0作为上位机的开发环境。

程序功能模块划分

总的功能模块主要包括三个模块,即HID设备读写模块,数据采集模块,数据处理模块。

基于PIC的数据采集系统---上位机设计

HID设备的查找与读写

(1)枚举

USB主机在检测到USB设备插入后,就要对设备进行枚举了。枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。

(2)HID

人机接口设备(HID)是指直接和人进行互动的设备,如鼠标、键盘等. 在Windows 中,具有相似属性和提供相似服务的设备被归为一种设备类型,一种类型的设备可以使用一个通用的设备驱动程序. 在运行Windows 98 或更高版本的PC 机上,应用程序可以使用操作系统内置的HID 类驱动程序与HID 通信. 这样使得符合HID 类的USB 设备很容易开发与运行.

(3)HID设备的查找

在Windows操作系统中内置很多与HID有关的API函数,调用这些函数,就可以开始对指定的HID设备进行查找,查找HID设备的最终目的是获得该设备的路径名,设备的存取容量等信息,为以后对该设备进行读写做好准备。

基于PIC的数据采集系统---上位机设计

(4)HID设备的读写

在取得了HID设备的路径全面后,即可开始对HID设备进行读写,对设备的读写也是通过调用相应的函数来实现的。

控制下位机进行数据采集

上位机向下位机发送命令,控制下位机进行数据采集,并从下位机获取数据,在这个过程中,要处理好两个线程的同步的问题,即数据采集线程和数据处理线程能够协调工作,保正系统能正确稳定的工作。具体的解决方法是实现对某些数据访问的原子操作,即一个线程在对公共数据进行访问时,另一个线程不能打扰,直到操作线程操作完成,放弃对数据的使用权,另一个线程才能够访问数据。

下位机获取了关于采集的有关参数后,即可开始采集,每隔一定时间采集一个数据,当采集数据数目达到限制值个数后,本次采集完成,此时下位机才开始将采集数据发送给上位机。

基于PIC的数据采集系统---上位机设计

上位机对采集的数据的处理

上位机在将数据采集命令发送给下位机后,所要做的就是等待下位机采集完成并接收数据,因此上位机将循环查询下位机工作状态,一旦检测到下位机采集结束的标志,上位机就开始对数据进行处理。

数据处理分为三种:

(1)绘制波形图

绘制波形图的要求有两点:第一是不能频繁闪烁,影响观察;二是波形图是动态的,因为绘制区域有限,而所采集的数据是源源不断增加的,因此要求波形图能够动态的更新。

(2)添加到列表显示

可直观地查看目前所采集的所有数据。

(3)保存到文件

运用功能强大的数据处理软件对数据进行更深的处理。

界面显示

采集单极性正弦波工作界面

基于PIC的数据采集系统---上位机设计

代码

转自:markmin214

围观 335

我们把所设计的数据采集系统功能分解为三大部分:数据采集部分、数据通信部分、数据处理部分。

数据采集部分应包含:A/D转换器,时序、模式控制,数据缓冲功能。它应能接受来自主机的命令,按不同模式控制A/D转换器采集数据,暂存于数据缓冲区,再根据主机命令发给主机。这部分功能由一个单片机及接口来实现是最优方式。

数据通信部分应包含:简单、高效、通用的数据通信模式和软硬件支持。它应能在数据采集和数据处理两部分之间实现目前最好的连接和沟通。因为USB作为一种外部总线标准,用于规范电脑与外部设备的连接和通讯,并具有传输速度快,使用方便,支持热插拔,连接灵活,独立供电等优点,所以这部分功能采用USB接口连接最好。

数据处理部分应包含:强大、高效、通用、适应性好的软硬件支持平台。它应能完成主控和数据处理两大功能。主控就是根据用户需要,给数据采集部分下达命令,采集数据,同时管理数据通信部分,实现信息的上传下达,读取数据。数据处理就是要提供方便实用的数据的分析、处理、存储、显示、输出等各种应用功能,满足用户的尽可能多的需求。这部分功能自然非PC机莫属。

系统功能安排是:PC机作为主机(也称上位机),单片机(也称下位机)负责数据采集与缓冲保存,USB接口负责两者之间的数据通信。

具体工作流程是:PC机接收用户的应用命令,按系统功能配置数据采集参数,通过USB接口,给单片机发送控制命令,单片机按下达的命令控制A/D转换进行数据采集,并将采集到的数据作缓冲保存,采集好一批数据后,再按主机要求通过USB接口发送给PC机,PC机完成数据的存储、简单分析、处理、显示、输出等基本应用。更进一步还可以对数据进行格式转换,供其它专业数据处理软件作输入数据,实现更多高级数据处理功能。

MCU选型

为实现设计要求,微处理器必须含有具有A/D转换功能和USB通信功能的两个基本模块,以及其它实现拓展功能的模块。

基于PIC单片机USB接口的数据采集系统设计

上图所示为设想的功能板图,控制器通过它的功能模块与外围设备进行联系: USB模块与PC机连接,进行USB通信;A/D模块接模拟量输入,进行A/D转换;D/A模块接模拟量输出,产生输出波形;I/O接口外接输入输出;I2C模块与传感器等含I2C的器件连接,进行I2C通信;SPI模块与外围设备相连,使单片机与各种外围设备以串行方式进行通信以交换信息。

USB总线的数据采集方案一般有两种,一种是采用专用的USB通信芯片。另一种是利用具有USB接口功能的单片机。考虑到实际情况,本设计选用第二种方案。

PIC18F4550是Microchip公司生产的带全速USB接口的8位高档单片机,该单片机具有精简指令集、哈佛结构等特点,运行速度快、执行效率高。它的硬件资源非常丰富,并集成有多个功能模块: ICSP接口模块,可以通过PICkit™ 3与PC机联系,进行程序的烧写和调试;它的全速USB 2.0接口模块,可以方便、快捷的实现USB通信。

由此,我们选用PIC18F4550单片机来进行设计。它的优势在于:

1、利用它的USB接口,可以实现与PC机之间通信,不需要另加USB接口芯片。

2、利用它的ICSP模块,可以实现PC机对单片机进行程序的直接烧写,并进行在线调试。

3、能够让电路的设计更为简洁、实用,既提高了整个设计的安全性和可靠性,又降低整个系统的功耗。

4、Microchip公司提供了集成开发环境Mplab和汇编语言、C语言编译器,使我们在程序调试,模拟运行方面更容易、更方便快捷。Microchip公司同时还提供了USB通信的范例和demo子程序,使我们在使用USB通信功能时更加的简单、快捷。

围观 447

1、引言

USB接口以其数据传输快、连接简单、易于扩展、支持热插拔等特点已成为外设与PC通信的主要方式之一。随着嵌入式系统的发展,嵌入式微处理器需增加通用的USB接口,以便实现与PC等USB主机系统的通信。针对这样的需求,这里采用PHILIPS公司的USB接口器件PDIUSBD12和Atmel公司的AVR系列单片机ATmega8设计一种通用的USB接口模块。该模块可方便为各种嵌入式微处理器增加USB接口,从而实现与USB主机系统的高速通信。

2、系统硬件设计

该系统模块的控制核心是AVR高速单片机ATmega8。AVR单片机是新一代基于哈佛结构的高速RISC微控制器,具有速度快、价格低、可靠性高,I/O口线驱动能力强和片内集成外设资源丰富等特点,其内部集成有可进行ISP下载编程的Flash,EEPROM、熔丝位和锁定位。AVR单片机的ISP下载电缆制作简单、成本低廉,还有免费的下载软件(例如PONyProg)支持。PDIUSBD12是一款高性价比USB接口器件,完全符合USB1.l规范,易于与各种微处理器接口。

由于AVR单片机具有高速性,可利用I/O端口线以软件方式模拟PDIUSBD12的时序,对其读写。这种方式可根据不同的微处理器速度灵活控制PDIUSBD12的时序和地址,无需译码电路,从而简化硬件设计,降低成本。

由于ATmega8片内集成了UART,SPI,I2C等接口,该接口模块可利用这些接口与其他系统通信,使得该接口模块成为通用的接口转换器。

3、USB固件程序设计

本系统模块的USB固件程序采用符合ANSI C标准的GCC编译器设计,结合分层次的模块化结构,可移植性强,只需稍微修改硬件接口层即可将其移植到别的硬件平台,可重复利用代码。

USB固件程序设计是基于状态机和标准的前后台式程序架构。整个同件程序的模块化层次结构如图3所示。首先编写硬件接口层hal.c和PDIUSBD12器件的命令接口层,以供上层模块调用。硬件接口层含有对PDIUSBD12写指令和读写数据的函数,以供上层模块调用。当CPU不同时,只需修改这些函数即可。由于CPU访问PDIUS-BD12与普通存储器一样,只需根据硬件连接关系,在硬件抽象层中编写对PDIUSBD12写指令、写读数据的函数,供上层调用即可。实现PDIUSBD12的命令接口层需调用硬件抽象层函数,供上层模块调用。再设计前后台程序及标准设备请求程序模块。

先利用C语言的共用体与位域定义一个全局状态变量如下所示:
AVR单片机的通用USB接口模块设计
AVR单片机的通用USB接口模块设计
用户可根据需要增加相应的状态标志位,如UART,SPI,I2C等接口收发数据完成标志来满足各种情况下的需要,然后定义一个结构体变量用于存放USB的标准设备请求。

在前台主程序中首先初始化全局变量和其他外围设备,然后在while(1)的死循环中检测状态变量值有无变化,根据不同的状态变量值调用下层的相应函数完成相关操作。在后台的中断服务程序中,根据读取的中断寄存器值一方面将PDIUSBD12接收到的数据移入CPU内存或将内存中的数据写入PDIUSBD12发送端点的缓冲区;另一方面根据具体情况改变状态变量值。

以下给出了前台主程序的程序代码:以下为后台中断服务程序:
AVR单片机的通用USB接口模块设计
AVR单片机的通用USB接口模块设计

当前台主程序检测到状态变量收到SETUP包事件bEvent_flags.bits.setup_packet为1时,该标志位清零,再调用标准设备请求模块stdreq.c的control_handler()函数完成对USB设备的枚举。

设计标准设备请求模块,首先利用结构体定义USB枚举所需的各种描述符,以供不同设备请求使用,其次编写11个标准的设备请求处理函数。本层请求模块重要函数是协议控制子程序control han-dler(),它根据ControlData中标识的不同USB设备请求类型调用11个函数中的任意一个。除此之外,本层请示求模块还实现中断服务程序调用的控制端点接收与发送中断处理函数。

4、系统集成与应用

4.1 PC机驱动程序与应用程序的设计

利用该系统模块实现PC机通讯,需对PC机编写相关驱动程序和应用程序,可利用DriverStudio软件生成该系统模块在Windows环境下的驱动程序。应用程序的设计可使用诸如VB、VC、Delphi以及应用普遍的虚拟仪器软件开发工具LabVIEW等软件开发工具,直接调用驱动程序生成的动态链接库中的API函数,可根据具体任务编写相关应用程序。

4.2 应用于其他系统

利用AVR单片机的多种外设接口特点,例如UART、SPI、I2C接口等可以有效地实现与其他微处理器的通信,将该模块嵌入各种系统,实现与其他器件的通讯。固件程序中预留有UART、SPI、I2C等接口程序,只需通过简单的跳线连接就可选择相应的接口,从而实现应用系统增加USB接口。

4.3 固件程序移植其他平台

由于固件程序最大限度考虑到可移植性,所以将固件程序稍加修改即可应用于各种已拥有C语言编译器的微处理器,实现PDIUSBD12直接与微处理器的通讯。

移植固件程序主要工作有:根据硬件连接关系,修改硬件抽象层中的3个读写函数,实现CPU与器件之间的通信;通过调用PDIUSBD12命令接口层的读取芯片ID函数返回值是否为0x1012,测试CPU与器件之间的通讯是否正常。

5、在数据采集器中的应用

由于ATmega8片内集成有逐次比较型ADC,具有6路的模拟输入通道,所以只需要针对采集的物理量选用相应传感器,并将输出信号调整至0~Vcc的范围内就可利用该模块实现USB数据采集器。AVR单片机集成有ADC自带采样保持电路,具有内部参考电压和基于睡眠模式的噪声抑制器,从而大大提高ADC精度,实现高精度的数据采集。而设计只需在相应的固件程序巾增加获取ADC结果的函数,并设置相应的状态标志位即可完成USB数据采集器的设计。

6、结束语

以ATmega8和PDIUSBD12为核心,实现通用的USB接口模块设计,并应用于基于USB接口的数据采集器中。实验结果表明,该USB接口模块运行稳定可靠,通信速度快,易于修改移植,满足嵌人式系统对USB接口的需求,并能快速为各种微处理器增加USB接口,具有广泛的应用前景。

来源:21ic

围观 603

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

围观 1410

独具无比伦比灵活性的Microchip新款器件,客户设计的绝佳选择

随着车载信息娱乐系统的兴起,汽车制造商需要在汽车显示屏和多台智能手机或者平板电脑之间建立可靠而智能的连接。

Microchip Technology Inc.是提供支持此类连接的集成电路(IC)的业界翘楚,推出的5款新型USB 2.0智能集线器IC为用户提供了多种选择。这些器件有各种架构,能够非常灵活地适应汽车制造商的设计需求,满足消费者对系统易于使用而且直观的要求。

如需了解有关这些新器件的更多信息,请访问: www.microchip.com/USB4914

这5款新器件支持各种架构,因此制造商可以轻松地将其特定设计连接至所有主流智能手机操作系统。这些系统支持将手机或者平板电脑的图形用户界面显示在车辆屏幕上,与车内语音命令集成,同时还能对移动设备进行充电,并支持手机上的辅助驾驶应用程序与汽车信息娱乐系统相集成。

Microchip新款智能集线器IC支持集线器级联到第二和第三排座位,数据可同时出现在所有端口上,并具备充电功能。例如,如果有两个USB端口,一个端口可以把手机或者平板电脑连接到汽车主机,而另一个端口既可以充电也可以上传/下载数据。采用Microchip的新款USB4914、USB4916、USB4925和USB4927智能集线器IC,汽车制造商可以定制自己的解决方案以满足其设计需求。随着汽车越来越成为一种娱乐环境,制造商可以开发新颖的解决方案——支持消费者使用一部手机进行导航,而另一部用于听音乐或者看视频。

Microchip的USB和联网产品部副总裁Mitch Obolsky说:“Microchip是汽车行业USB集线器IC的领导者。我们的长期投入取得了专利技术,为手持设备与车辆的连接提供独特的主机/设备总线配置,更好地获得信息,实现更安全的辅助驾驶和通信功能。”

Microchip新款USB4715、USB4914、USB4916、USB4925和USB4927 USB 2.0智能集线器IC独特的USB配置包括了单路和双路总线实现,能够很好地连接信息娱乐系统。所有器件都使用大多数汽车主机系统的标准USB驱动程序,以便更迅速地开发和验证系统,进行现场更新。每一器件还集成了一个32位单片机,用于高级桥接、音频应用支持和USB供电(USB PD)。

开发支持

每一新款USB 2智能集线器IC都提供应用演示电路板和评估电路板。应用演示电路板模拟了一级供应商或者原始设备制造商(OEM)在其实际应用中使用的一个系统。Microchip还演示了一个USB供电应用,按照USB PD 3.0规范进行充电。

供货

USB4715、USB4914和USB4925提供48引脚QFN封装。USB4916和USB4927提供64引脚QFN封装。该器件目前已经量产,10,000片起可批量供货。

围观 439

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 信号质量测试实现

完成上述修改,编译生成执行文件,并加载到 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 设备,可在电脑的设备管理器中查看,如下图。

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

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

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

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

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

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设备无关。

来源:ST

围观 813

USB已经成为设备和PC之间通信的标准方式,从通用设备(如闪存设备和鼠标)到专用设备,该标准几乎完全替代了其他的串行通信协议。

USB外围设备彼此之间不能相互通信,它们只能与具有控制总线能力的USB主设备通信。直到最近,也只有PC具有主设备能力。但目前,许多微控制器也具有了嵌入式USB主设备的功能,这使得嵌入式应用可以连接更加广泛的USB外围设备。

USB闪存驱动器是一种使用非常广泛的USB外围设备,它已经成为传递或存储大量数据的廉价介质,许多数据记录设备正是得益于它才得以发展。对于远程的长期数据记录,可以先采集,并存储在闪存驱动器中,然后带回到方便分析处理的地方。

闪存驱动器也可以用于向PC中传输高速时间相关数据。PC是极好的数据分析工具,但实时能力有限。相反,嵌入式应用特别适合实时数据采集,但数据分析能力通常很弱。嵌入式实时数据记录仪可以在闪存驱动器上存储数据,然后把数据传输到PC上分析,这样二者的优势都得到了充分的发挥。

嵌入式USB主设备的应用

开始嵌入式设计的首要任务之一是选择微控制器。为了使用闪存驱动器,微控制器就必须具有嵌入式USB主设备的能力。如果微控制器具有USB OTG(On-The-Go)或USB双角色(Dual Role)功能,如Microchip公司的PIC24FJ256GB1微控制器,如图1所示,它也可以支持嵌入式USB主设备功能。USB外围设备,有时也称为USB设备模式,只能用作闪存驱动器等,而不能和其他USB外围设备通信。

其次,设计者应该确信能有完整的开发工具。至少也需要一个器件编程器(如果有一个调试器是最好的)和一个C语言编译器,因为嵌入式USB主设备和运行在微控制器中的程序往往是用C语言而不是用汇编语言编写的。

最后,设计者也应该了解哪些软件库是可以获得的,因为嵌入式设备发现闪存驱动器时的握手操作需要USB设备类、FAT32文件系统和其他库的支持。从头开始设计支持嵌入式USB主设备的工作会需要数月的时间,而一个由经过认证的协议栈组成的方案可以节省相当多的时间。

为了使用闪存驱动器,嵌入式设备也需要一种USB海量存储类(Mass Storage Class)设备的终端驱动程序、硬件命令行接口,以及文件系统接口。通常,具有2Gb或更低存储空间的闪存驱动器使用FAT16文件系统,而更大容量的闪存驱动器将使用FAT32文件系统。

设计要求

一旦选定了微控制器,硬件设计就开始了。USB硬件设计需要遵循以下许多规则。

● 如果嵌入式主设备需要支持USB设备类,它对外围的供电就必须能够提供500mA的电流。

● 如果嵌入式主设备需要支持任何消耗电流超过100mA的设备,它也必须能够提供500mA的电流。

● 如果嵌入式主设备需支持消耗电流100mA或更低的设备,那么VBUS电压限制就可以降低到4.4V。然而,如果嵌入式主设备需支持消耗电流超过100mA的设备,那么VBUS电压限制是 4.75V,就和全功能主设备一样。

● 必须重新设计无须用户干预就可复位的过流保护机制。

● 从USB连接器到收发器之间的传输延迟必须在8ns之内。

● 嵌入式USB主设备在VBUS上的电容必须大于120μF,而且USB OTG设备在VBUS上的电容必须为1.0?6.8μF。

除以上规则外,也必须仔细考虑采用嵌入式USB主设备应用的用户接口。USB外围设备通常用在PC上,万一发生错误就可以提供详细的错误信息。如果LED 指示灯闪烁,用户能够知道连接失败了。USB规范也作了强制性的规定,经过认证的USB嵌入式主设备必须提供错误信息。换句话说,所有错误信息必须被明确地通知应用层,也就是告知用户。

USB设备认证

USB认证主要用于保证USB设备符合USB规范的要求。认证可以在各种独立的测试机构进行。一旦产品通过认证,生产商就被允许使用USB标志,但同样需要遵守额外的许可证限制。

产品也可以不通过USB认证而直接进行生产和销售。没有USB认证,生产商可以声明自己的产品支持USB,但他不能在设备或包装上的任何地方使用USB标志。通常,取得USB嵌入式主设备认证是不太难的。

通过USB通信

实现USB嵌入式主设备的一个最大挑战就是要和各种各样的USB外围设备通信。虽然不是所有的闪存驱动器产品都通过了认证,但是如果在嵌入式设备中一种闪存驱动器可以正常使用,而另一种没有任何原因就不能使用时,用户是不会高兴的。

如果闪存驱动器需要的上电时间是允许最大时间的两倍或一半,或由于主机以最大允许的速率轮询时闪存驱动器被锁住,以及因为闪存驱动器需要一种不同的 SCSI命令序列来建立通信等,这都不会有任何问题。但如果这样的闪存驱动器在主设备上不能运行,在PC上却可以正常使用,用户会批*这一主设备。因此,确保进行广泛的测试,与多种没有进行认证的USB外围设备进行通信,即使它只是一个拇指大的闪存驱动器或一根电缆。

虽然嵌入式USB主设备可以提供USB类级的支持,在进行设计和测试时,也应该考虑对特殊USB外围设备支持的限制,通过对VID(供应商ID)和 PID(产品ID)的识别来保证产品能在设计的应用领域正常使用。这个ID列表是指USB执行者论坛所发布的目标外围设备列表(TPL),它是为了获得嵌入式主设备认证所必须服从的检查项目列表。完整的OTG认证实际上仅需要与TPL列表中的VID/PID标志的产品互操作。

围观 440

页面

订阅 RSS - USB