图解USB协议
USB协议分析 (2)
USB协议分析协议名称:USB协议分析一、引言USB(Universal Serial Bus,通用串行总线)是一种用于计算机与外部设备之间数据传输和通信的标准接口。
本协议旨在对USB协议进行分析,包括其工作原理、数据传输方式、协议层次结构等内容。
二、背景USB协议是由USB实施论坛(USB Implementers Forum)制定的,旨在提供一种统一的、高效的、易于使用的接口标准。
USB接口广泛应用于计算机、挪移设备、音频设备、打印机、摄像头等各类外部设备。
三、目的本协议的目的是分析USB协议的基本原理和工作机制,以便更好地理解USB接口的功能和特性,并为相关设备的开辟、测试和维护提供指导。
四、USB协议分析1. USB工作原理USB协议采用主从结构,主机(Host)负责控制和管理USB总线,外部设备(Device)作为从设备与主机进行通信。
USB总线上可同时连接多个外部设备,主机通过分时复用的方式与这些设备进行数据交互。
2. USB数据传输方式USB协议支持多种数据传输方式,包括控制传输、批量传输、中断传输和等时传输。
控制传输用于配置和管理设备,批量传输适合于大数据块的传输,中断传输用于实时数据传输,等时传输适合于对实时性要求非常高的数据传输。
3. USB协议层次结构USB协议采用分层结构,包括物理层、数据链路层、传输层和应用层。
物理层负责传输电气信号,数据链路层负责数据的分组和重组,传输层负责数据的可靠传输,应用层则提供设备之间的应用程序接口。
4. USB协议数据格式USB协议定义了一套统一的数据格式,包括数据包(Packet)和帧(Frame)两种基本单位。
数据包是指在USB总线上传输的最小数据单元,帧是由多个数据包组成的数据传输单位。
5. USB协议交互流程USB协议的交互流程包括设备的插拔、设备的配置和控制、数据的传输等环节。
设备的插拔触发主机对设备的识别和初始化,设备的配置和控制包括设备描述符的获取、端点的配置等操作,数据的传输则是通过各种传输方式进行的。
USB协议中文详解
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-PD协议解说
USB Power Delivery快速充电通信原理本篇文章讲的快速充电是指USB论坛所发布的USB Power Delivery快速充电规范(通过VBUS直流电平上耦合FSK信号来请求充电器调整输出电压和电流的过程),不同于本人发布的另一篇文章所讲的高通Quick Charger 2.0规范,因为高通QC2.0是利用D+和D-上的不同的直流电压来请求充电器动态调整输出电压和电流实现快速充电的过程。
USB PD的通信是将协议层的消息调制成24MHZ的FSK信号并耦合到VBUS上或者从VBUS上获得FSK信号来实现手机和充电器通信的过程。
如图所示,在USB PD通信中,是将24MHz的FSK通过cAC-Coupling 耦合电容耦合到VBUS上的直流电平上的,而为了使24MHz的FSK不对Power Supply 或者USB Host的VBUS直流电压产生影响,在回路中同时添加了zIsolation电感组成的低通滤波器过滤掉FSK信号。
USB PD的原理,以手机和充电器都支持USB PD为例讲解如下:1) USB OTG的PHY监控VBUS电压,如果有VBUS的5V电压存在并且检测到OTG ID脚是1K下拉电阻(不是OTG Host模式,OTG Host模式的ID电阻是小于1K的),就说明该电缆是支持USB PD的;2)USB OTG做正常BCS V1.2规范的充电器探测并且启动USB PD 设备策略管理器,策略管理器监控VBUS的直流电平上是否耦合了FSK信号,并且解码消息得出是CapabilitiesSource 消息,就根据USB PD规范解析该消息得出USB PD充电器所支持的所有电压和电流列表对;3) 手机根据用户的配置从CapabilitiesSource消息中选择一个电压和电流对,并将电压和电流对加在Request消息的payload上,然后策略管理器将FSK信号耦合到VBUS直流电平上;4) 充电器解码FSK信号并发出Accept消息给手机,同时调整Power Supply的直流电压和电流输出;5) 手机收到Accept消息,调整Charger IC的充电电压和电流;6) 手机在充电过程中可以动态发送Request消息来请求充电器改变输出电压和电流,从而实现快速充电的过程。
USB的通讯协议(通俗易懂).ppt
16.2 USB系统基本概念
• 16.2.2 USB设备
一个USB设备由三个功能模块组成:USB总线接口、USB逻辑 设备和功能单元。这里的USB总线接口指的是USB设备中的串行接口 引擎(SIE);USB逻辑设备被USB系统软件看作是一个端点的集合; 功能单元被客户软件看作是一个接口的集合。SIE、端点和接口都是 USB设备的组成单元。为了更好地描述USB设备的特征,USB提出了 设备架构的概念。从这个角度来看,可以认为USB设备是由一些配置、 接口和端点组成的,即一个USB设备可以含有一个或多个配置,在每 个配置中可含有一个或多个接口,在每个接口中可含有若干个端点。 其中,配置和接口是对USB设备功能的抽象,实际的数据传输由端点 来完成。在使用USB设备前,必须指明其采用的配置和接口。这个步 骤一般是在设备接入主机时设备进行自举时完成的,我们在后面会进 一步介绍。USB设备使用各种描述符来说明其设备架构,包括设备描 述符、配置描述符、接口描述符、端点描述符以及字符串描述符,它 们通常被保存在USB设备的固件程序中。
16.1 USB概述
• 主机定时对集线器的状态进行查询。当一个新设
备接入集线器时,主机会检测到集线器状态改变, 主机发出一个命令使该端口有效并对其进行设置。 位于这个端口上的设备进行响应,主机收到关于 设备的信息,主机的操作系统确定对这个设备使 用那种驱动程序,接着设备被分配一个唯一标识 的地址,范围从0~127,其中0为所有的设备在 没有分配惟一地址时使用的默认地址。主机向它 发出内部设置请求。当一个设备从总线上移走时, 主机就从其可用资源列表中将这个设备删除。
16.2 USB系统基本概念
• 16.2.1 USB主机
• (3) USB总线接口
USB总线接口包括主控制器和根集线器两部分。 根集线器为USB系统提供连接起点,用于给USB系 统提供一个或多个连接点(端口)。主控制器负责完 成主机和USB设备之间数据的实际传输,包括对传 输的数据进行串行编解码、差错控制等。该部分与 USB系统软件的接口依赖于主控制器的硬件实现, 开发人员不必掌握。
图解USB协议之四 USB枚举失败常见原因分析
图解USB协议之四USB枚举失败常见原因分析本篇基于固件代码的开发及移植过程中可能引起的USB枚举失败的原因进行分析。
数据采集设备:“HD-USB12”全速/低速USB2.0协议分析仪一、如图1所示的USB枚举失败1)Index[666 - 668]:表示主机向默认地址发送GET_DESCRIPTOR指令包。
2)Index[670 - 671]:表示设备默认地址端点不可用。
3)由上我们可以推断出固件代码对GET_DESCRIPTOR指令包无响应。
(图1)(本数据由HD-USB12 USB协议分析仪采集)二、如图2所示的USB枚举失败1)Index[697 - 699]:表示主机向默认地址发送SET_ADDRESS指令包。
2)Index[701 - 703]:表示设备完成SET_ADDRESS指令后,给主机发送一个空应答。
3)Index[705 - 710]:表示主机向地址DEC=01重复发送SET_DESCRIPTOR 指令包,但设备无任何应答,因此该事务包设备并没有接收到。
4)由上我们可以推断出固件中设置地址的代码执行失败。
(图2)(本数据由HD-USB12 USB协议分析仪采集)三、如图3所示的USB枚举失败(图3为过滤掉IN + NAK及SOF包后的数据)1)Index[694 - 696]:表示主机向默认地址发送SET_ADDRESS指令包。
但设备对该指令答,无应答。
2)由上我们可以推断出固件代码对SET_ADDRESS指令包无响应或响应没发送空应答。
(图3)(本数据由HD-USB12 USB协议分析仪采集)四、设备发送给主机的描述信息不完整,如少发送接口或端点信息等导致枚举失败。
这要求分析所有采集到的数据才能发现问题。
由于数据量较大,就不用图片说明了。
以上是根据本人开发过程中曾经碰到的问题进行的总结分析,在实际情况中枚举失败的原因很多,不可能一一列出,但只要有一台总线协议分析设备能抓取数据进行分析是很容易找到原因的。
图解USB协议之二 数据包分析
注意时序图的 Offset[0003]其传输的数据为 FF,根据 USB 采用的传输编码(NRZI)前 6 位 为 1 后插入 1 位 0,因些第 7 位的传输要传输 2 位(01),其时间也占用两位的时间。(啊啊!有 时序功能就是清楚,时序还有其它用途以后分解)
b、 CRC16 表示 DATA 的校验和
欢迎访问avatar的电子博客:/avatar/ Avatar 的邮箱:avatar_1210@
6)Handshake 包格式,详见图 6
(图 6) 二、USB 传输包组(事务)实例分析
1)IN 包组分类(懒得自己总结,直接从 HD-USB12 的数据包过滤功能截取),详见图 7
(图 18)
(图 19) 以上数据包分析是根据现有特定设备捕获得到,并不完整涉及到所有事务包组,如 IN+DATA+NAK、 OUT+DATA+NAK、SETUP+DATA+NAK 等等。
(图 4) 注:
a、 FrameNumber 表示帧号,1 毫秒发送一帧 b、 CRC5 表示 FrameNumber 的校验和 5)Data 包格式,详见图 5
(图பைடு நூலகம்5) 注:
a、 DATA 表示要传输的数据,全速 USB 的最大长度为 1023Bytes,高速 USB 的最大长度为 1024Bytes
本篇分析数据包,仍然使用“HD-USB12”USB 协议分析仪采集分析数据。分两部分内容:首先和 童鞋们一起简单复习一下 USB 协议中的相关知识,然后用“HD-USB12”USB 协议分析仪采集几个实例 进行分析。
图解USB协议之三 USB标准描述符
欢迎访问avatar的电子博客:EET站点:/BLOG_zhou36_301.HTM EDN站点:/avatar/
1 协议 协议码:bInterfaceClass 和
bInterfaceSubClass 域的值而定.如果一个
接口支持设备类相关的请求此域的值指出了设备
类说明中所定义的协议.
8 iInterface
1 索引 描述此接口的字串描述符的索引值。
4、标准端点描述符
偏移量
域
0
bLength
1
bDescriptorType
欢迎访问avatar的电子博客:EET站点:/BLOG_zhou36_301.HTM EDN站点:/avatar/
Avatar 的邮箱:avatar_1210@
图解 USB 协议之三 USB 标准描述符
下面对 USB 标准描述符进行说明。
一、USB 标准描述符
1、标准设备描述符
偏移量
域
0 bLength
大小 1
值 数字
描述 描述符的大小=12H
1 bDecriptorType 2 bcdUSB
4 bDeviceClass
1 常量 设备描述符类型=01H
2 BCD 码 此设备与描述符兼容的 USB 设备说明版本号(BCD 码)
2 … 2
值 N+2 常量
数字 … 数字
描述 描述符的大小 字串描述符类型=03H
语言标识(LANGID)码 0
… 语言标识(LANGID)码 X
6、UNICODE 字串描述符
欢迎访问avatar的电子博客:EET站点:/BLOG_zhou36_301.HTM EDN站点:/avatar/
USB协议资料ppt课件
2024/1/26
26
B通信协议
• 3.1.3数据字段
同步字段(SYNC) PID字段 数据字段 CRC字段 包结尾字段(EOP)
– 帧序列号。当USB令牌包的PID为SOF时,其数 据字段必须为11位的帧序列号。帧序列号由主 机产生,且每个数据帧自动加一,最大数值为 0x7FF。当帧序列号达到最大数时将自动从0开 始循环。
14
B物理电气规范
• USB信号
– 差分传输
有利于降低噪声干扰
2024/1/26
15
B物理电气规范
信号电平
FS/LS电平
2024/1/26
16
USB 电气规范
数据信号发送
USB数据包采用差分信号传输; 低速/全速数据信号发送
2024/1/26
The start of a packet (SOP) is signaled by the originating port by driving the D+ and D- lines from the Idle state to the opposite logic level (K state). 8bit(L/F)/32bit(FULL) SYNC signal for a packet start; The SE0 state is used to signal an end-of-packet (EOP). EOP=2bit SE0+1 bit J state; then ,bus recover to Idle state;
17
USB 电气规范
挂起
所有的设备都必须能支持挂起状态,并可从任一电平状态进入挂起 态。当设备发现它们的上行总线上的空闲态持续时间超3.0ms时, 它们便进入挂起态。当设备的所有端口上的总线不活动时间不超过 10ms后,设备必须被真正的挂起,此时它仅从总线上获得挂起电流。 如果总线缺少其他的通信流量时,SOF令牌将在每(微)帧中出现 一次,以防止全速/高速设备被挂起。当任一低速设备缺乏通信流量 时,在SOF令牌出现的每一帧中至少有一个低速设备处于活动态, 以避免它们不被挂起。
USB接口类型协议类型
一、USB传输协议USB是通用串行总线(英语:Universal Serial Bus)的缩写,是一种串口总线标准。
USB这种输入输出接口被广泛地应用于个人电脑和移动设备等产品。
USB-IF(全称USB Implementers Forum)是位于美国的USB标准化组织,由英特尔、微软、惠普、NEC、LSI、意法半导体等发起的非盈利组织。
自1996年USB-IF(USB Implementers Forum)组织发布最初标准以来,USB标准经历了多个版本,分别是USB 1.0、USB 1.1、USB 2.0、USB 3.0、USB 3.1、USB 3.2,最新一代是USB4。
二、USB协议发展历史1996年,USB1.0发布;2000年4月,USB2.0发布;2008年1月,USB3.0发布;2013年7月,USB3.1发布;2015年,USB3.0更名为USB 3.1 Gen1, USB3.1更名为USB 3.1 Gen2;2017年9月,USB3.2发布;2019年2月,USB3.2 Gen2×2发布,USB3.0、USB3.1又分别改名为USB3.2 Gen1、USB3.2 Gen2×1;2019 年8月,发布USB4.0。
最终现在的命名是这样的:三、USB接口参数不同的协议标准支持的最大传输速率、最大电压和电流也是不一样的,如下:四、USB接口类型Type AType-A和Type-B根据支持的USB标准不同,又可以分为USB 2.0和USB 3.0标准USB接口。
根据接口的颜色,我们很容易区分该接口是支持USB 2.0还是支持USB 3.0的。
Type-A型接口也是我们日常生活中最常见的USB接口,广泛应用于鼠标、键盘、U盘等设备上。
(USB2.0)白色(USB3.0)蓝色●TypeBType-B型常用于打印机等设备上。
(USB2.0)白色(USB3.0)蓝色●Mini-AMini USB接口,是一种小型的USB接口,加入了ID针脚(用于区分设备是主机还是外设),以支持OTG(On The Go,该功能允许在没有主机的情况下,实现设备间的数据传送)功能。
usb的协议
usb的协议USB(Universal Serial Bus)是一种常见、通用的计算机外部设备连接接口。
它为我们提供了一种方便、快速的方式来连接和传输数据。
但要实现设备间的通信,需要有一种协议来规定数据传输的方式、格式以及控制信号的传递。
USB协议是一种封装在物理层上的协议,它定义了电缆连接和信号传输的规范。
USB的传输速率通常可达到480Mbps (USB 2.0)或5Gbps(USB 3.0),并且支持热插拔功能,即使在计算机运行时也可以连接或断开设备。
USB协议由若干个不同的协议层组成,包括物理层、数据链路层、传输层、应用层等。
在物理层中,USB采用了高速差动信号传输,利用差分对抗传输干扰。
数据链路层负责将数据分割成数据包,并控制数据的传输。
传输层实现了复杂的数据传输,包括同步和异步传输、流水线传输等。
应用层则定义了设备和主机之间的通信规范,包括设备识别、配置和控制等。
USB协议还定义了一些常用的设备类别,如存储设备、打印机、音频设备、摄像头等。
每个设备类别都有自己的协议规范,以确保设备可以在不同的操作系统和平台上正常工作。
此外,USB还支持USB电源规范,可以通过USB线缆为外部设备供电,方便实用。
在USB传输数据时,通常采用主机-设备的架构。
主机负责控制和管理设备,设备负责响应主机的指令并传输数据。
USB协议规定了各种数据传输的方式,包括控制传输、批量传输、中断传输和等时传输等。
控制传输用于设备的初始化和配置,批量传输用于大量数据传输,中断传输用于数据传输的实时性要求较高的场景,等时传输用于音频和视频等对实时性要求非常高的场景。
USB协议还定义了一种标准协议,并且允许设备厂商定义自己的私有协议。
标准协议保证了设备的互操作性和兼容性,而私有协议则允许设备厂商根据自己的需求进行定制,提供更多的特殊功能。
这种灵活性是USB协议的一大优势。
总的来说,USB协议是一种通用、方便的设备连接和数据传输协议,它极大地简化了设备的使用和管理。
USB协议架构及驱动架构
USB协议架构及驱动架构一、引言USB(Universal Serial Bus,通用串行总线)是一种用于连接计算机与外部设备的标准接口。
USB协议架构是指USB接口的通信规范和数据传输方式,而USB驱动架构是指操作系统中USB设备的驱动程序模型。
本协议旨在详细介绍USB协议架构及驱动架构。
二、USB协议架构1. USB层次结构USB协议架构包括物理层、传输层、协议层和应用层四个层次。
物理层负责传输电气信号,传输层负责数据的可靠传输,协议层负责数据的管理和控制,应用层负责具体的设备功能。
2. USB通信模型USB通信模型采用主从式结构,主机负责控制和管理USB总线,从设备负责响应主机的控制命令和提供服务。
3. USB传输方式USB协议定义了四种传输方式:控制传输、批量传输、中断传输和等时传输。
控制传输用于命令和状态的传输,批量传输用于大量数据的传输,中断传输用于低延迟的数据传输,等时传输用于实时数据的传输。
4. USB协议规范USB协议规范定义了USB设备的插拔、电源管理、数据传输、错误处理等方面的规范。
USB协议规范分为1.x、2.0、3.0等版本,每个版本都有自己的特性和性能。
三、USB驱动架构1. USB驱动模型USB驱动模型是操作系统中管理USB设备的框架。
常见的USB驱动模型包括USB Host Controller Driver、USB Device Driver和USB Class Driver等。
2. USB Host Controller DriverUSB Host Controller Driver负责管理主机控制器与USB总线之间的通信。
它提供了与主机控制器交互的接口,并负责USB设备的枚举、配置和控制。
3. USB Device DriverUSB Device Driver负责管理USB设备与操作系统之间的通信。
它提供了与USB设备交互的接口,并负责解析USB协议、处理数据传输和错误处理等。
USB-HID协议中文版
第8章USB接口HID设备HID(Human Interface Device,人机接口设备)是USB设备中常用的设备类型,是直接与人交互的USB 设备,例如键盘、鼠标与游戏杆等。
在USB设备中,HID设备的成本较低。
另外,HID设备并不一定要有人机交互功能,只要符合HID类别规范的设备都是HID设备。
Wndows操作系统最先支持的HID设备。
在windows 98以及后来的版本中内置有HID设备的驱动程序,应用程序可以直接使用这些驱动程序来与设备通信。
在设计一个USB接口的计算机外部设备时,如果HID类型的设备可以满足需要,可以将其设计为HID类型设备,这样可以省去比较复杂的USB驱动程序的编写,直接利用Windows操作系统对标准的HID类型USB 设备的支持。
8.1HID设备简介8.1.1HID设备的特点交换的数据储存在称为报表(Report)的结构内,设备的固件必须支持HlD报表的格式。
主机通过控制和中断传输中的传送和请求报表来传送和接收数据。
报表的格式非常灵活。
每一笔事务可以携带小量或中量的数据。
低速设备每一笔事务最大是8B,全速设备每一笔事务最大是64B,高速设备每一笔事务最大是1024B。
一个报表可以使用多笔事务。
设备可以在未预期的时间传送信息给主机,例如键盘的按键或是鼠标的移动。
所以主机会定时轮询设备,以取得最新的数据。
HID设备的最大传输速度有限制。
主机可以保证低速的中断端点每10ms内最多1笔事务,每一秒最多是800B。
保证全速端点每lms一笔事务,每一秒最多是64000B。
保证高速端点每125 us三笔事务,每一秒最多是24.576MB。
HID设备没有保证的传输速率。
如果设备是设置在10ms的时距,事务之间的时间可能等于或小于10ms。
除非设备是设置在全速时在每个帧传输数据,或是在高速时在每个微帧传输数据。
这是最快的轮询速率,所以端点可以保证有正确的带宽可供使用。
HID设备除了传送数据给主机外,它也会从主机接收数据。
USB协议架构及驱动架构
USB协议架构及驱动架构一、引言USB(Universal Serial Bus,通用串行总线)是一种用于连接计算机及外部设备的通信协议和接口标准。
USB协议架构及驱动架构是为了实现计算机与外部设备之间的数据传输和通信而设计的。
本协议旨在详细介绍USB协议的架构以及驱动的工作原理和结构。
二、USB协议架构USB协议架构包括物理层、数据链路层、传输层和应用层。
1. 物理层USB物理层负责定义USB的硬件接口和电气特性。
它规定了USB的连接器类型、电缆规格、信号传输方式等。
USB物理层还包括供电规范,用于为外部设备提供电源。
2. 数据链路层USB数据链路层负责管理数据的传输和流控。
它将数据分割成数据包,并加上头部和尾部信息。
数据链路层还负责错误检测和纠正,确保数据的可靠传输。
3. 传输层USB传输层定义了数据的传输方式和协议。
它包括了四种传输类型:控制传输、批量传输、中断传输和等时传输。
控制传输用于设备的配置和控制,批量传输用于大容量数据的传输,中断传输用于实时的事件通知,等时传输用于音视频等对延迟要求较高的应用。
4. 应用层USB应用层定义了设备的功能和通信协议。
它规定了设备的描述信息、功能集、命令和响应等。
USB应用层还包括了设备类别的定义,如存储设备类、音频设备类、打印机设备类等。
三、驱动架构USB驱动架构包括主机控制器驱动和设备驱动。
1. 主机控制器驱动主机控制器驱动是在操作系统内核中实现的,负责管理和控制USB主机控制器的工作。
它与物理层和数据链路层进行交互,完成USB设备的连接和通信。
主机控制器驱动还负责处理设备的插拔事件、配置设备、传输数据等。
2. 设备驱动设备驱动是在操作系统内核中实现的,负责管理和控制USB外部设备的工作。
它与主机控制器驱动进行通信,完成设备的初始化、数据传输、命令执行等。
设备驱动还负责处理设备的中断、事件通知等。
四、USB协议的工作流程USB协议的工作流程包括设备的连接和初始化、数据传输和设备的断开。
通俗易懂的USB协议详解(转载)
Usb详解USB作为一种串行接口,应用日益广泛。
如同每个工程设计人员必须掌握I2C,RS232这些接口一样,我们也必须掌握usb.但是usb的接口协议实在有点费解,linux uhci驱动作者之一Alan Stern曾经就说过“The USB documentationis downright evil. Most of it is just crap, written by a committee. You're better off ignoringmost of it ”。
本文将从整体上介绍usb协议,包括usb host ,usb hub,usb function。
希望能给读者一个总体上的了解。
也因此,文章将分成相应的三部分讲解。
一。
usb function1。
初识b是一种串行接口协议,它靠d+,d-两条数据线构成的差分线来进行数据传输,这让我们非常感兴趣它到底和我们通常熟悉两线rs232/485有何区别。
了解这种区别有助于我们对usb作一个深入的了解。
那么让我们回想一下到底一个两线rs232的数据是如何传送的,如图一:在这里我们的重点在于,我们发现要在串行口传送数据一个最体码的要求恐怕就是:要知道数据传输何时开始,何时结束。
即如何delimit.那么rs232怎么做的。
显然,在idle(空闲)时,即无数据传送时,数据线处于高电平,等到有数据开始传送,发送方首先拉低数据线(start),表示数据传输开始,接受端也因为这个“start”信号开始准备接受即将到来的数据,类似一次握手,随后,在两者之间的数据传送开始,结束后主方再次拉高数据线,表示结束传输,自此两者重新进入Idle状态。
等待下一轮传送开始。
了解了rs232,那么我们自然想到usb如何做到这个呢,既然是串行位流传输,也理所当然的解决这个问题。
没错,Usb协议必然要解决这个问题,让我们作一个类似rs232的比较吧!类似于rs232,usb的传输桢如图二:(这里我们暂时忽略这个传输所代表的意义)为了说明问题,我们对一些问题简化,我们定义这样几个状态:假设D+,D-分别表示usb信号线的电平信号。
通俗易懂的USB协议详解
通俗易懂的USB协议详解USB(Universal Serial Bus)是一种用于计算机外部设备的通信接口标准。
它是一种快速、易用和多功能的连接标准,广泛应用于各种设备,如键盘、鼠标、打印机、存储设备等。
本文将详细解释USB协议的工作原理和通信过程。
USB的工作原理:USB协议使用主从架构,其中主机(Host)是发起数据传输的设备,而从机(Peripheral)是被动等待命令的设备。
通信过程包括主机发送命令和从机返回响应。
USB分为各个版本,每个版本都有自己的规范和特性。
USB1.0和1.1的数据传输速率为1.5Mbps和12Mbps,USB2.0提高到了480Mbps,USB3.0达到了5Gbps,USB3.1则有10Gbps的速率。
USB Type-C是一种新的接口规范,支持更高的传输速率和更多的功能。
USB传输类型:USB传输类型主要有三种:控制传输(Control Transfer)、批量传输(Bulk Transfer)和中断传输(Interrupt Transfer)。
控制传输是主机和从机之间交换控制命令的过程,用于配置从机和获取状态信息。
这种传输类型速度较慢,但可靠性高。
常见的示例是设备初始化和配置。
批量传输用于大容量数据的传输,速度较快,但可靠性较低。
常用于大容量存储设备和打印机等。
中断传输用于低延迟和实时数据传输。
它在通信过程中不需要确定发送/接受数据的时间间隔,但传输速率较低。
示例包括鼠标和键盘输入。
USB通信过程:握手阶段是主机向从机发送命令,并等待从机的响应。
主机发送一个命令包含特定的命名和数据,从机接收并处理命令,然后发送响应给主机。
握手阶段用于确保主机和从机都能够正常通信。
命令阶段是主机和从机之间的数据传输,用于配置设备和请求数据。
命令由特定的标识符和参数组成,从机根据命令执行相应的操作,并返回主机所需的数据。
数据传输阶段是指在命令阶段之后,如果需要传输大量数据时的过程。
通俗易懂的usb协议详解
通俗易懂的usb协议详解通俗易懂的USB协议详解USB(Universal Serial Bus)是一种通用的串行总线,它是连接计算机与外部设备的一种标准接口。
它的出现简化了计算机与外设之间的连接方式,成为广泛使用的接口之一。
那么,USB协议是什么,它是如何工作的呢?USB协议是一种规范,用于控制计算机与外部设备之间的通信。
它包含了多种协议,每种协议都有其特定的功能。
USB协议分为四个层次:物理层、数据链路层、传输层和应用层。
这四个层次协同工作,来完成计算机与外设之间的数据传输。
物理层是指USB接口的物理连接。
USB接口的类型分为A、B、C、Micro-USB、Mini-USB等多种,每种接口都有其特定的应用场景。
例如,A接口用于连接计算机、鼠标、键盘等设备,B接口用于连接打印机、扫描仪等设备,而C接口逐渐成为了新一代的通用接口。
数据链路层是指USB接口的数据传输方式。
USB协议采用的是异步传输方式,即数据的传输不需要时钟信号的同步控制。
在数据传输前,数据被分为若干个数据包,每个数据包包含有标识符和数据信息。
数据包的标识符用于标记数据包的类型和传输方向,数据信息则是实际的数据内容。
传输层是指USB协议中的传输协议,包括了控制传输协议(Control Transfer Protocol)、批量传输协议(Bulk Transfer Protocol)、中断传输协议(Interrupt Transfer Protocol)和等时传输协议(Isochronous Transfer Protocol)等。
每种传输协议都有其适用的场景和特点。
例如,控制传输协议用于发送设备控制命令,批量传输协议适用于大容量数据的传输,中断传输协议适用于对数据传输时延要求较高的场景,等时传输协议适用于对数据传输实时性要求较高的场景。
应用层是指USB接口与应用程序之间的通信。
USB协议支持各种操作系统和应用程序,应用程序通过USB接口与外部设备进行通信。
USB-HID协议中文版
第8章USB接口HID设备HID(Human Interface Device,人机接口设备)是USB设备中常用的设备类型,是直接与人交互的USB设备,例如键盘、鼠标与游戏杆等。
在USB设备中,HID设备的成本较低。
另外,HID设备并不一定要有人机交互功能,只要符合HID类别规范的设备都是HID 设备。
Wndows操作系统最先支持的HID设备。
在windows 98以及后来的版本中内置有 HID设备的驱动程序,应用程序可以直接使用这些驱动程序来与设备通信。
在设计一个USB接口的计算机外部设备时,如果HID类型的设备可以满足需要,可以将其设计为HID类型设备,这样可以省去比较复杂的USB驱动程序的编写,直接利用Windows操作系统对标准的HID类型USB设备的支持。
8.1HID设备简介8.1.1HID设备的特点交换的数据储存在称为报表(Report)的结构内,设备的固件必须支持HlD报表的格式。
主机通过控制和中断传输中的传送和请求报表来传送和接收数据。
报表的格式非常灵活。
每一笔事务可以携带小量或中量的数据。
低速设备每一笔事务最大是8B,全速设备每一笔事务最大是64B,高速设备每一笔事务最大是1024B。
一个报表可以使用多笔事务。
设备可以在未预期的时间传送信息给主机,例如键盘的按键或是鼠标的移动。
所以主机会定时轮询设备,以取得最新的数据。
HID设备的最大传输速度有限制。
主机可以保证低速的中断端点每10ms内最多1笔事务,每一秒最多是800B。
保证全速端点每lms一笔事务,每一秒最多是64000B。
保证高速端点每125 us三笔事务,每一秒最多是。
HID设备没有保证的传输速率。
如果设备是设置在10ms的时距,事务之间的时间可能等于或小于10ms。
除非设备是设置在全速时在每个帧传输数据,或是在高速时在每个微帧传输数据。
这是最快的轮询速率,所以端点可以保证有正确的带宽可供使用。
HID设备除了传送数据给主机外,它也会从主机接收数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a、 FrameNumber 表示帧号,1 毫秒发送一帧 b、 CRC5 表示 FrameNumber 的校验和 5)Data 包格式,详见图 5
(图 5) 注:
a、 DATA 表示要传输的数据,全速 USB 的最大长度为 1023Bytes,高速 USB 的最大长度为 1024Bytes
(图 9)
(图 10)
(图 11) 3)OUT 包组分类,详见图 12(直接从 HD-USB12 的数据包过滤功能截取)
(图 12) 4)OUT 包组分析(通过 HD-USB12 监控软件仅过滤出 OUT 包组数据),详见图 13
欢迎访问avatar的电子博客:/avatar/ Avatar 的邮箱:avatar_1210@
(图二) 3)Index[15 - 17]:表示设备向主机发送设备描述数据 Index[16] 4)Index[18 - 19]:表示主机完成 GET_DESCRIPTOR 指令后,给设备发送一个 空应答 二、 再次复位总线及向设备发送 SET_ADDRESS 指令包,设置设备地址。如
(图三)所示:
欢迎访问avatar的电子博客:/avatar/ Avatar 的邮箱:avatar_1210@
图解 USB 协议之一 枚举过程
关键字:HD-USB12 协议分析仪 枚举 前不久花了 2300 大银败了个 HD-USB12 协议分析仪(肉痛…)。不过还蛮好
本篇分析数据包,仍然使用“HD-USB12”USB 协议分析仪采集分析数据。分两部分内容:首先和 童鞋们一起简单复习一下 USB 协议中的相关知识,然后用“HD-USB12”USB 协议分析仪采集几个实例 进行分析。
一、协议知识 1)PID 格式,详见图 1
注: a、 上图是从低位到高位 b、 高四位是低四位取反 c、 PID 自校验
d、Index[701]的内容,详见图 9 e、Index[702]的内容,详见图 10 f、Index[702]的数据发送时序,详见图 11(只截取了部分,时序做的很漂亮,看着也很清晰),
注意时序图的 Offset[0003]其传输的数据为 FF,根据 USB 采用的传输编码(NRZI)前 6 位 为 1 后插入 1 位 0,因些第 7 位的传输要传输 2 位(01),其时间也占用两位的时间。(啊啊!有 时序功能就是清楚,时序还有其它用途以后分解)
1)Index[33 - 35]:表示主机向地址 01 发送 GET_DESCRIPTOR 指令包,详细信 息见(图六)
(图六) 2)Index[41 - 43]:表示设备向主机发送设备描述数据 Index[42] 3)Index[45 - 47]:表示设备向主机发送设备描述数据 Index[46] 4)Index[48 - 50]:表示主机完成 GET_DESCRIPTOR 指令后,给设备发送一个 空应答 四、 向第二步设定的设备地址发送 GET_DESCRIPTOR 指令包,请求配置描
(图 18)
(图 19) 以上数据包分析是根据现有特定设备捕获得到,并不完整涉及到所有事务包组,如 IN+DATA+NAK、 OUT+DATA+NAK、SETUP+DATA+NAK 等等。
欢迎访问avatar的电子博客:EET站点:/BLOG_zhou36_301.HTM EDN站点:/avatar/
(图三) 1)Index[22 - 23]:表示再次总线复位,该复位自动完成,不是手工插拔 USB 完 成
欢迎访问avatar的电子博客:/avatar/ Avatar 的邮箱:avatar_1210@
2)Index[25 - 27]:表示主机向默认地址发送 SET_ADDRESS 指令包,详细信息 如(图四)所示:
(图 17) a、Index[23 - 25]:表示主机向设备地址 0(DEV = 00)端点 0(EP = 00, 最高位表示传输方向)
发送 SETUP 指令后,发送数据 Index[24],设备收到数据后回应 ACK; b、Index[23]的内容,详见图 18 c、Index[24]的内容,详见图 19
欢迎访问avatar的电子博客:/avatar/ Avatar 的邮箱:avatar_1210@
图解 USB 协议之二 数据包分析
感谢朋友们对我发的上一个帖子《图解 USB 协议之一 枚举过程》的支持,虽然手头的项目比较忙, 周末还是抽时间写了这个专题的第二篇,不能让大家失望啊,哈!
还是先复习一下 USB 协议的相关内容。USB 通迅配置是通过描述符完成的,
下面对 USB 标准描述符进行说明。
一、USB 标准描述符
1、标准设备描述符
偏移量
域
0 bLength
大小 1
值 数字
描述 描述符的大小=12H
1 bDecriptorType 2 bcdUSB
4 bDeviceClass
(图十) 2)Index[143 - 145]:表示设备完成 SET_CONFIGURATION 指令后,给主机发 送一个空应答
以上的 USB 枚举过程是根据现有特定设备捕获得到,并不完整涉及到 USB 协议的所有指令包,如 GET_STATUS 指令包、CLEAR_FEATURE 指令包、 SET_FEATURE 指令包、SET_DESCRIPTOR 指令包、GET_CONFIGURATION 指令包、GET_INTERFACE 指令包、SET_INTERFACE 指令包、SYNCH_FRAME 指令包等。
(图 7) 2)IN 包组分析(通过 HD-USB12 监控软件仅过滤出 IN 包组数据),详见图 8
(图 8) a、Index[691]:表示主机向设备发送 IN 指令取数据,设备回应没数据; b、Index[692 - 693]:表示主机向设备地址 0(DEV = 00)端点 0(EP = 80, 最高位表示传输
b、 CRC16 表示 DATA 的校验和
欢迎访问avatar的电子博客:/avatar/ Avatar 的邮箱:avatar_1210@
6)Handshake 包格式,详见图 6
(图 6) 二、USB 传输包组(事务)实例分析
1)IN 包组分类(懒得自己总结,直接从 HD-USB12 的数据包过滤功能截取),详见图 7
述。如(图七)所示:
(图七)
欢迎访问avatar的电子博客:/avatar/ Avatar 的邮箱:avatar_1210@
1)Index[52 - 54]:表示主机向地址 01 发送 GET_DESCRIPTOR 指令包,详细信 息见(图八)
六、 向第二步设定的设备地址发送 SET_CONFIGURATION 指令包,设置配 置描述。如(图九)所示:
欢迎访问avatar的电子博客:/avatar/ Avatar 的邮箱:avatar_1210@
(图九) 1)Index[139 - 141]:表示主机向地址 01 发送 SET_CONFIGURATION 指令包, 详细信息见(图十)
Avatar 的邮箱:avatar_1210@
图解 USB 协议之三 USB 标准描述符
最近忙于公司的项目和本人的驾驶证考试,拖延了这个系列第三篇的完成, 先向各位支持我的 DX 表示一下歉意。不过好在驾驶证的蝴蝶桩考试顺利通过,
自己先庆贺一下 ,嘿嘿。
最近做一个手持机的项目,第一次真正感受到了手头这个小设备的功力。事
(图四) 3)Index[29 - 31]:表示设备完成 SET_ADDRESS 指令后,给主机发送一个空应 答 三、 向第二步设定的设备地址发送 GET_DESCRIPTOR 指令包,请求设备描
述。如(图五)所示:
(图五)
欢迎访问avatar的电子博客:/avatar/ Avatar 的邮箱:avatar_1210@
(图 14) (图 15) 5)SETUP 包组分类,详见图 16(直接从 HD-USB12 的数据包过滤功能截取)
(图 16) 6)SETUP 包组分析(通过 HD-USB12 监控软件仅过滤出 SETUP 包组数据),详见图 17
欢迎访问avatar的电子博客:/avatar/ Avatar 的邮箱:avatar_1210@
用,以后做 USB 固件开发就方便多了。 看到 21ic坛子里arthur0561大虾发了一系列USB协议入门总结的文章,向他
(OR她?)表示一下敬意。我也准备用手头这台协议分析仪以实例和图解的方 式重复叙述一下,希望对初学USB的童鞋有些帮助。 废话少说,首先图解一下 USB 枚举过程。 一、 总线复位及向默认地址 0 发送 GET_DESCRIPTOR 指令包,请求设备描
2)PID 分类,详见图 2
(图 1)
(图 2)
欢迎访问avatar的电子博客:/avatar/ Avatar 的邮箱:avatar_1210@
3)Token 包格式(不包括 SOF),详见图 3
(图 3) 注:
a、 ADDR 表示设备地址 b、 ENDP 表示端点号 c、 CRC5 表示设备地址及端点号的校验和 4)SOF 包格式,详见图 4
情是这样的:要将 n 年前写的基于 51 的固件代码移植到 AVR,问题出现了….,
枚举不成功!立刻想到用协议分析仪看看……(此处省略 168 字),结果当然是
一目了然,几分钟轻松搞定!关于这次的经历,回头专门写一个帖子吧,先卖个
关子,哈。
闲话少说,本篇图解 USB 标准描述符。
数据采集设备:HD-USB12 USB 协议分析仪。
(图八) 2)Index[57 - 59]:表示设备向主机发送配置描述数据 Index[58] 3)Index[60 - 62]:表示主机完成 GET_DESCRIPTOR 指令后,给设备发送一个 空应答
五、 重复向第二步设定的设备地址发送 GET_DESCRIPTOR 指令包,取完所 有设备描述及配置描述;