USB通信简介
- 格式:ppt
- 大小:8.26 MB
- 文档页数:38


USB协议详解第30讲(USB枚举过程详解及抓包分析)
USB(Universal Serial Bus)是一种用于连接计算机和外部设备的通信协议和接口标准。USB枚举过程是指在设备连接到计算机上时,计算机通过与设备之间的通信来识别设备并建立通信。
USB枚举过程分为设备插入、USB设备识别和USB配置三个阶段:
1.设备插入:当设备被插入计算机的USB接口时,计算机会感知到设备的插入,并触发枚举过程。
2. USB设备识别:计算机会发送一个特殊的reset信号给设备,以重置设备的状态。然后计算机会发送一个设备描述符请求给设备,以获取设备的基本信息,如设备的供应商、产品ID等。设备会回复一个设备描述符给计算机。
B配置:计算机会发送配置描述符请求给设备,以获取设备的详细配置信息。设备会回复一个或多个配置描述符,以及相关的接口和端点信息。然后计算机会选择一个合适的配置,并将其发送给设备。设备收到配置信息后,会根据配置信息进行相应的初始化操作。之后计算机会发送一些设备请求给设备,如获取设备状态、设置设备参数等。
在USB枚举过程中,计算机和设备之间的通信是基于USB传输层协议进行的。USB传输层协议定义了几种不同类型的传输方式,如控制传输、批量传输、中断传输和等时传输。在USB枚举过程中,主要使用控制传输。
USB枚举过程的抓包分析可以通过使用USB抓包工具,如Wireshark来进行。通过抓包可以查看计算机和设备之间的通信过程,以及传输的数据包内容。抓包可以帮助我们分析USB设备的插入和识别过程,以及在配置阶段的通信和数据传输。 抓包分析可以实现以下目的:
1.查看设备的设备描述符和配置描述符,了解设备的供应商信息、产品信息和接口信息等。
2.分析计算机和设备之间的控制传输,了解计算机和设备之间的通信流程。
3.分析数据传输,查看数据包内容,了解数据的格式和结构。
4.分析设备和计算机之间的异常情况,如错误响应、超时等,帮助排除故障。
未知驱动探索,专注成就专业
1
单片机与pc机通信
单片机与PC机通信可以通过多种方式实现,常见的方法包括串口通信、USB通信和以太网通信。
1. 串口通信:串口是最常用的单片机与PC机通信方式之一。单片机通常具有UART模块,可以通过串口与PC机进行通信。通过串口,可以实现数据的发送和接收。单片机通过串口发送数据时,需要将数据转换为串口通信所需的格式(如ASCII码),PC机在接收到数据后,也需要进行相应的解析和处理。
2. USB通信:USB是一种更快的通信方式,可以直接连接单片机和PC机,通过USB接口实现数据的传输。在这种通信方式中,单片机需要支持USB接口,并通过USB协议与PC机进行通信。一般情况下,需要在单片机上实现USB设备的功能,以及相应的USB驱动程序。
未知驱动探索,专注成就专业
2
3. 以太网通信:以太网是一种常用的网络通信方式,可以通过以太网接口实现单片机与PC机之间的通信。单片机需要具备以太网接口,并通过以太网协议进行通信。在这种通信方式中,单片机可以作为TCP/IP客户端或服务器来连接PC机和网络,实现数据的传输。
无论使用何种通信方式,都需要在单片机和PC机上实现相应的软件和驱动程序,进行数据的传输和处理。具体的实现方法和细节,可以参考相关的开发文档和资料。
USB 事务处理就是主机与设备之间数据传输的基本单位 ,由一系列具有特定格式的信息包组 成。因此,要了解完整的USB通信协议,必须从USB的信息传输单元包及其数据域谈起。通 过由下而上 ,从简单至复杂的通信协议单位组成各种复杂的通信协议 ,进而构建出完整的通 信协议。
16 、 4、1 包 包(Packet)就是USB系统中信息传输的基本单元 ,所有数据都就是经过打包后在总线上传输 的。首先了解一下包的组成。
USB包由五部分组成,即同步(SYNC)字段、包标识符(PID)字段、数据字段、循环冗余校验 (CRC)字段与包结尾(EOP)字段,包的基本格式如下:
同步字段(SYNC) PID字段数据字段CRC字段包结尾字段(EOP)
在USB的数据传输中,所有的传输包都起始于 SYNC,接着就是PID,后面就是包中所包含的 数据信息 ,接下来就是用来检测包中数据错误的循环冗余校验信息 ,最后以包结尾作为结束
标志。下面我们将一一介绍每个字段。
1. 同步 (SYNC) 字段
SYNC字段由8位组成,作为每个数据信息包的前导。顾名思义,它就是用来产生同步作用的, 目的就是使USB设备与总线的包传输率同步,它的数值固定为00000001。
2. 包标识符 (PID) 字段
PID字段就是紧随在 SYNC字段后面,用来表示数据信息包的类型。在 USB协议中,根据PID
的不同 ,USB 包有着不同的类型 ,分别表示具有特定的意义。如下所示 :
PID0 PID1 PID2 PID3
包标识符长度为一个字节 (8 个数据位 ), 由 4 个位的包类型字段与 4 个位的校验字段构成。
PID就是USB包类型的唯一标志,USB主机与USB设备在接收到包后,必须首先对包标识符 解码得到包的类型 ,并判断其意义从而做出下一个反应。包标识符中的校验字段就是通过对 类型字段的每个位求反码产生的 ,它就是用来对包类型字段进行错误检测用的 ,旨在保证对 包的标识符译码的可靠性 ,如果 4 个检验位不就是它们各自的类型位的反码 ,则说明标识符 中的信息有错误。
第 1 页 串口通信协议
什么是串口
串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal SerialBus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:
a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常第 2 页 电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。