USB通信原理讲义修正版

上传人:沙** 文档编号:243311820 上传时间:2024-09-20 格式:PPT 页数:31 大小:211.50KB
返回 下载 相关 举报
USB通信原理讲义修正版_第1页
第1页 / 共31页
USB通信原理讲义修正版_第2页
第2页 / 共31页
USB通信原理讲义修正版_第3页
第3页 / 共31页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,USB,系统的通信原理,USB,系统的简介,USB,的物理接口,USB,的电气特性,USB,系统的组成,USB,设备的检测,USB,数据流的类型,USB,的传输方式,信号的编码与传输,USB,的优点,USB,的简介,通用串行总线,USB(Universal,Serial Bus),是,Intel,、,Compaq,、,DEC,、,IBM,、,Microsoft,以及,NEC,等公司联手制定的一种通用串行总线接口标准。,USB,接口规范从,1995,年的,USB V1.0,、,USB V1.1,、,USB V1.2,到现在的,USB V2.0,提出以后,很快得到了上百家公司的支持,成为一种名副其实的通用标准。,USB,的物理接口,USB,总线电缆包括,4,根线,用以传输信号和提供电源。其中,D,+,和,D,-,为信号线,传输信号,是一对双绞线,(,即采用差动传输方式,),;,V,bus,和,GND,是电源线,提供电源。相应的,USB,接口插头也比较简单,只有,4,芯。上游插头是,4,芯的长方形插头,下游插头是,4,芯的方形插头。,USB,的电器特性,USB,主机或根集线器,(Root Hub),对设备提供的对地电压为,4.75,5.25V,,设备能吸入的最大电流为,500mA,。因此,,USB,对设备提供的电源是有限的。当,USB,设备第一次被,USB,主机检测到时,设备从,USB Hub,吸入的电流值应该小于,100mA,。,USB,主机有一个独立的,USB,的电源管理系统。,USB,系统软件通过与主机电源管理系统交互来处理挂起、唤醒等电源事件。为了节省能源,对暂时不起作用的,USB,设备、电源管理系统将其置为挂起状态,等有数据传输时再唤醒设备。,USB,系统的组成,USB,系统在硬件上一般由,USB,主机控制器,/,根集线器、,USB,集线器和,USB,功能设备,3,个部分组成。,USB,设备的插入检测机制,USB,主机是如何检测到设备的插入的呢?,首先,在,USB,集线器的每个下游端口的,D+,和,D-,上, 分别接了一个,15K,欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻拉到了低电平。而在,USB,设备端,在,D+,或者,D-,上接了,1.5K,欧姆上拉电阻。对于全速和高速设备, 上拉电阻是接在,D+,上;而低速设备则是上拉电阻接在,D-,上。这样,当设备插入到集线器时, 由,1.5K,的上拉电阻和,15K,的下拉电阻分压,结果就将差分数据线中的一条拉高了。集线器检测到这个状态后,它就报告给,USB,主控制器(或者通过它上一层的集线器报告给,USB,主控制器), 这样就检测到设备的插入了。,USB,高速设备先是被识别为全速设备,然后通过,HOST,和,DEVICE,两者之间的确认,再切换到高速模式的。在高速模式下,是电流传输模式,这时将,D+,上的上拉电阻断开。,一个简单的实验:只用一个上拉电阻接在,USB,的,+5V,和,D+,或者,D-,上,,WINDOWS,也会提示发现新硬件,但是无法找到驱动程序。这时去设备管理器里面看,有显示未知,USB,设备, 并且其,VID,和,PID,为,0,。,USB,主机控制器,/,根集线器,所有的,USB,系统上的联系都是在软件控制下由,USB,主机进行的。,USB,主机是带有,USB,主控器的,PC,机。主机控制器负责,USB,系统的处理,是,USB,系统的大脑。,USB,根集线器提供,USB,接口给,USB,设备和,USB Hub,使用。,USB,连接的,127,个设备并不需要控制器去寻址,只需要对根集线器发出命令,根集线器可以自动找到相应的设备。,USB,集线器。利用,USB,集线器来提供更多的,USB,接口,以连接较多的,USB,设备。,USB,功能设备。,USB,功能设备能在总线上发送和接受数据和控制信息,它是完成某项具体功能的硬件设备。通过,USB,的硬件和软件与计算机系统进行数据交换。它们通常是一些高速设备、中速设备和低速设备。如视频、硬盘、移动存储设备、网络设备、音频设备以及鼠标键盘等。,端点,:位于,USB,设备中与,USB,主机通信的基本单元。每个设备允许有多个端点,主机只能通过端点与设备进行通信,各个端点由设备地址和端点号确定在,USB,系统中的唯一地址。每个端点都包括一些属性:传输方式、总线访问频率、带宽、端点号、数据包的最大容量等。除控制端点,0,外的其他端点必须在设备配置后才能生效,控制端点,0,通常用于设备初始化参数。,USB,芯片中,每个端点实际上就是一个一定大小的数据缓冲区。,管道:管道是,USB,设备与,USB,主机之间数据通信的逻辑通道,这个,USB,管道对应一个设备端点,各端点通过自己的管道与主机通信。所有设备都支持对应端点,0,的控制管道,通过控制管道主机可以获取,USB,的设备信息,包括:设备类型、电源管理、配置、端点描述符等。,设备检测,描述符:描述符是具有一定格式的数据结构,它包含了设备所有的属性信息。,USB,设备使用各种描述符来向主机报告它的属性。在主机使用控制传输请求描述符时,设备就会将这些信息以标准描述符格式发送给主机,从而使主机控制器获得诸如设备及供应商,ID,,设备通信能力等重要信息。所有的,USB,外设都必须响应对标准,USB,描述符的请求,并且要按一定的规范进行。,描述符的种类:标准,USB,描述符包括设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。它们分别从不同的层次来描述设备的属性。,USB,的描述符及各种描述符之间的依赖关系,一个,USB,设备有一个设备描述符,设备描述符里面决定了该设备有多少种配置,每种配置描述符对应着配置描述符;而在配置描述符中又定义 了该配置里面有多少个接口,每个接口有对应的接口描述符;在接口描 述符里面又定义了该接口有多少个端点,每个端点对应一个端点描述符; 端点描述符定义了端点的大小,类型等等,每种描述符都有自己独立的编号,如下:,#define DEVICE_DESCRIPTOR 0x01 /,设备描述符,#define CONFIGURATION_DESCRIPTOR 0x02 /,配置描述符,#define STRING_DESCRIPTOR 0x03 /,字符串描述符,#define INTERFACE_DESCRIPTOR 0x04 /,接口描述符,#define ENDPOINT_DESCRIPTOR 0x05 /,端点描述符,设备描述符,/,定义标准的设备描述符结构,typedef struct _DEVICE_DCESCRIPTOR_STRUCT ,BYTE blength; /,设备描述符的字节数大小,BYTE bDescriptorType; /,设备描述符类型编号,WORD bcdUSB; /USB,版本号,BYTE bDeviceClass; /USB,分配的设备类代码,BYTE bDeviceSubClass; /USB,分配的子类代码,BYTE bDeviceProtocol; /USB,分配的设备协议代码,BYTE bMaxPacketSize0; /,端点,0,的最大包大小,WORD idVendor; /,厂商编号,WORD idProduct; /,产品编号,WORD bcdDevice; /,设备出厂编号,BYTE iManufacturer; /,设备厂商字符串的索引,BYTE iProduct; /,描述产品字符串的索引,BYTE iSerialNumber; /,描述设备序列号字符串的索引,BYTE bNumConfigurations; /,可能的配置数量,配置描述符,/,定义标准的配置描述符结构,Typedef structCONFIGURATION_DESCRIPTOR_STRUCT ,BYTE bLength; /,配置描述符的字节数大小,BYTE bDescriptorType; /,配置描述符类型编号,WORD wTotalLength; /,此配置返回的所有数据大小,BYTE bNumInterfaces; /,此配置所支持的接口数量,BYTE bConfigurationValue; /Set_Configuration,命令所需要的参数值,BYTE iConfiguration; /,描述该配置的字符串的索引值,BYTE bmAttributes; /,供电模式的选择,BYTE MaxPower; /,设备从总线提取的最大电流,接口描述符,/,定义标准的接口描述符结构,typedef,struct _INTERFACE_DESCRIPTOR_STRUCT ,BYTE bLength; /,接口描述符的字节数大小,BYTE bDescriptorType; /,接口描述符的类型编号,BYTE bInterfaceNumber; /,该接口的编号,BYTE bAlternateSetting; /,备用的接口描述符编号,BYTE bNumEndpoints; /,该接口使用的端点数,不包括端点,0,BYTE bInterfaceClass; /,接口类型,BYTE bInterfaceSubClass; /,接口子类型,BYTE bInterfaceProtocol; /,接口遵循的协议,BYTE iInterface; /,描述该接口的字符串索引值,端点描述符,/,定义标准的端点描述符结构,typedef struct _ENDPOINT_DESCRIPTOR_STRUCT ,BYTE bLegth; /,端点描述符字节数大小,BYTE bDescriptorType; /,端点描述符类型编号,BYTE bEndpointAddress; /,端点地址及输入输出属性,BYTE bmAttributes; /,端点的传输类型属性,WORD wMaxPacketSize; /,端点收、发的最大包大小,BYTE bInterval; /,主机查询端点的时间间隔,偏移,字段,大小,值,描述,0,bLength,1,数字,描述符的大小,1,bDescriptorType,1,常量,描述符的类型,(05),2,bEndpointAddress,1,端点,端点地址,3,bmAttributes,1,位映射,端点属性,4,wMaxPacketSize,2,数字,支持的最大数据包的大小,5,bInterVal,1,数字,中断扫描时间间隔,端点描述符,总线列举经历的步骤:,(,1,)集线器检测新设备主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察。(集线器端口的两根信号线的每一根都有,15k,的下拉电阻,而每一个设备在,D+,都有一个,1.5k,的上拉电阻。当用,USB,线将,PC,和设备接通后,设备的上拉电阻使信号线的电位升高,因此被主机集线器检测到。),(,2,)主机知道了新设备连接后每个集线器用中断传输来报告在集线器上的事件。当主机知道了这个事件,它给集线器发送一个,Get_Status,请求来了解更多的消息。返回的消息告诉主机一个设备是什么时候连接的。,(,3,)集线器重新设置这个新设备当主机知道有一个新的设备时,主机给集线器发送一个,Set_Feature,请求,请求集线器来重新设置端口。集线器使得设备的,USB,数据线处于重启(,RESET,)状态至少,10ms,。,(,4,)集线器在设备和主机之间建立一个信号通路主机发送一,Get_Status,请求来验证设备是否激起重启状态。返回的数据有一位表示设备仍然处于重启状态。当集线器释放了重启状态,设备就处于默认状态了,即设备已经准备好通过,Endpoint 0,的默认流程响应控制传输。即设备现在使用默认地址,0x0,与主机通信。,(,5,)集线器检测设备速度集线器通过测定那根信号线(,D+,或,D-,)在空闲时有更高的电压来检测设备是低速设备还是全速设备。(全速和高速设备,D+,有上拉电阻,低速设备,D-,有上拉电阻)。,以下,需要,USB,的,firmware,进行干预,(,6,),获取最大数据包长度,PC,向,address 0,发送,USB,协议规定的,Get_Device_Descriptor,命令,以取得却缺省控制管道所支持的最大数据包长度,并在有限的时间内等待,USB,设备的响应,该长度包含在设备描述符的,bMaxPacketSize0,字段中,其地址偏移量为,7,,所以这时主机只需读取该描述符的前,8,个字节。注意,主机一次只能列举一个,USB,设备,所以同一时刻只能有一个,USB,设备使用缺省地址,0,。以下操作雷同,不同操作系统设定时延是不一样的,比如说,win2k,大概是几毫秒,如果没有反应就再发送一次命令,重复三次。,(,7,)主机分配一个新的地址给设备主机通过发送一个,Set_Address,请求来分配一个唯一的地址给设备。设备读取这个请求,返回一个确认,并保存新的地址。从此开始所有通信都使用这个新地址。,(,8,)主机向新地址重新发送,Get_Device_Descriptor,命令,此次读取其设备描述符的全部字段,以了解该设备的总体信息,如,VID,,,PID,。,(,9,)主机向设备循环发送,Get_Device_Configuration,命令,要求,USB,设备回答,以读取全部配置信息。,(,10,)主机发送,Get_Device_String,命令,获得字符集描述(,unicode,),比如产商、产品描述、型号等等。,(,11,)此时主机将会弹出窗口,展示发现新设备的信息,产商、产品描述、型号等。,(,12,)根据,Device_Descriptor,和,Device_Configuration,应答,,PC,判断是否能够提供,USB,的,Driver,,一般,win2k,能提供几大类的设备,如游戏操作杆、存储、打印机、扫描仪等,操作就在后台运行。但是,Win98,却不可以,所以在此时将会弹出对话框,索要,USB,的,Driver,。,(,13,)加载了,USB,设备驱动以后,主机发送,Set_Configuration,(,x,)命令请求为该设备选择一个合适的配置,(x,代表非,0,的配置值,),。如果配置成功,,USB,设备进入“配置”状态,并可以和客户软件进行数据传输。此时,常规的,USB,完成了其必须进行的配置和连接工作。查看注册表,能够发现相应的项目已经添加完毕,至此设备应当可以开始使用。不过,,USB,协议还提供了一些用户可选的协议,设备如果不应答,也不会出错,但是会影响到系统的功能。,USB,的数据流的类型,USB,数据流的类型分为如下,4,类,控制信号流:当,USB,设备加入系统时,,USB,系统软件与设备之间建立起控制信号流来发送控制信号,这种数据不允许出错或丢失。,块数据流:通常用于发送大量的数据。,中断数据流:用于传送少量的随机输入信号,它包括事件通知信号,输入字符或坐标等。,实时数据流:用于传输连续的固定速率的数据,它们所需的带宽与传输数据的采样有关。,USB,的传输方式,与,USB,数据流类型对应的有,4,中基本的传输类型:,控制传输方式:这种方式传输的不是数据流,而是控制信息流,其中包括设备控制指令,设备状态查询及确认,(,握手信号,),。当,USB,设备收到这些命令数据后,将按先进先出,(FIFO),的原则处理到达的命令数据。,批量传输方式:批量传输方式可以是单向的,也可以是双向的。它用于传输大批数据,这种数据的实时性不强,当要确保数据的正确性。在传输的过程中出现错误重传。其典型的应用是扫描仪、打印机、静态图片输入。,中断传输方式:该方式用于数据量少,但具有突发性的一类设备。这些数据需要及时的处理,以达到实时的效果。此方式主要用在键盘和位置点采集,(,如鼠标、数字化仪器,),等设备。这类设备并不要求因产生数据而占用,USB,总线一段较长的时间,只是它们要发送数据时,才必须尽快予以相应。,等时传输方式:这个传输方式可以单向的,也可以是双向的,用于传输连续性、实时的数据。因此要求传输的速率固定,时间性强,忽略传送错误。如视频设备、数字音频设备、数字相机等。,信号的编码与传输,数据包中各种域的格式,SYNC,域:在全,/,低速下为,8,个字节,而在高速下是,32,个字节。,数据包鉴定域,(PID),:,PID,由,4,个包类型位和,4,个校验位组成。,PID,类型,PID,类型,PID,名,PID3:0,描述,标记(,Token,),输出(,OUT,),输入(,IN,),帧开始(,SOF,),建立(,SETUP,),0001B,1001B,0101B,1101B,在主机到功能部件的事务中有地址,+,端口号,在功能部件到主机的事务中有地址,+,端口号,帧开始标记和帧号,在主机到功能部件建立一个控制管道的事务中有地址,+,端口号,数据(,DATA,),数据,0,(,DATA0,),数据,1,(,DATA1,),0011B,1011B,偶数据包,PID,奇数据包,PID,握手(,Handshake,),确认(,ACK,),不确认(,NAK,),停止(,STALL,),0010B,1010B,1110B,接收器收到无措数据包;,接收设备部不能接收数据,或发送设备不能发送数据;,端口挂起,或一个控制管道请求不被支持。,包标识符被分为,4,个编码组:标记,数据,握手和专用。包标识符传送的前,2,位(,PID,)指出了其属于哪个组。这说明包标识符编码的分布。,专用,(,Special,),前同步(,PRE,),1100B,主机发送的前同步字。打开到低速设备的下行总线通信。,端点域,Addr,0,Addr,1,Addr,2,Addr,3,Addr,4,Addr,5,Addr,6,Addr,7,地址域,:设备端点是由两个域来定位的:设备地址和端点号。,Eenp,0,Eenp,1,Eenp,2,Eenp,3,设备的地址域,帧数量域:帧数量域是由主机按每一个帧来进行增加的,11,位的域。帧序号域在到达其计数的最大值,7FFH,后便进行翻转,而且在每一个帧,(,微帧,),的开始时在,SOF,中送出。,数据域:数据域可以是,0,1024,个字节,而且必须是一个取整数字节。多重字节的格式如下图所示。数据字节是从,LSB,开始进行传送的,数据包的大小根据不同的传输类型会有所不同。,D,7,D,0,D,1,D,2,D,3,D,4,D,5,D,6,D,7,D,0,BYTE N-1 Byte N Byte N+1,循环冗余校验:是用来保护所有的在标志和数据包中的非,PID,标志域的。所有的,CRC,是在执行位填充之前由收发器在各自独立的域中完成的。同样,在接受器端,在填充位被去掉之前,,CRC,被解码。,标记使用了,5,位的,CRC,字段,它覆盖了输入,建立和输出标记的,ADDR,和,ENDP,字段,或,SOF,标记的时间戳字段。数据,CRC,是作用于数据包的数据字段上的,16,位多项式。,数据包的格式,标志包:由,PID,、,ADDR,和,ENDP,域构成,用于确定数据包的类型:,IN,、,OUT,或者,SETUP,。,Field,PID,ADDR,ENDP,CRC5,bit,8,7,4,5,帧开始,(Start-of-Frame),包:在全速下以,1mS,或在高速下以,125uS,的速率发出。,SOF,包中包含,8,位的,PID,,,11,位的帧计数位。,Field,PID,Frame Number,CRC5,bit,8,11,5,SETUP,包,主机负责设置,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,值,字长域,根据不同的请求含义改变,.,4,wIndex,2,索引或偏移,字长域,根据不同的请求含义改变,.,典型用于传送索引或偏移,.,6,wLength,2,值,如有数据传送阶段,此为数据字节数,.,bRequest,Brequest,Value,GET_STATUS,0,CLEAR_FEATURE,1,为将来保留,2,SET_FEATURE,3,为将来保留,4,SET_ADDRESS,5,GET_DESCRIPTOR,6,SET_DESCRIPTOR,7,GET_CONFIGURATION,8,SET_CONFIGURATION,9,GET_INTERFACE,10,SET_INTERFACE,11,SYNCH_FRAME,12,数据包,:由,PID,、数据域和,CRC,构成。总共有,4,中类型的数据包,PID,:,DATA0,、,DATA1,、,DATA2,、,MDATA,。数据必须以整数的字节送出。数据的,CRC,对数据域的部分进行校验,而不包括,PID,。,PID,有其自身的校验方法。,Filed,PID,DATA,CRC16,bit,8,0,8192,16,握手包:只包含一个,PID,,它被报告数据处理的状态,而且通过返回的数值确定数据是否被成功接收,命令的接受与拒绝,流量的控制以及环境暂停等。,Field,PID,bit,8,握手包包括如下几种:,ACK,、,NAK,、,STALL,、,NYET,、,ERR,。,USB,设备的优点,支持即插即用:允许外设在主机和其他外设工作时进行连接配置使用及移除。,传输的速度快:,USB,支持,3,种设备传输速率,低速设备,1.5Mb/s,、中速设备,12Mb/s,和高速设备,480Mb/s,。,连接方便:,USB,可以通过串行连接或者使用集线器,Hub,连接,127,个,USB,设备,从而以一个串行通道取代,PC,上其他,I/O,端口如串行口、并行口等,是,PC,与外设之间的连接更容易。,独立供电:,USB,接口提供了内置电源。,低成本:,USB,使用一个,4,针插头作为标准插头,通过这个标准插头,采用菊花链的形式可以把多达,127,个的,USB,外设链接起来,所有的外设通过协议来共享,USB,的带宽。,谢 谢!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!