USB通信协议

更新时间:2023-08-10 13:11:01 阅读量: 工程科技 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

USB开发教程 USB通信协议

目录

1、USB系统概述 1.1USB主机 1.2USB设备 1.3管道 1.4描述符 1.5总线枚举 2、USB物理特性 3、USB数据传输 4、USB事务处理 4.1USB信息包 4.2USB事务处理(Transaction) 5、USB传输类型 5.1控制传输 5.2块传输 5.3中断传输 5.4同步传输 6、USB设备请求 7、USB 枚举过程 8 、USB2.0接口芯片CY7C68013 8.1EZ-USB控制传输 8.2Cypress提供的开发库 8.3上位机查找USB设备示例

USB开发教程 USB通信协议

1、USB系统概述典型的USB应用系统组成:一个支持USB的主机,一个或多个带有USB端口的 设备以及将设备连接到主机所需要的集线器、连接器和线缆。主机内设置了一个根集 线器,提供了主机上的初始附属点。

USB开发教程 USB通信协议

主机定时对集线器的状态进行查询。当一个新设备接入集线器时, 主机会检测到集线器的状态改变,主机发出一个命令使该端口有效并 对其进行设置。位于这个端口上的设备进行响应,主机收到关于设备 的信息,主机的操作系统确定对这个设备使用哪种驱动程序,接着设 备被分配一个唯一标识的地址,范围从0~127,其中0为所有的设备在 没有分配唯一地址时使用的默认地址。主机向它发出内部设置请求, 当一个设备从总线上移走时,主机就从其可用资源列表中将这个设备 删除。 USB3.0主机支持4种速率,2.0主机只支持低速、全速和高速,1.X的 主机只支持低速和全速模式(例外情况:On-The-GO(OTG无主机参与 情况下外设直接互连通信)设备以及嵌入式系统中完成其他专属目的 的主机,这些设备也许支持访问特殊周边设备所需的速率)

USB开发教程 USB通信协议

1.1USB主机USB主机功能需要软件和硬件共同支持,硬件由USB主机控制器和含有一个 或多个USB端口的根集线器构成。软件构架可分为:客户软件,USB系统软件, USB总线接口。 客户软件负责和USB设备的功能单元进行通信,以实现特定的功能,一般 由开发人员自行开发。客户软件不能直接访问USB设备,其与USB设备功能单元 的通信必须经过USB系统软件和USB总线接口模块才能实现。

USB开发教程 USB通信协议

客户软件一般包括USB设备驱动程序和界面应用程序。设备驱动程序负 责和USB系统软件进行通信。通常,它向USB总线驱动程序发出I/O请求包 (IRP)以启动一次USB数据传输,此外,根据传输的方向,它还应提供一个 或空或满的数据缓冲区以存储这些数据。界面应用程序负责和USB设备驱动程 序进行通讯,以控制USB设备。它是最上层的软件,只能看到向USB设备发送 的原始数据和从USB设备接收的最终数据。USB系统软件负责和USB逻辑设备进行配置通信,并管理客户软件启动的 数据传输。USB逻辑设备是程序猿与USB设备打交道的部分。USB系统软件分为 USB总线驱动程序和USB主控制器驱动程序(操作体统提供) USB总

线接口包括主控制器和根集线器两部分。主控制器负责完成主机 和USB设备之间数据的实际传输,包括对传输数据进行串行编解码、差错控制 等。

USB开发教程 USB通信协议

1.2 USB设备USB设备由3个功能模块组成:USB总线接口、USB逻辑设备和功 能单元。这里的USB总线接口指的是USB设备中的串行接口引擎(SIE);USB 逻辑设备被USB系统软件看做是一个端点的集合;功能单元被客户软件看做 是一个接口的集合。SIE、端点和接口都是USB设备的组成单元。

USB开发教程 USB通信协议

为了更好的描述USB设备特征,USB设备是由一些配置、接口、和端点组成,一个 USB设备可以含有一个或多个配置,在每个配置中可含有一个或多个接口,在每个 接口中可含有若干个端点。其中,配置和接口是对USB设备功能的抽象,实际的数 据传输由端点完成。在使用USB设备前,必须指明其采用的配置和接口,这个步骤 一般是在设备接入主机时设备进行自举完成的。USB设备使用各种描述符来说明其 设备架构,包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述 符。他们通常被保存在USB设备的固件程序中。 USB设备架构图如下:

USB开发教程 USB通信协议

① 设备: 设备代表一个USB设备,它由一个或多个配置组成。设备描述符用于说 明设备的总体信息,并指明其所含的配置的个数。一个USB设备只能有一个设备 描述符。 ② 配置 一个USB设备可以包含一个或多个配置,如USB设备的低功耗模式和高 功耗模式可分别对应一个配置。在使用USB设备之前,必须为其选择一个合适的 适配器。配置描述符用于说明USB设备中各个配置的特性,如配置含有的接口数 等。USB设备的每一个配置都必须有一个配置描述符。 ③ 接口 一个配置可以包含一个或多个接口,如对一个光驱来说,当于用文件 传输时使用其大容量存储接口;而当用于播放CD时,使用其音频接口。接口是 端点的集合,可以包含一个或多个可替换的设置,用户能够在USB处于配置状态 时,改变当前接口所含的个数和特性。接口描述符用于说明USB设备中各个接口 的特性,如接口所属的设备类及其子类等。USB设备的每个接口都必须有一个接 口描述符。

USB开发教程 USB通信协议

④ 端点 端点是USB设备中实际的物理单元,USB数据传输就是在主机和USB设备 各个端点之间进行的。每个端点所支持的数据传输方向一般而言也是确定的 (或是IN或是OUT)0端点比较特殊,它有数据输入IN和数据输出OUT两个物理单 元,且只能支持控制传输。所有USB设备都必须含有一个0端点,用作缺省控制 管道。 系统软件及时使用该管道和USB逻辑设备进行配置通信的。 利用设备地址、端点号和传输方向就可以指定一个端点,并和它进行通信

USB开发教程 USB通信协议

1.3

管道USB系统中的数据传输可以认为是在主机软件(USB系统软件和客户软件) 和USB设备的各个端点之间的直接进行的。他们之间的连接称为管道。 如下图:

根据传输数据不同分为流管道与消息管道,流管道不具有USB定义的格 式数据流,可用于块传输、中断传输、同步传输,通常是单向的。消息 管道具有USB定义的格式,只能用于控制传输。USB设备0号端点所实现 的就是一条消息管道。

USB开发教程 USB通信协议

1.4描述符USB采用USB标准描述符说明一个USB设备。这些描述符包括设备描述符、配置描述 符、接口描述符、端点描述符和字符串描述符。对于高速设备还包括设备限定描述 符和其他速率配置描述符。 (1)设备描述符(DeviceDecriptor)用于指出USB设备的总体信息,其内容对该设 备中同一传输模式下的所有配置都有效。一个设备只能有一个设备描述符,但是一 个设备允许多个配置描述符。 (2)配置描述符(ConfigurationDescriPtor)为usB设备的配置指出其配置信息, USB设备的一个配置可以包含一个或者多个接口,且每个接口都可以相互独立工作, 所有的USB设备都至少支持一个配置描述符,每个配置都必须有自己的配置描述符。 当主机请求配置描述符时,其所有相关的接口描述符和端点描述符都将被返回。 (3)接口描述符(hite而ceDescriPtor)用于指定usB设备中各个接口的特性,设 备的每个接口都必须有一个描述符。USB设备的接口是一个端点的集合,负责完 成设备的特定功能,接口可以包含一个或者多个可替换配置,它们能够在USB设 备处于配置状态时,改变当前接口所含端点的个数和特性。USB设备同一配置的 各个接口间不能使用相同的端点,但是同一接口的各个可替换配置间可以使用相 同的端点。

USB开发教程 USB通信协议

(4)端点描述符(Endpointdescriptor)用于指出usB设备端点的特性,如其所支 持的传输类型、传输方向等信息。除端点O外,USB设备的每个端点都必须有一 端点描述符。 (5)字符串描述符(stringDescriptor)用于保存一些文本信息,它是可选的。 在USB设备的其他描述符中,可以含有指向字符串描述符的索引值。 (6)设备限定描述符(DevieeQualifierDeseriptor)只适用于高速usB设备,如 果高速USB设备既需要高速传输,又需要全速传输,则它必须支持设备限定描述 符,以指出另一传输速率下该设备的总体信息。 (7)其它速率配置描述符(Other_Speed_Configuration_Descriptor)用于指出 高速设备在采用全速传输下的配置信息,其不能用于低冷速USB设备,且主机只 有在成功读取USB设备的设备限定描述符后,它才会进一步发出 Get_Descriptor(Other_Speed_Configuration_Descriptor)请求。

USB开发教程 USB通信协议

1.5 总线枚举当USB设备接上或者从USB设备移开时,主机启动一个被称作总线枚举的进

程,来列举并怜理设备状态的改变,当USB设备接上一个加电端口时,系统采取 以下操作: (1)USB设备已连接在下行端口上,集线器通过状态交换管道通知主机此事件。 此时,USB设备处于加电状态,它所连接的端口是无效的; (2)主机通过询问集线器标记出某个设备已连接上; (3)主机一旦得知新设备已连上后,发送端口使能及复位命令给此端口; (4)集线器将发向端口的复位信号持续10ms,当复位信号撤消后,端口己经有 效,这时USB设备处于缺省状态,并且从总线上可以得到100mA的电流,所有设 备寄存器状态已经复位,设备可对缺省地址产生响应; (5)主机给设备分配一个唯一的地址,设备进入地址状态; (6)在USB设备接受地址之前,其缺省控制管道在缺省地址处是可寻址的,主 机通过读取设备描述符,决定设备缺省管道的实际数据净负荷大小; (7)主机从设备读取配置信息,从0读到n一1(n为配置个数),此操作需花费 几毫秒; (8)基于从设备读取的配置信息及设备如何使用的信息,主机给设备一个配置 值,此刻,USB设备处于配置状态,并配置有关的端口,按照配置USB设备就可以 从VBUS得到所要求的电量。从设备的角度而言,设备己经准备就绪。 当USB设备断开时,集线器同样会通知主机,断开一个设备连接会使得设备 所连接的端口无效,一收到断开通知,主机就会更新本地拓扑信息。

USB开发教程 USB通信协议

2、USB的物理特性2.1USB接口USB使用一根屏蔽的4线电缆与设备进行互联。数据传输通过一个差分双绞 线进行,这两根线分别表为D+与D-,另外两根是Vcc和Ground,其中Vcc向USB设备供 电。使用USB电源的设备称为总线供电设备,而使用自己外部电源的设备叫做自供 电设备。 从一个设备连回主机,称为上行连接;从主机到设备的连接,称为下行连 接。为房主回环的情况发生,上行和下行的端口使用不同的连接器,所以USB在电 缆和设备的连接中分别采用了两种类型的连接头。如下图:

USB开发教程 USB通信协议

1 2 3 4

1

2 3

4

A型连接头引脚编号 12 3 4

B型连接头信号名称 VccData-(D-) Data+(D+) Ground

缆线颜色 红白 绿 黑

USB开发教程 USB通信协议

3、USB数据传输在USB总线上所有与USB设备功能单元的数据传输都是由客户软件启动的, 其传输过程必须经过四个软硬件实体:客户软件、USB总线驱动程序、USB主控制器 驱动程序和USB主控制器。下图向下的箭头表示了客户软件向USB设备发送数据的情 况,其传输步骤如下: (l)客户软件把要传输的数据放入数据缓冲区,并向USB总线驱动程序发出 IRP,以请求数据传输; (2)USB总线驱动程序响应客户软件的IRP,并将其中的数据转化为一个具有 USB格式的事务处理,然后将其向下传递; (3)USB主控制器驱动程序负责为这些事务处理建立一系列以帧/小帧为单 位的事

务列表,并保证其不会超过USB的带宽; (4)USB总线控制器负责读取事务列表,并将其中的事务处理以信息包为单 位发送到USB总线上; (5)USB设备接收到这些信息包后,sIE自动将其解包并将数据放入指定端点 的接收缓冲区内,由芯片固件对其进行处理。

USB开发教程 USB通信协议

客户软件

数据 USBD接口 IRPs

USB总线 驱动程序

HCD接口

USB主控制 器驱动程序

传输

事务处理 事务队列 事务处理 事务处理

HW/S W 接口

USB主控

USB

数据包

USB开发教程 USB通信协议

4、USB事务处理4.1 USB信息包 在USB协议中,USB的数据传输是由信息包组成,这些信息包组合起来可以构成完 整的事务处理。包(packet)是USB系统中信息传送的基本单元,所有数据都是经过打包 后在总线上传输的。USB包由五部分组成:同步字段(SYNC)、包标识符字段(PID)、 数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP),格式如下 同步字段 (SYNC) PID字段 数据字段 CRC字段 包结尾字段 (EOP)

① SYNC字段:由8位组成,作为每个数据封包的前导,用来产生同步作用,是USB设备与 总 线的包传输率同步,它的数值固定为00000001 ② PID字段:用来表示数据封包的类型。包标识符中的校验字段是通过对类型字段的每个 位求反码,PID字段如下图所示: PID0 PID1 PID2 PID3___ PID0 ___ PID1 ___ PID2 ___ PID3

信息包的类型如下图:

USB开发教程 USB通信协议

封包类型

PID名称 OUT IN

PID编码 0001B 1001B 0101B 1101B 0011B 1011B 0010B 1010B 1110B 1100B

意义 从主机到设备的数据传输 从设备到主机的数据传输 帧的起始标记与帧码 从主机到设备。表示要控制传输 偶数数据封包 奇数数据封包 接收器接收无错误的数据封包

令牌 SOF SETUP DATA0 数据 DATA1 ACK 握手 NAK STALL 特殊 PRE

接收器无法接收数据或发射器无法送出 数据端点产生停滞的状况 使能下游端口的USB总线的数据传输切 换到低速设备

USB开发教程 USB通信协议

③ 数据字段:是用来携带主机与设备之间要传递的信息,其内容和长度根据包标识符、 传输类型的不同而不同。在USB包中,数据字段可以包含设备地址、端点号、帧序列号 以及数据等内容。在总线传输中,先传输的是字节的最低位,最后传输字节的最高位。 (1)设备地址(ADDR)数据域 ADDR数据域由7位组成,可用来寻址多达127个外围设备。 (2)端点(ENDP)数据域 ENDP数据域由4位组成,通过这4位最多可寻址出32个端点。这个ENDP数据域仅用 在IN、OUT与SETUP令牌信息包中。对于慢速设备科支持端点0以及端点1作为中断传输模式, 而全速设备可以拥有16个输入端点IN,与16个输出端点OUT供32个端点。 (3)帧序列号 当USB令牌包的PID为SOF时,其数据字段必须为11位的帧序列号。帧序列号由主 机产生,且每个数据帧自动加一,最大

数值为0X7FF。当帧序列号达到最大数时将自动从0 开始循环。 (4)数据 它存在于DATA信息包中,根据不同的传输类型,拥有不同字节大小,从0到1023 字节 ④ 循环冗余码:根据不同的信息包类型,CRC字段是由不同数目的位所组成。其中重要的 数据信息包采用CRC16的数据域(16个位),而其余的信息包类型则采用CRC5的数据域 (5个位)。其中的循环冗余校验CRC是一种错误检测技术。由于数据在传输时,有时 候会发生错误,因此CRC可根据数据算出一个校验值,然后依次判断数据的正确性。 5、包结尾字段即发送方在包的结尾发出包结尾信号。USB主机根据EOP判断数据包的结束。

USB开发教程 USB通信协议

4.2USB事务处理(Transaction) USB事务处理是USB主机与USB设备数据通信的基础,一个完整的US B是事务处理包含三个阶段: 令牌阶段:定义了本次传输的类型,用于表征事务处理的开始。令牌阶段由 令牌包和EOP构成,这是所有USB事务处理必须包含的阶段。在USB系统中只有主机才 能发出令牌包,它定义了数据传输的类型,令牌包中比较重要的是SETUP、IN、OUT这 三个令牌包。它们是用来在跟集线器和设备端点之间建立数据传输。一个IN包建立一 个从设备到根集线器的是数据传送,一个OUT包用来建立从根集线器到设备的数据传 输。令牌包格式: 8位 SYNC PID 8位___PID

7位 ADDR

4位 ENDP

5位 CRC5

数据阶段:包含了本次传输的数据,数据的大小根据端点和传输类型而定, 最大的数据量位1024字节。数据阶段由数据包和EOP构成。数据包含有4个域:SYNC、 PID、DATA与CRC16。DATA数据域的位置是根据USB的传输速度与传输类型而定,且必 须以8字节为基本单位,若传输数据不足8字节,或传输到最后剩余不足8字节,仍传 输8字节的数据域。数据包格式: 8位 SYNC PID 8位___PID

0~ DATA

16位 CRC16

本文来源:https://www.bwwdw.com/article/emqj.html

Top