图解USB协议

合集下载

USB协议分析 (2)

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协议中文详解
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-PD协议解说

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

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协议之四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协议之二 数据包分析

图解USB协议之二 数据包分析
d、Index[701]的内容,详见图 9 e、Index[702]的内容,详见图 10 f、Index[702]的数据发送时序,详见图 11(只截取了部分,时序做的很漂亮,看着也很清晰),
注意时序图的 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标准描述符

图解USB协议之三 USB标准描述符
(图 4)(本数据由 HD-USB12 USB 协议分析仪采集) 3、随后为配置描述符、接口描述符及端点描述符见图 5
欢迎访问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课件

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令牌出现的每一帧中至少有一个低速设备处于活动态, 以避免它们不被挂起。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(图 4) 注:
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 指令包,取完所 有设备描述及配置描述;
相关文档
最新文档