logo资料库

基于USB的通信机制及其设计规范.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
电信工程技术与标准化 2008.5 标 准 与 规 范 基于 USB 的通信机制及其设计规范 王海新 (重庆邮电大学 重庆 400065) 摘 要 本文描述了 U S B 的基本结构,包括 USB 的主机端和客户端,最后,给出了标准项目中常用的标准 U S B 设 备描述表和设备类定义。 关键词 USB 总线协议 1 引言 设备的功能。每个端点实际上就是一个一定大小的数 据缓冲区,这些端点在设备出厂时就已定义好。在 USB 是由 Intel,Compaq,IBM 等 7 家世界著名的 USB 系统中,每一个端点都有唯一的地址,这是由设 计算机和通信公司等共同推出的新一代接口标准,全称 备地址和端点号给出的。每个端点都有一定的特性。其 为通用串行总线,它是为了解决日益增加的 PC 外设与 中包括端点的总线延迟要求,端点的带宽要求,端点 有限的主板插槽和端口之间的矛盾而制定的一种串行通 的端点号,对错误处理的要求,端点能接收或发送的 信标准,尤其是当传输速率高达 480Mbit/s 的 USB2.0 包的最大长度,端点的传送类型,端点与主机的数据 规范面世后,USB 应用更加广泛。 传送方向。 2 USB 简介 2.1 总线拓扑结构 USB 的物理连接是有层次性的星型结构。集线器 (H u b )是每个星形结构的中心。P C 机就是主机和根 Hub,用户可以将外设或附加的 Hub 与之相连,这些附 加的 Hub 可以连接另外的外设以及下层 Hub 。USB 支 持最多 5 个 Hub 层以及 127 个外设。图 1 描述了 USB 的 物理拓扑结构。 2.2 USB 设备 图1 总线的拓扑结构 USB 设备包括 Hub 和功能设备。为了进一步叙述 端点号不为0的端点在被设置前处于未知状态,是 我们给出端点(Endpoint)和管道(Pipe)的概念。 不能被主机访问的。端点 0 通常为控制端点,用于设备 端点:每一个 USB 设备在主机看来就是一个端点 初始化参数等,其他端点等一般用作数据端点,存放主 的集合,主机只能通过端点与设备进行通信,以使用 机与设备间往来的数据。 -37 -
标 准 与 规 范 2008.5 电信工程技术与标准化 管道:一个 USB 管道是驱动程序的一个数据缓冲 身需要提供用于确认的信息。在某一些方面的信息,所 区与一个外设端点的连接,它代表了一种在两者之间移 有设备都是一样的;而另一些方面的信息,由这些设备 动数据的能力。一旦设备被配置,管道就存在了。管道 具体的功能决定。信息的具体格式是不定的,由设备所 有两种类型,数据流管道(其中的数据没有 USB 定义 处的设备级决定。 的结构)与消息管道(其中的数据必须有 USB 定义的 2.3 Hub 结构)。管道只是一个逻辑上的概念 集线器包括两大基本部分:集线器转发中继器 所有的设备必须支持端点 0 以作为设备的控制管 (Hub Repeater)和集线器控制器(Hub Controller)。 道。通过控制管道可以获取完全描述 USB 设备的信息, 集线器转发中继器负责连接方面的工作。它也支持像总 包括设备类型,电源管理,配置,端点描述等等。只要 线错误检测和恢复,连接和未连接检测这样的异常处 设备连接到 USB 上并且上电,端点 0 就可以被访问,与 理。集线器控制器提供主机到集线器的通信机制。集线 之对应的控制管道就存在了。 器特定的状态和控制命令允许主机配置集线器和监视与 USB 设备可被划分 3 层。 控制它的每个下行端口。 (1)底层是传送和接收数据包的总线接口。 集线器提供了 U S B 设备和主机之间的电子接口。 (2)中间层处理总线接口与不同端点之间的数据 集线器支持的主要的 USB 功能有: 路由端节点是数据的终结提供处或使用处,它可被看作 (1)连接行为; 数据源或数据接收端(Sink)。 (2)电源管理; (3)最上层的功能由串行总线设备提供,比如鼠 (3)设备连接和未连接检测; 标,或 ISDN 接口。 (4)总线错误检测和恢复; 本章描述的是 USB 设备中间层的通用属性与操作。 (5)高速和低速设备的支持。 这些属性与操作由设备的特定功能的部分用于通过总线 2.4 USB 主机 接口最终与主机(Host)的通信。 U S B 主机在 U S B 系统中处于中心地位,并且对 一个 USB 设备的逻辑结构如图 2 所示。 USB及其连接的设备有着特殊的责任。主机控制着所有 对 USB 的访问,一个外设只有主机允许才有权力访问 总线。主机同时也监测着 USB 的结构。 USB 主机包括三层(如图 3 所示):客户软件、USB 系统软件、USB 主控制器(主机的总线接口)。 U S B 主机在 U S B 系统中是一个起协调作用的实 体,它不仅占有特殊的物理位置,而且对于 USB 以及 连到 USB 上的设备来说,还负有特殊责任。主机控制 图2 物理设备组成 所有的对 USB 的访问。一个 USB 设备想要访问总线必 须由主机给予它使用权。主机还负责监督 USB 的拓扑 U S B 设备用于向主机提供一些额外的功能。U S B 结构。 设备提供的功能是多种多样的,但面向主机的接口却是 2.5 USB 数据流 一致的。所以,对于所有这些设备,主机可以用同样的 从逻辑上讲,USB 数据的传输是通过管道进行的。 方式来管理它们与 USB 有关的部分。 USB 系统软件通过缺省管道(与端点 0 相对应)管理设 为了帮助主机辨认及确定 USB 设备,这些设备本 备,设备驱动程序通过其它的管道来管理设备的功能接 -38 -
电信工程技术与标准化 2008.5 标 准 与 规 范 口。实际的数据传输过程是这样的;设备驱动程序通过 块传输: 对 USBD(USB Driver )接口的调用发出输入输出请 (1)端点类型:块端点。 求(IRPI/O,Request Packet);USB 驱动程序接到请 (2)特点:大量,无传输时间和传输速率要求。 求后,调用 HCD(Host Controller Driver)接口,将 控制传输: IRP 转化为 USB 的传输(Transfer),一个 IRP 可以包 (1)端点类型:控制端点。 含一个或多个 U S B 传输;然后 H C D 将 U S B 传输分解 (2)特点:少量,无传输时间要求,传输有保证。 为总线操作(Transaction),由主控制器以包(Packet) 的形式发出。需要注意的是:所有的数据传输都是由主 3 USB 的基本流程 机开始的,任何外设都无权开始一个传输。 (1)当 USB 设备连接到集线器的下行端口,集线 器马上为该端口提供电源,集线器监视 D-/D+ 线上的 电压,当达到 V (M I N )时,认为其上有 U S B 设备连 接,集线器使用其中断 IN 管道向主机报告其下行端口 上有 USB 设备连接,主机接到通知后,会向集线器发 出 G E T P O R T S T A T U S 来了解更多的信息,此时主机 需要等待100ms的时间以使其稳定下来。此后主机向集 线器发出 S E T P O R T S T A T U S 请求,以复位这个 U S B 设备,由集线器来检测 USB 设备的传输速度。 图 3 USB 主机三层结构 (2)主机采用,缺省地址 0(访问要求,设备接上, 加电,收到一个总线复位命令,就可以访问了),缺省 IRP 是由操作系统定义的,而 USB 传输与总线操 端口 0,开始对 USB 设备进行操作。在零号端口,控制 作是 USB 规范定义的。为了进一步说明 USB 传输,我 管道中的信息应完整的描述 USB 设备,包括标准信息 们引出帧(Frame)的概念。 (对所有 USB 设备共同性的定义)、类别信息(此类信 USB 总线将 1ms 定义为一帧, 每帧以一个 SOF 包 息给出不同 USB 设备类的定义,主要反映其不同点)、 为起始,在这 1ms 里 USB 进行一系列的总线操作。引 USB 厂商信息(其格式不受规范的制约)。 入帧的概念主要是为了支持与时间有关的总线操作。 (3)主机向USB设备发出GetDescriptor(Device) 为了满足不同外设和用户的要求,USB 提供了 4 种 请求,以取得其缺省控制管道所支持的最大数据包长度。 传输方式;控制传输、同步传输、中断传输和批传输。 该数据包长度在设备描述符的 bMaxPacketSize0 字段 它们在数据格式,传输方向,数据包容量限制,总线访 中,其地址偏移量为 7,所以这个时候,主机只需要读 问限制等方面有着各自不同的特征。 取 0~7,即 8 字节。 中断传输: (4)主机向 USB 设备发送 Set Address 请求,为 (1)端点类型:中断端点。 其分配一个唯一的设备地址。USB 设备必须在 50ms 内 (2)特点:少量或中量,有周期性。 完成对该请求的处理,并结束其控制传输的状态。之后 同步传输: 再经过 2 个 ms 的恢复时间,USB 设备将进入地址状态, (1)端点类型:同步端点。 这时它不再使用缺省设备地址, 而将使用这个新的地址 (2)特点:大量,速率恒定,有周期性。 和主机进行通信,且改地址只有在 USB 设备断开,或 -39 -
标 准 与 规 范 2008.5 电信工程技术与标准化 者系统断电之后,才丢失。为什么主机要给 USB 设备 设备描述表 */ 设置一个地址呢,因为缺省地址很重要,在设备才开始 typedef struct { 的时候,只有一个,大家都要用,所以只能给它一个地 uint8 bLength;/* 表示描述符的字节数 */ 址,叫它赶快走,别赖在这里不动。 uint8 bDescriptorType;/*配置描述符类型*/ (5 )主机使用新地址向 U S B 设备发送 G e t D e - uint8 bcdUSBL;/* 低位版本 */ scriptor(Device)请求,以读取其全部配置信息(其中 uint8 bcdUSBH;/* 高位版本号 */ 配置个数由设备描述符的bNum Configurations字段指 uint8 bDeviceClass;/*设备类*/ 出),该过程需要花费几毫秒时间。在读取某一配置信 uint8 bDeviceSubClass;/* 子类 */ 息时,主机首先请求其配置描述符(9 字节),并得到该 uint8 bDeviceProtocol;/* 协议码由 CLASS 配置信息的总长度(包含在描述符的 wTotalLength 字 和 S U B C L A S S 来定的 * / 段中);然后主机再次发出该Get Descriptor(Config- uint8 bMaxPacketSize0;/* 端点 0 最大的包 uration)请求,并得到完整的配置信息,包括配置描述 数 */ 符,接口描述符,端点描述符以及各种设备类定义描述 uint8 idVendorL; 符和供应商自定义描述符等。 uint8 idVendorH; (6)主机根据 USB 设备的配置信息,如供应商 ID, uint8 idProductL; 产品 ID 等,为其选择一个合适的 USB 设备驱动程序。 uint8 idProductH; 它通常由开发人员自己编写,但有时也可以使用设备类 uint8 bcdDeviceL; 或供应商提供的通用驱动程序。 uint8 bcdDeviceH;/* 设备发行号 */ (7)在加载了 USB 设备驱动程序之后,主机将发 uint8 iManufacturer;/*厂商信息的字符串*/ 出Set Configuration(x)请求为该设备选择一个合适 uint8 iProduct; 的配置(x!=0)。在配置过程中,主机将为 USB 设备选 uint8 iSerialNumber;/*序列号的字符串*/ 择一个配置值,一个接口号和一个可替换设置值,并确 uint8 bNumConfigurations;/*可能的设置数*/ 定相应端点的特性,如所支持的传输类型,最大数据包 } USB_DEVICE_DESC; 长度。 4.3 标准配置描述符号 4 USB 一些常用的底层数据结构 tors 配置描述表包括一个 b Configuration Value域, /* Structure for USB Configuration Descrip- 在SetConfiguration( )请时被用作参数来设置所需 4.1 描述表种类 配置 */ /* USB descriptor types 描述表种类 */ typedef struct { #define DEVICE # d e f i n e C O N F I G U R A T I O N #define STRING #define INTERFACE #define ENDPOINT 1 2 3 4 5 uint8 bLength;/* 此描述表的字节数 */ uint8 bDescriptorType; uint8 wTotalLengthL;/* 配置类型总长(包 括配置,接口,端点和设备类及厂商定义的描述表)*/ uint8 wTotalLengthH; 4.2 标准设备描述符号 uint8 bNumInterfaces;/*所支持的接口数*/ /* Structure for USB Device Descriptors标准 u i n t 8 b C o n f i g u r a t i o n V a l u e ; / * 在 -40 -
电信工程技术与标准化 2008.5 标 准 与 规 范 SetConfiguration() 回选择了的接口设置。*/ 请求中用作参数来选定此配置。*/ typedef struct { uint8 iConfiguration;/*描述此配置的字串描 uint8 bLength; 述表索引 */ uint8 bDescriptorType; uint8 bmAttributes;/* 配置描述*/ uint8 bEndpointAddress; uint8 maxPower; } U S B _ C O N F I G _ D E S C ; uint8 bmAttributes; /* 此域的值描述的是在 4.4 接口描述符号 bConfigurationValue域所指的配置下端点的特性。 /* Structure for USB Interface Descriptors接 Bit 1..0 :传送类型 口描述符 */ typedef struct { uint8 bLength; uint8 bDescriptorType; 00 =控制传送 01 =同步传送 10 =批传送 11 =中断传送 uint8 bInterfaceNumber;/*接口号,当前配 所有其他的位都保留 */ 置支持的接口数组索引 */ uint8 wMaxPacketSizeL;/* 当前配置下此端 uint8 bAlternateSetting;/*可选设置的索引 点能够接收 值 */ uint8 bNumEndpoints; uint8 bInterfaceClass; 或发送的最大数据包的大小 */ uint8 wMaxPacketSizeH; uint8 bInterval; uint8 bInterfaceSubClass; } U S B _ E N D P O I N T _ D E S C ; uint8 bInterfaceProtocol; 4.6 串描述符号 uint8 iInterface;/*索引,描述此接口的字串 /* Structure for USB String Descriptors */ 描述表的索引值 */ typedef struct { } U S B _ I N T E R F A C E _ D E S C ; uint8 bLength;/* 描述符的字节数 */ 4.5 端点描述符号 uint8 bDescriptorType;/*字串描述表类型*/ /* Structure for USB Endpoint Descriptors利 uint8 *bString;/*UNICODE 编码的字串 */ 用SetInterface( )与GetInterface( )用来选择与返 } USB_STRING_DESC ; (收稿日期:2008 年 3 月 4 日) Basic Principle and the Design Criterion of USB Wang Haixin (Chongqing University of Posts and Telecommunication, Chongqing 400065) Abstract This paper describes the basic structure of USB, including USB host , USB device and the bus protocol. At last, this paper gives standard USB descriptor and device class definitions that used in the projects. Keywords universal serial bus, USB device, USB host, bus topology -41 -
分享到:
收藏