USB通信原理讲义修正版_第1页
USB通信原理讲义修正版_第2页
USB通信原理讲义修正版_第3页
USB通信原理讲义修正版_第4页
USB通信原理讲义修正版_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 USB系统的简介 USB的物理接口 USB的电气特性 USB系统的组成 USB设备的检测 USB数据流的类型 USB的传输方式 信号的编码与传输 USB的优点 USB总线电缆包括4根线,用以传输信号和提供电源。其中D+和D-为信号线,传输信号,是一对双绞线(即采用差动传输方式);Vbus和GND是电源线,提供电源。相应的USB接口插头也比较简单,只有4芯。上游插头是4芯的长方形插头,下游插头是4芯的方形插头。 USB主机或根集线器(Root Hub)对设备提供的对地电压为4.755.25V,设备能吸入的最大电流为500mA。因此,USB对设备提供的电源是有限的。当USB设备第一次被USB主机

2、检测到时,设备从USB Hub吸入的电流值应该小于100mA。 USB主机有一个独立的USB的电源管理系统。USB系统软件通过与主机电源管理系统交互来处理挂起、唤醒等电源事件。为了节省能源,对暂时不起作用的USB设备、电源管理系统将其置为挂起状态,等有数据传输时再唤醒设备。 USB系统在硬件上一般由USB主机控制器/根集线器、USB集线器和USB功能设备3个部分组成。USB设备的插入检测机制USB主机是如何检测到设备的插入的呢? 首先,在USB集线器的每个下游端口的D+和D-上, 分别接了一个15K欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻拉到了低电平。而在USB设备端

3、,在D+或者D-上接了1.5K欧姆上拉电阻。对于全速和高速设备, 上拉电阻是接在D+上;而低速设备则是上拉电阻接在D-上。这样,当设备插入到集线器时, 由1.5K的上拉电阻和15K的下拉电阻分压,结果就将差分数据线中的一条拉高了。集线器检测到这个状态后,它就报告给USB主控制器(或者通过它上一层的集线器报告给USB主控制器), 这样就检测到设备的插入了。USB高速设备先是被识别为全速设备,然后通过HOST和DEVICE 两者之间的确认,再切换到高速模式的。在高速模式下,是电流传输模式,这时将D+上的上拉电阻断开。一个简单的实验:只用一个上拉电阻接在USB的+5V和D+或者D-上,WINDOWS

4、也会提示发现新硬件,但是无法找到驱动程序。这时去设备管理器里面看,有显示未知USB设备, 并且其VID和PID为0。 所有的USB系统上的联系都是在软件控制下由USB主机进行的。USB主机是带有USB主控器的PC机。主机控制器负责USB系统的处理,是USB系统的大脑。 USB根集线器提供USB接口给USB设备和USB Hub使用。 USB连接的127个设备并不需要控制器去寻址,只需要对根集线器发出命令,根集线器可以自动找到相应的设备。 USB集线器。利用USB集线器来提供更多的USB接口,以连接较多的USB设备。 USB功能设备。USB功能设备能在总线上发送和接受数据和控制信息,它是完成某项具

5、体功能的硬件设备。通过USB的硬件和软件与计算机系统进行数据交换。它们通常是一些高速设备、中速设备和低速设备。如视频、硬盘、移动存储设备、网络设备、音频设备以及鼠标键盘等。 端点:位于USB设备中与USB主机通信的基本单元。每个设备允许有多个端点,主机只能通过端点与设备进行通信,各个端点由设备地址和端点号确定在USB系统中的唯一地址。每个端点都包括一些属性:传输方式、总线访问频率、带宽、端点号、数据包的最大容量等。除控制端点0外的其他端点必须在设备配置后才能生效,控制端点0通常用于设备初始化参数。USB芯片中,每个端点实际上就是一个一定大小的数据缓冲区。 管道:管道是USB设备与USB主机之间

6、数据通信的逻辑通道,这个USB管道对应一个设备端点,各端点通过自己的管道与主机通信。所有设备都支持对应端点0的控制管道,通过控制管道主机可以获取USB的设备信息,包括:设备类型、电源管理、配置、端点描述符等。 描述符:描述符是具有一定格式的数据结构,它包含了设备所有的属性信息。 USB设备使用各种描述符来向主机报告它的属性。在主机使用控制传输请求描述符时,设备就会将这些信息以标准描述符格式发送给主机,从而使主机控制器获得诸如设备及供应商ID,设备通信能力等重要信息。所有的USB外设都必须响应对标准USB描述符的请求,并且要按一定的规范进行。 描述符的种类:标准USB描述符包括设备描述符、配置描

7、述符、接口描述符、端点描述符和字符串描述符。它们分别从不同的层次来描述设备的属性。USB的描述符及各种描述符之间的依赖关系 一个USB设备有一个设备描述符,设备描述符里面决定了该设备有多少种配置,每种配置描述符对应着配置描述符;而在配置描述符中又定义 了该配置里面有多少个接口,每个接口有对应的接口描述符;在接口描 述符里面又定义了该接口有多少个端点,每个端点对应一个端点描述符; 端点描述符定义了端点的大小,类型等等 每种描述符都有自己独立的编号,如下: #define DEVICE_DESCRIPTOR 0 x01 /设备描述符#define CONFIGURATION_DESCRIPTOR

8、0 x02 /配置描述符 #define STRING_DESCRIPTOR 0 x03 /字符串描述符#define INTERFACE_DESCRIPTOR 0 x04 /接口描述符#define ENDPOINT_DESCRIPTOR 0 x05 /端点描述符 /定义标准的设备描述符结构typedef struct _DEVICE_DCESCRIPTOR_STRUCT BYTE blength; /设备描述符的字节数大小 BYTE bDescriptorType; /设备描述符类型编号 WORD bcdUSB; /USB版本号 BYTE bDeviceClass; /USB分配的设备类代

9、码 BYTE bDeviceSubClass; /USB分配的子类代码 BYTE bDeviceProtocol; /USB分配的设备协议代码 BYTE bMaxPacketSize0; /端点0的最大包大小 WORD idVendor; /厂商编号 WORD idProduct; /产品编号 WORD bcdDevice; /设备出厂编号 BYTE iManufacturer; /设备厂商字符串的索引 BYTE iProduct; /描述产品字符串的索引 BYTE iSerialNumber; /描述设备序列号字符串的索引 BYTE bNumConfigurations; /可能的配置数量

10、/定义标准的配置描述符结构 Typedef structCONFIGURATION_DESCRIPTOR_STRUCT BYTE bLength; /配置描述符的字节数大小 BYTE bDescriptorType; /配置描述符类型编号 WORD wTotalLength; /此配置返回的所有数据大小 BYTE bNumInterfaces; /此配置所支持的接口数量 BYTE bConfigurationValue; /Set_Configuration命令所需要的参数值 BYTE iConfiguration; /描述该配置的字符串的索引值 BYTE bmAttributes; /供电模

11、式的选择 BYTE MaxPower; /设备从总线提取的最大电流 /定义标准的接口描述符结构typedef struct _INTERFACE_DESCRIPTOR_STRUCT BYTE bLength; /接口描述符的字节数大小 BYTE bDescriptorType; /接口描述符的类型编号 BYTE bInterfaceNumber; /该接口的编号 BYTE bAlternateSetting; /备用的接口描述符编号 BYTE bNumEndpoints; /该接口使用的端点数,不包括端点0 BYTE bInterfaceClass; /接口类型 BYTE bInterface

12、SubClass; /接口子类型 BYTE bInterfaceProtocol; /接口遵循的协议 BYTE iInterface; /描述该接口的字符串索引值 /定义标准的端点描述符结构typedef struct _ENDPOINT_DESCRIPTOR_STRUCT BYTE bLegth; /端点描述符字节数大小 BYTE bDescriptorType; /端点描述符类型编号 BYTE bEndpointAddress; /端点地址及输入输出属性 BYTE bmAttributes; /端点的传输类型属性 WORD wMaxPacketSize; /端点收、发的最大包大小 BYTE

13、 bInterval; /主机查询端点的时间间隔 偏移字段大小值描述0bLength1数字描述符的大小1bDescriptorType1常量描述符的类型(05)2bEndpointAddress1端点端点地址3bmAttributes1位映射端点属性4wMaxPacketSize2数字支持的最大数据包的大小5bInterVal1数字中断扫描时间间隔 端点描述符总线列举经历的步骤:(1)集线器检测新设备主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察。(集线器端口的两根信号线的每一根都有15k的下拉电阻,而每一个设备在D+都有一个1.5k的上拉电阻。当用USB线将PC和设备接通后,设

14、备的上拉电阻使信号线的电位升高,因此被主机集线器检测到。)(2)主机知道了新设备连接后每个集线器用中断传输来报告在集线器上的事件。当主机知道了这个事件,它给集线器发送一个Get_Status请求来了解更多的消息。返回的消息告诉主机一个设备是什么时候连接的。(3)集线器重新设置这个新设备当主机知道有一个新的设备时,主机给集线器发送一个Set_Feature请求,请求集线器来重新设置端口。集线器使得设备的USB数据线处于重启(RESET)状态至少10ms。(4)集线器在设备和主机之间建立一个信号通路主机发送一Get_Status请求来验证设备是否激起重启状态。返回的数据有一位表示设备仍然处于重启状

15、态。当集线器释放了重启状态,设备就处于默认状态了,即设备已经准备好通过Endpoint 0 的默认流程响应控制传输。即设备现在使用默认地址0 x0与主机通信。(5)集线器检测设备速度集线器通过测定那根信号线(D+或D-)在空闲时有更高的电压来检测设备是低速设备还是全速设备。(全速和高速设备D+有上拉电阻,低速设备D-有上拉电阻)。以下,需要USB的firmware进行干预(6)获取最大数据包长度 PC向address 0发送USB协议规定的Get_Device_Descriptor命令,以取得却缺省控制管道所支持的最大数据包长度,并在有限的时间内等待USB设备的响应,该长度包含在设备描述符的b

16、MaxPacketSize0字段中,其地址偏移量为7,所以这时主机只需读取该描述符的前8个字节。注意,主机一次只能列举一个USB设备,所以同一时刻只能有一个USB设备使用缺省地址0。以下操作雷同,不同操作系统设定时延是不一样的,比如说win2k大概是几毫秒,如果没有反应就再发送一次命令,重复三次。(7)主机分配一个新的地址给设备主机通过发送一个Set_Address请求来分配一个唯一的地址给设备。设备读取这个请求,返回一个确认,并保存新的地址。从此开始所有通信都使用这个新地址。(8)主机向新地址重新发送Get_Device_Descriptor命令,此次读取其设备描述符的全部字段,以了解该设备

17、的总体信息,如VID,PID。(9)主机向设备循环发送Get_Device_Configuration命令,要求USB设备回答,以读取全部配置信息。(10)主机发送Get_Device_String命令,获得字符集描述(unicode),比如产商、产品描述、型号等等。(11)此时主机将会弹出窗口,展示发现新设备的信息,产商、产品描述、型号等。(12)根据Device_Descriptor和Device_Configuration应答,PC判断是否能够提供USB的Driver,一般win2k能提供几大类的设备,如游戏操作杆、存储、打印机、扫描仪等,操作就在后台运行。但是Win98却不可以,所以在

18、此时将会弹出对话框,索要USB的Driver。(13)加载了USB设备驱动以后,主机发送Set_Configuration(x)命令请求为该设备选择一个合适的配置(x代表非0的配置值)。如果配置成功,USB设备进入“配置”状态,并可以和客户软件进行数据传输。此时,常规的USB完成了其必须进行的配置和连接工作。查看注册表,能够发现相应的项目已经添加完毕,至此设备应当可以开始使用。不过,USB协议还提供了一些用户可选的协议,设备如果不应答,也不会出错,但是会影响到系统的功能。 USB数据流的类型分为如下4类 控制信号流:当USB设备加入系统时,USB系统软件与设备之间建立起控制信号流来发送控制信号

19、,这种数据不允许出错或丢失。 块数据流:通常用于发送大量的数据。 中断数据流:用于传送少量的随机输入信号,它包括事件通知信号,输入字符或坐标等。 实时数据流:用于传输连续的固定速率的数据,它们所需的带宽与传输数据的采样有关。与USB数据流类型对应的有4中基本的传输类型: 控制传输方式:这种方式传输的不是数据流,而是控制信息流,其中包括设备控制指令,设备状态查询及确认(握手信号)。当USB设备收到这些命令数据后,将按先进先出(FIFO)的原则处理到达的命令数据。 批量传输方式:批量传输方式可以是单向的,也可以是双向的。它用于传输大批数据,这种数据的实时性不强,当要确保数据的正确性。在传输的过程中

20、出现错误重传。其典型的应用是扫描仪、打印机、静态图片输入。 中断传输方式:该方式用于数据量少,但具有突发性的一类设备。这些数据需要及时的处理,以达到实时的效果。此方式主要用在键盘和位置点采集(如鼠标、数字化仪器)等设备。这类设备并不要求因产生数据而占用USB总线一段较长的时间,只是它们要发送数据时,才必须尽快予以相应。 等时传输方式:这个传输方式可以单向的,也可以是双向的,用于传输连续性、实时的数据。因此要求传输的速率固定,时间性强,忽略传送错误。如视频设备、数字音频设备、数字相机等。数据包中各种域的格式 SYNC域:在全/低速下为8个字节,而在高速下是32个字节。 数据包鉴定域(PID):P

21、ID由4个包类型位和4个校验位组成。PID 类型 PID 名 PID3:0 描述 标记(Token) 输出(OUT)输入(IN)帧开始(SOF)建立(SETUP) 0001B1001B0101B1101B在主机到功能部件的事务中有地址+端口号在功能部件到主机的事务中有地址+端口号帧开始标记和帧号在主机到功能部件建立一个控制管道的事务中有地址+端口号 数据(DATA) 数据0(DATA0)数据1(DATA1) 0011B1011B 偶数据包PID奇数据包PID 握手(Handshake) 确认(ACK)不确认(NAK)停止(STALL) 0010B1010B1110B 接收器收到无措数据包;接收

22、设备部不能接收数据,或发送设备不能发送数据;端口挂起,或一个控制管道请求不被支持。 包标识符被分为4个编码组:标记,数据,握手和专用。包标识符传送的前2位(PID)指出了其属于哪个组。这说明包标识符编码的分布。专用(Special) 前同步(PRE) 1100B 主机发送的前同步字。打开到低速设备的下行总线通信。 端点域Addr0Addr1Addr2Addr3Addr4Addr5Addr6Addr7 地址域:设备端点是由两个域来定位的:设备地址和端点号。Eenp0Eenp1Eenp2Eenp3 设备的地址域 帧数量域:帧数量域是由主机按每一个帧来进行增加的11位的域。帧序号域在到达其计数的最大

23、值7FFH后便进行翻转,而且在每一个帧(微帧)的开始时在SOF中送出。 数据域:数据域可以是01024个字节,而且必须是一个取整数字节。多重字节的格式如下图所示。数据字节是从LSB开始进行传送的,数据包的大小根据不同的传输类型会有所不同。D7D0D1D2D3D4D5D6D7D0 BYTE N-1 Byte N Byte N+1循环冗余校验:是用来保护所有的在标志和数据包中的非PID标志域的。所有的CRC是在执行位填充之前由收发器在各自独立的域中完成的。同样,在接受器端,在填充位被去掉之前,CRC被解码。标记使用了5位的CRC字段,它覆盖了输入,建立和输出标记的ADDR和ENDP字段,或SOF标

24、记的时间戳字段。数据CRC是作用于数据包的数据字段上的16位多项式。 标志包:由PID、ADDR和ENDP域构成,用于确定数据包的类型:IN、OUT或者SETUP。FieldPIDADDRENDPCRC5bit8745 帧开始(Start-of-Frame)包:在全速下以1mS或在高速下以125uS的速率发出。SOF包中包含8位的PID,11位的帧计数位。FieldPIDFrame NumberCRC5bit8115主机负责设置Setup包内的每个域的值每个Setup包有8个字节 偏移量偏移量 域域 大大小小 值值 描述描述 0 bmRequestType 1 位图 请求特征:D7: 传输方向 0=主机至设备 1=设备至主机D6.5: 种类 0=标准 1=类 2=厂商 3=保留D4.0: 接受者 0=设备 1=接口 2=端点 3=其他4.31=保留 1 bRequest 1 值 具体请求 2 wValue 2 值 字长域,根据不同的请求含义改变

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论