USB协议详解

合集下载

USB协议详解

USB协议详解

USB协议详解⼀个transfer(传输)由⼀个或多个transaction(事务)构成,⼀个transaction(事务)由⼀个或多个packet(包)构成,⼀个packet(包)由⼀个或多个sync(域)构成。

1.传输数据通信USB的数据通讯⾸先是基于传输(transfer)的,传输的类型有:中断传输、批量传输、同步传输、控制传输。

2.事务数据通讯⼀次传输由⼀个或多个事务(transaction)构成,事务可以分为:in事务、out事务、setup事务。

3.包数据通讯⼀个事务由⼀个或多个包(packet)构成,包可分为:令牌包(setup)、数据包(data)、握⼿包(ack)、特殊包。

4.域数据通讯⼀个包由多个域构成,域可分为:同步域(sync)、标识域(pid)、地址域(addr)、端点域(endp)、帧号域(fram)、数据域(data)、校验域(crc)。

USB传输传输分为四种类型:批量传输、等时(同步)传输、中断传输、控制传输。

1、批量(⼤容量数据)传输(Bulk Transfers): ⾮周期性,突发⼤容量数据的通信,数据可以占⽤任意带宽,并容忍延迟。

如USB打印机、扫描仪、⼤容量储存设备等。

批量输出事务:(1)主机先发出⼀个OUT令牌包(包含设备地址,端点号)。

(2)然后再发送⼀个DATA包,这时地址和端点匹配的设备就会收下这个数据包,主机切换到接收模式,等待设备返回握⼿包。

(3)设备解码令牌包,数据包都准确⽆误,并且有⾜够的缓冲区来保存数据后就会使⽤ACK/NYET握⼿包来应答主机(只有⾼速模式才有NYET握⼿包,他表⽰本次数据成功接收,但是没有能⼒接收下⼀次传输),如果没有⾜够的缓冲区来保存数据,就返回NAC,告诉主机⽬前没有缓冲区可⽤,主机会在稍后时间重新该批量传输事务。

如果设备检查到数据正确,但端点处于挂起状态,返回STALL。

如果检测到有错误(如校验错误,位填充错误),则不做任何响应,让主机等待超时。

USB协议中文详解

USB协议中文详解
6
USB 体系简介
USB 体系包括主机、设备以及物理连 接三个部分。
主机是一个提供USB接口及接口管理 能力的硬件、软件及固件的复合体, 可以是PC,也可以是OTG设备。一 个USB 系统中仅有一个USB主机;
设备包括 USB功能设备和 USB HUB, 最多支持 127个设备;
物理连接即指的是USB 的传输线。 在USB 2.0系统中,要求使用屏蔽的 双绞线。
把多个功能设备通过内置的 USB HUB 组合而成的设备,比如带录音话筒 的 USB 摄像头等。 一个 USB HOST 最多可以同时支持 128 个地址,地址 0 作为默认地址, 只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个 USB HOST 最多可以同时支持 127 个地址,如果一个设备只占用一个地 址,那么可最多支持 127个 USB 设备(含USB HUB)。
USB 接口扩展
USB HUB提供了一种低成本、低复杂度的USB 接口扩展方法。HUB 的上行PORT 面向 HOST,下行 PORT 面向设备(HUB 或功能设备)。 在下行 PORT 上,HUB 提供了设备连接检测和设备移除检测的能力, 并给各下行PORT供电。
HUB可以单独使能各下行PORT,不同PORT 可以工作不同的速度等 级(高速/全速/低速)。
转发器提供了从高速和全速/低速通讯的转换能力,通过 HUB 可以在 高速 HOST 和全速/低速设备之间进行匹配。
HUB 在硬件上支持 Reset、Resume、Suspend。
17
USB 体系简介
USB HOST 在USB体系中负责设备连接/移除的检测、HOST 和设备之 间控制流和数据流的管理、传输状态的收集、总线电源的供给。
24

USB协议分析

USB协议分析

USB协议分析协议名称:USB协议分析一、引言USB(Universal Serial Bus,通用串行总线)是一种常见的计算机外部设备连接标准。

本协议旨在对USB协议进行详细分析,包括其基本原理、通信流程和数据传输规范等方面的内容。

二、背景随着计算机技术的不断发展,外部设备的种类和数量不断增加,传统的串口、并口等接口已经无法满足需求。

USB作为一种全球统一的接口标准,被广泛应用于计算机、手机、摄像头、打印机等各种设备中。

三、USB协议基本原理1. 总线拓扑结构:USB采用主从式拓扑结构,主机负责控制总线上的数据传输,从设备则根据主机的指令进行响应。

2. 传输速率:USB支持多种传输速率,包括低速(1.5Mbps)、全速(12Mbps)、高速(480Mbps)和超高速(5Gbps)。

3. 数据传输方式:USB协议定义了四种数据传输方式,分别是控制传输、批量传输、中断传输和等时传输,不同的传输方式适用于不同的设备和应用场景。

4. 插拔支持:USB接口支持热插拔功能,用户可以在不关闭计算机的情况下插拔USB设备。

四、USB通信流程1. 握手阶段:主机和从设备之间进行握手协商,确定通信参数和传输方式。

2. 数据传输阶段:根据传输方式进行数据传输,主机发送命令或数据包,从设备进行响应或返回数据。

3. 结束阶段:通信完成后,主机和从设备进行结束操作,释放资源并关闭连接。

五、USB数据传输规范1. 控制传输规范:控制传输用于主机与从设备之间的命令和控制信息的传输,包括设备的初始化、配置和状态查询等操作。

2. 批量传输规范:批量传输适用于大量数据的传输,如打印机的数据输出。

3. 中断传输规范:中断传输用于周期性的数据传输,如鼠标和键盘的输入。

4. 等时传输规范:等时传输用于对数据传输的实时性要求较高的应用,如音频和视频的传输。

六、USB协议分析工具1. USB协议分析仪:用于对USB通信进行实时监测和分析,可以捕获和解析USB数据包,帮助开发人员定位和解决通信问题。

usb协议深入解读

usb协议深入解读

usb协议深入解读USB(Universal Serial Bus)是一种通用的串行总线标准,用于连接电脑与外部设备,如键盘、鼠标、打印机、存储设备等。

USB协议定义了电脑和外部设备之间的通信规则,保证了设备的互操作性和兼容性。

USB协议的工作原理是将数据分成小的信息包(packet),通过USB线缆传输。

数据传输分为Control、Bulk、Interrupt和Isochronous四种传输类型。

控制传输用于设备配置和命令交互,批量传输用于大容量数据传输,中断传输适用于延迟要求较高的设备,同步传输用于实时流媒体数据传输。

USB协议采用主从架构。

电脑作为主机(host),外部设备作为从设备(device)。

主机负责控制和管理设备的连接和通信,从设备根据主机的指令执行任务。

每个设备都有一个唯一的设备地址,主机通过唯一的地址识别和寻找特定的设备。

USB协议还定义了一种层次结构,包括物理层、总线层、设备层和应用层。

物理层负责USB线缆的传输、信号传输和电气特性。

总线层负责数据帧的传输、错误检测和纠正,以及设备的连接和断开管理。

设备层负责设备地址分配、设备功能描述和配置管理。

应用层根据设备的功能需求进行数据交换和通信。

USB协议还支持热插拔功能,即在不关机的情况下插入或拔出外部设备。

这得益于协议对设备的供电和识别机制。

当设备插入时,主机会为其提供所需的电源,然后通过设备描述符和配置描述符来识别设备的类型和功能。

通过热插拔功能,用户可以方便地连接和断开设备,无需重新启动电脑。

在USB协议中,还有一种特殊的设备称为HID(Human Interface Device),用于连接输入设备(如键盘、鼠标)和输出设备(如显示器)。

HID设备使用标准的USB报告描述符进行通信,主机通过解读报告描述符来识别和操作设备。

这种设计使得不同品牌的键盘和鼠标可以通用于各种操作系统和电脑设备。

需要注意的是,USB协议并不仅限于连接电脑和外部设备。

USB通信协议深入理解

USB通信协议深入理解

USB通信协议深入理解USB(Universal Serial Bus),即通用串行总线,是一种广泛应用于计算机和其他电子设备的通信协议。

USB协议提供了一种方便、快捷的通信方式,使得各种外设设备能够与计算机之间进行数据传输和通信。

本文将深入理解USB通信协议,包括其基本原理、架构和常见的传输方式等。

一、USB通信协议的基本原理USB通信协议是一种基于主从结构的传输协议。

在USB系统中,主要包括USB主机(Host)和USB外设(Device)两个角色。

USB主机控制着通信的发起和结束,而USB外设则负责接收和处理数据。

USB通信协议采用了数据包传输的方式。

数据在USB系统中以数据包(Packet)的形式进行传输。

每个数据包包含了特定的控制信息和数据内容,以确保数据的有效传输和正确解析。

在USB通信中,数据被分为控制传输、中断传输、批量传输和等时传输四种类型。

控制传输主要用于配置和管理USB系统,中断传输用于低延迟的数据交互,批量传输用于大数据流的传输,等时传输用于实时数据的传输。

二、USB通信协议的架构USB通信协议的架构主要由四个组件组成,分别是主机控制器(Host Controller)、总线(Bus)、外设和驱动程序。

1. 主机控制器:主机控制器是USB通信协议的核心组件,负责控制整个通信过程。

主机控制器通过总线将主机和外设连接起来,并发送控制命令和数据包给外设。

2. 总线:总线是主机和外设之间的物理连接介质。

USB通信协议使用了一对差分信号线来进行数据的传输,其中D+和D-线用于传输数据,VCC线提供电源,GND线用于地线连接。

3. 外设:外设是连接在USB总线上的各种设备,如打印机、键盘、鼠标等。

外设接收主机控制器发送的命令和数据包,并执行相应的操作。

4. 驱动程序:驱动程序是运行在主机控制器上的软件,用于控制和管理外设。

驱动程序通常由设备制造商提供,并通过操作系统进行加载和运行。

三、USB通信协议的传输方式1. 控制传输:控制传输是USB通信协议中最基本的传输方式,用于配置和管理USB系统。

USB协议分析

USB协议分析

USB协议分析协议名称:USB协议分析一、背景介绍USB(Universal Serial Bus)是一种用于连接计算机和外部设备的通用串行总线接口。

USB协议是为了提供一个标准的物理连接和通信方式,以实现不同设备之间的数据传输和通信。

本协议旨在对USB协议进行详细分析,包括协议的基本原理、通信流程、数据传输方式等内容。

二、协议分析1. USB协议基本原理USB协议采用主从结构,主要包括主机(Host)、设备(Device)和USB集线器(Hub)。

主机负责控制和管理整个USB系统,设备是连接到USB总线上的外部设备,而USB集线器则用于扩展USB接口数量。

2. USB协议通信流程a. 握手阶段:主机和设备之间进行握手,确定通信速率和协议版本。

b. 枚举阶段:主机对设备进行枚举,识别设备的类型和功能。

c. 配置阶段:主机与设备进行配置,包括分配地址和分配端点等。

d. 控制阶段:主机与设备之间进行控制命令的传输,包括读取设备描述符、发送控制命令等。

e. 数据传输阶段:主机与设备之间进行数据的读写操作,包括批量传输、中断传输和等时传输等。

3. USB协议数据传输方式a. 批量传输:用于大容量数据的传输,具有可靠性较高的特点。

b. 中断传输:用于周期性传输小量数据,具有低延迟的特点。

c. 等时传输:用于实时传输,对延迟要求非常高。

4. USB协议层次结构USB协议分为物理层、数据链路层、传输层和应用层。

a. 物理层:负责传输电气信号和电力供应。

b. 数据链路层:负责数据的可靠传输和错误检测。

c. 传输层:负责数据的分段和重组。

d. 应用层:负责数据的处理和应用。

5. USB协议相关标准a. USB 1.0:最初的USB标准,支持低速(1.5 Mbps)和全速(12 Mbps)传输。

b. USB 2.0:提升了传输速率,支持高速(480 Mbps)传输。

c. USB 3.0:引入了超速(5 Gbps)传输,提高了数据传输速率。

USB协议分析

USB协议分析

USB协议分析协议名称:USB协议分析一、背景介绍USB(Universal Serial Bus)是一种用于计算机与外部设备之间传输数据的通信协议。

USB协议已经成为现代计算机系统中最常用的接口之一,广泛应用于各种设备,包括打印机、摄像头、键盘、鼠标等。

本协议旨在对USB协议进行详细分析,以便更好地理解USB协议的工作原理和应用。

二、协议目的本协议旨在分析USB协议的结构、通信过程和功能,探讨USB协议的优势和不足,以及对USB协议进行改进的可能性。

通过对USB协议的深入分析,可以为USB设备的开发和应用提供指导,提高USB设备的性能和可靠性。

三、协议内容1. USB协议的结构a. 物理层:USB协议的物理层包括USB线缆、插头和插座等硬件组件,定义了USB设备之间的物理连接方式和电气特性。

b. 数据链路层:USB协议的数据链路层负责将数据分割成数据包,并在USB 设备之间进行可靠的传输。

c. 网络层:USB协议的网络层负责管理USB设备的地址分配、设备识别和设备间的通信。

d. 传输层:USB协议的传输层定义了USB设备之间的数据传输方式,包括同步传输、中断传输和批量传输等。

e. 应用层:USB协议的应用层定义了USB设备的功能和操作方式,包括设备描述符、配置描述符和接口描述符等。

2. USB协议的通信过程a. 设备枚举:USB设备在插入计算机时会进行设备枚举过程,包括设备的识别、地址分配和配置等。

b. 数据传输:USB协议支持多种数据传输方式,包括同步传输、中断传输和批量传输等。

在数据传输过程中,USB设备和主机之间通过控制传输、中断传输和批量传输等方式进行数据交换。

c. 错误处理:USB协议提供了丰富的错误处理机制,包括重传机制、错误检测和纠错等,以确保数据传输的可靠性和正确性。

3. USB协议的功能a. 插拔支持:USB协议支持热插拔功能,可以在计算机运行时插入或拔出USB设备,而无需重新启动计算机。

usb接口协议标准

usb接口协议标准

usb接口协议标准一、USB接口协议标准简介USB接口协议(Universal Serial Bus),即通用串行总线接口协议,是一种计算机硬件接口标准。

它是由美国英特尔、微软等公司于1994年发起,并于1996年正式发布的一种串行通信接口。

USB接口协议旨在为计算机和外部设备提供一种高效、可靠、易用的数据传输方式。

二、USB接口协议的发展历程自1996年USB接口协议发布以来,它经历了多个版本的迭代更新。

目前,主要有以下几个版本:B 1.0:1996年发布,最高传输速率为12Mbps;B 2.0:2000年发布,最高传输速率为480Mbps;B 3.0:2008年发布,最高传输速率为5Gbps;B 3.1:2014年发布,最高传输速率为10Gbps;B 3.2:2017年发布,最高传输速率为20Gbps。

三、USB接口协议的主要特点1.高速传输:USB接口协议具有较高的数据传输速率,能够满足大部分外部设备的传输需求;2.兼容性强:USB接口协议适用于各种操作系统,如Windows、Mac OS、Linux等;3.热插拔:USB接口支持热插拔,方便用户在不关机的情况下更换设备;4.供电灵活:USB接口可以为外部设备提供电源,满足设备的供电需求;5.拓展性强:USB接口协议有多种扩展规范,如USB Type-C、USB PD (Power Delivery)等。

四、USB接口协议的应用领域USB接口协议广泛应用于各种电子设备中,如电脑、手机、平板、数码相机、MP3/MP4、U盘等。

它为这些设备之间的数据传输提供了便捷、高效的方式。

五、USB接口协议的未来发展趋势随着科技的不断进步,USB接口协议将继续发展,主要趋势包括:1.更高的传输速率:未来USB接口协议可能将进一步提高传输速率,满足更高速率设备的需求;2.更广泛的兼容性:USB接口协议将继续完善,以适应更多类型设备的连接需求;3.更强的拓展性:USB接口协议将拓展至更多领域,如无线充电、数据加密等;4.更简化的使用体验:USB接口协议将提供更加简化的使用体验,如自动识别设备、即插即用等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

USB HID介绍HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复习一下USB 协议的相关内容。

USB设备描述符-概述当插入USB设备后,主机会向设备请求各种描述符来识别设备。

那什么是设备描述符呢?Descriptor即描述符,是一个完整的数据结构,可以通过C语言等编程实现,并存储在USB 设备中,用于描述一个USB设备的所有属性,USB主机是通过一系列命令来要求设备发送这些信息的。

描述符的作用就是通过命令操作来给主机传递信息,从而让主机知道设备具有什么功能、属于哪一类设备、要占用多少带宽、使用哪类传输方式及数据量的大小,只有主机确定了这些信息之后,设备才能真正开始工作。

USB有那些标准描述符?USB有5种标准描述符:设备描述符、配置描述符、字符描述符、接口描述符、端点描述符。

描述符之间有一定的关系,一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。

由此我们可以看出,USB的描述符之间的关系是一层一层的,最上一层是设备描述符,下面是配置描述符,再下面是接口描述符,再下面是端点描述符。

在获取描述符时,先获取设备描述符,然后再获取配置描述符,根据配置描述符中的配置集合长度,一次将配置描述符、接口描述符、端点描述符一起一次读回。

其中可能还会有获取设备序列号,厂商字符串,产品字符串等。

设备描述符struct _DEVICE_DEscriptOR_STRUCT{BYTE bLength; //设备描述符的字节数大小BYTE bDescriptorType; //描述符类型编号,为0x01WORD bcdUSB; //USB版本号BYTE bDeviceClass; //USB分配的设备类代码,0x01~0xfe为标准设备类,0xff为厂商自定义类型,0x00不是在设备描述符中定义的,如HIDBYTE bDeviceSubClass; //usb分配的子类代码,同上,值由USB规定和分配的,HID 设备此值为0BYTE bDeviceProtocl; //USB分配的设备协议代码,同上HID设备此值为0BYTE bMaxPacketSize0; //端点0的最大包的大小WORD idVendor; //厂商编号WORD idProduct; //产品编号WORD bcdDevice; //设备出厂编号BYTE iManufacturer; //描述厂商字符串的索引BYTE iProduct; //描述产品字符串的索引BYTE iSerialNumber; //描述设备序列号字符串的索引BYTE bNumConfiguration; //可能的配置数量}配置描述符struct _CONFIGURATION_DEscriptOR_STRUCT{BYTE bLength; //配置描述符的字节数大小BYTE bDescriptorType; //描述符类型编号,为0x02WORD wTotalLength; //配置所返回的所有数量的大小BYTE bNumInterface; //此配置所支持的接口数量BYTE bConfigurationVale; //Set_Configuration命令需要的参数值BYTE iConfiguration; //描述该配置的字符串的索引值BYTE bmAttribute; //供电模式的选择BYTE MaxPower; //设备从总线提取的最大电流}字符描述符struct _STRING_DEscriptOR_STRUCT{BYTE bLength; //字符串描述符的字节数大小BYTE bDescriptorType; //描述符类型编号,为0x03BYTE SomeDescriptor[36]; //UNICODE编码的字符串}接口描述符struct _INTERFACE_DEscriptOR_STRUCT{BYTE bLength; //接口描述符的字节数大小BYTE bDescriptorType; //描述符类型编号,为0x04BYTE bInterfaceNunber; //接口的编号BYTE bAlternateSetting;//备用的接口描述符编号BYTE bNumEndpoints; //该接口使用端点数,不包括端点0BYTE bInterfaceClass; //接口类型 HID设备此值为0x03BYTE bInterfaceSubClass;//接口子类型 HID设备此值为0或者1BYTE bInterfaceProtocol;//接口所遵循的协议BYTE iInterface; //描述该接口的字符串索引值}端点描述符struct _ENDPOIN_DEscriptOR_STRUCT{BYTE bLength; //端点描述符的字节数大小BYTE bDescriptorType; //描述符类型编号,为0x05BYTE bEndpointAddress; //端点地址及输入输出属性BYTE bmAttribute; //端点的传输类型属性WORD wMaxPacketSize; //端点收、发的最大包的大小BYTE bInterval; //主机查询端点的时间间隔}HID设备描述符温习了以上内容,我们再来看看HID协议与这些描述符之间的关系。

当插入USB设备后,主机会向设备请求各种描述符来识别设备。

为了把一个设备识别为HID类别,设备在定义描述符的时候必须遵守HID规范。

从框图中,可以看出除了USB标准定义的一些描述符外,HID设备还必须定义HID描述符。

报告描述符报告描述符比较复杂,它是以item形式排列组合而成,无固定长途,用户可以自定义长度以及每一bit的含义。

item类型分三种:main,global和local,其中main类型又可分为5种tag:项目分成三种类别:主项目,全局项目,区域项目。

主项目中的input,ouput,feature三个卷标用来表示报告中数据的种类,这些是报告描述符中最主要的项目,其他项目都是用来修饰这三种项目。

主要项目中其他二个卷标后面再作详细的介绍。

>> Input 项:表示设备操作输入到主机的数据模式。

这个数据格式就形成一个输入报告,虽然输入报告可以用控制型管线以get report(input)来传输,但是通常用中断型输入管线来传输以确保在每一固定周期内都能将更新的输入报告传给主机。

>> Output 项:表示由主机输出到装置操作的数据格式。

这个数据格式就形成一个输出报告。

输出报告通常不适用轮询的方式来传送给设备,而是由应用软件依实际需求以传令方式要求送出输出报告,所以大多用控制型管线以set report(output)指令来将报告送到设备。

当然也可以选择用中断型输出管线来传送,只是通常不建议这样用。

>> Feature 项:表示由主机送到设备的组态所需数据的数据格式。

这个数据模式就形成一个特征报告。

特征报告只能用控制型管线以get report(feature)和set report(feature)指令分别来取得和设定设备的特征值主项目用来定义报告中数据的种类和格式,而说明主项目之意义与用途为全局项目和区域项目。

顾名思义,区域性项目只能适用于列于其下的第一个主项目,不适用于其他主项目,若一个主项目之上有几个不同的卷标的区域性项目,则这些区域性项目皆适用于描述该主项目。

相反,全局性项目适用于其下方的所有主项目,除非另一个相同卷标的全局性项目出现Report descriptors are composed of pieces of information. Each piece of information is called an Item.报告描述符由一些数据片组成。

这些数据片被叫做Item。

All items have a one-byte prefix that contains the item tag, item type, and item size.每一个Item都包含一个字节的前缀,这个前缀中包含了三个信息--item tag,、item type、item size。

An item may include optional item data。

Item可以包含一个可选的数据段。

The size of the data portion of an item is determined by its fundamental type. Item的数据部分的长度取决于Item的基本类型。

There are two basic types of items: short items and long items.Item有两种基本类型:short items and long item。

There are three categories of short item tags: Main, Global, and Local.short item 的item tags 有三种类型:Main, Global, and Local.Main items: </center>Main items are used to either define or group certain types of data fields within a Report descriptor. There are two types of Main items: data and non-data. Data-type Main items are used to create a field within a report and include Input, Output, and Feature. Other items do not create fields and are subsequently referred to asnon-data Main items.好了,到此我们应该可以对照实际应用的报告描述符,寻找其中的Main items了。

至此我们已经可以明白报告描述符中的几个MAIN Item的意义,接下来继续看Global Item 和Local Item.Global Item: </center>Global items describe rather than define data from a control. A new Main item assumes the characteristics of the item state table. Global items can change the state table. As a result Global item tags apply to all subsequently defined items unless overridden by another Global item.(原文件名:Global Item.jpg)至此我们已经可以明白报告描述符中的几个Global Item的意义Local Item: </center>Local item tags define characteristics of controls. These items do not carry over to the next Main item. If a Main item defines more than one control, it may be preceded by several similar Local item tags. For example, an Input item may have severalUsage tags associated with it, one for each control.item的数据格式有两种,分别是短item和长item。

相关文档
最新文档